pzhentrd man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

PZHENTRD(l)			       )			   PZHENTRD(l)

NAME
SYNOPSIS
       SUBROUTINE PZHENTRD( UPLO, N, A, IA, JA, DESCA, D, E, TAU, WORK, LWORK,
			    RWORK, LRWORK, INFO )

	   CHARACTER	    UPLO

	   INTEGER	    IA, INFO, JA, LRWORK, LWORK, N

	   INTEGER	    DESCA( * )

	   DOUBLE	    PRECISION D( * ), E( * ), RWORK( * )

	   COMPLEX*16	    A( * ), TAU( * ), WORK( * )

	   INTEGER	    BLOCK_CYCLIC_2D, DLEN_,  DTYPE_,  CTXT_,  M_,  N_,
			    MB_, NB_, RSRC_, CSRC_, LLD_

	   PARAMETER	    (  BLOCK_CYCLIC_2D	=  1,  DLEN_  = 9, DTYPE_ = 1,
			    CTXT_ = 2, M_ = 3, N_ = 4, MB_ = 5, NB_ = 6, RSRC_
			    = 7, CSRC_ = 8, LLD_ = 9 )

	   DOUBLE	    PRECISION ONE

	   PARAMETER	    ( ONE = 1.0D+0 )

	   COMPLEX*16	    CONE

	   PARAMETER	    ( CONE = ( 1.0D+0, 0.0D+0 ) )

	   LOGICAL	    LQUERY, UPPER

	   CHARACTER	    COLCTOP, ROWCTOP

	   INTEGER	    ANB, CTXTB, I, IACOL, IAROW, ICOFFA, ICTXT, IINFO,
			    INDB, INDRD, INDRE, INDTAU, INDW, IPW, IROFFA,  J,
			    JB,	 JX,  K,  KK,  LLRWORK, LLWORK, LRWMIN, LWMIN,
			    MINSZ,  MYCOL,  MYCOLB,  MYROW,  MYROWB,  NB,  NP,
			    NPCOL,  NPCOLB,  NPROW,  NPROWB, NPS, NQ, ONEPMIN,
			    ONEPRMIN, SQNPC, TTLRWMIN, TTLWMIN

	   INTEGER	    DESCB( DLEN_ ), DESCW( DLEN_ ), IDUM1( 3 ), IDUM2(
			    3 )

	   EXTERNAL	    BLACS_GET,	   BLACS_GRIDEXIT,     BLACS_GRIDINFO,
			    BLACS_GRIDINIT,   CHK1MAT,	  DESCSET,    IGAMN2D,
			    PCHK1MAT, PDLAMR1D, PB_TOPGET, PB_TOPSET, PXERBLA,
			    PZELSET,  PZHER2K,	PZHETD2,  PZHETTRD,  PZLAMR1D,
			    PZLATRD, PZTRMR2D, ZHETRD

	   LOGICAL	    LSAME

	   INTEGER	    INDXG2L, INDXG2P, NUMROC, PJLAENV

	   EXTERNAL	    LSAME, INDXG2L, INDXG2P, NUMROC, PJLAENV

	   INTRINSIC	    DBLE, DCMPLX, ICHAR, INT, MAX, MIN, MOD, SQRT

	   IF(		    BLOCK_CYCLIC_2D*CSRC_*CTXT_*DLEN_*DTYPE_*LLD_*MB_*M_*NB_*N_*
			    RSRC_.LT.0 )RETURN

	   ICTXT	    = DESCA( CTXT_ )

	   CALL		    BLACS_GRIDINFO( ICTXT, NPROW, NPCOL, MYROW,	 MYCOL
			    )

	   INFO		    = 0

	   IF(		    NPROW.EQ.-1 ) THEN

	   INFO		    = -( 600+CTXT_ )

	   ELSE

	   CALL		    CHK1MAT( N, 2, N, 2, IA, JA, DESCA, 6, INFO )

	   UPPER	    = LSAME( UPLO, 'U' )

	   IF(		    INFO.EQ.0 ) THEN

	   NB		    = DESCA( NB_ )

	   IROFFA	    = MOD( IA-1, DESCA( MB_ ) )

	   ICOFFA	    = MOD( JA-1, DESCA( NB_ ) )

	   IAROW	    = INDXG2P( IA, NB, MYROW, DESCA( RSRC_ ), NPROW )

	   IACOL	    = INDXG2P( JA, NB, MYCOL, DESCA( CSRC_ ), NPCOL )

	   NP		    = NUMROC( N, NB, MYROW, IAROW, NPROW )

	   NQ		    =  MAX( 1, NUMROC( N+JA-1, NB, MYCOL, DESCA( CSRC_
			    ), NPCOL ) )

	   LWMIN	    = MAX( ( NP+1 )*NB, 3*NB )

	   ANB		    = PJLAENV( ICTXT, 3, 'PZHETTRD', 'L', 0, 0, 0, 0 )

	   MINSZ	    = PJLAENV( ICTXT, 5, 'PZHETTRD', 'L', 0, 0, 0, 0 )

	   SQNPC	    = INT( SQRT( DBLE( NPROW*NPCOL ) ) )

	   NPS		    = MAX( NUMROC( N, 1, 0, 0, SQNPC ), 2*ANB )

	   TTLWMIN	    = 2*( ANB+1 )*( 4*NPS+2 ) + ( NPS+2 )*NPS

	   LRWMIN	    = 1

	   TTLRWMIN	    = 2*NPS

	   WORK(	    1 ) = DCMPLX( DBLE( TTLWMIN ) )

	   RWORK(	    1 ) = DBLE( TTLRWMIN )

	   LQUERY	    = ( LWORK.EQ.-1 .OR. LRWORK.EQ.-1 )

	   IF(

	   INFO		    = -1

	   ELSE		    IF( IROFFA.NE.ICOFFA .OR. ICOFFA.NE.0 ) THEN

	   INFO		    = -5

	   ELSE		    IF( DESCA( MB_ ).NE.DESCA( NB_ ) ) THEN

	   INFO		    = -( 600+NB_ )

	   ELSE		    IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN

	   INFO		    = -11

	   ELSE		    IF( LRWORK.LT.LRWMIN .AND. .NOT.LQUERY ) THEN

	   INFO		    = -13

	   END		    IF

	   END		    IF

	   IF(		    UPPER ) THEN

	   IDUM1(	    1 ) = ICHAR( 'U' )

	   ELSE

	   IDUM1(	    1 ) = ICHAR( 'L' )

	   END		    IF

	   IDUM2(	    1 ) = 1

	   IF(		    LWORK.EQ.-1 ) THEN

	   IDUM1(	    2 ) = -1

	   ELSE

	   IDUM1(	    2 ) = 1

	   END		    IF

	   IDUM2(	    2 ) = 11

	   IF(		    LRWORK.EQ.-1 ) THEN

	   IDUM1(	    3 ) = -1

	   ELSE

	   IDUM1(	    3 ) = 1

	   END		    IF

	   IDUM2(	    3 ) = 13

	   CALL		    PCHK1MAT( N, 2, N, 2, IA, JA, DESCA, 6, 3,	IDUM1,
			    IDUM2, INFO )

	   END		    IF

	   IF(		    INFO.NE.0 ) THEN

	   CALL		    PXERBLA( ICTXT, 'PZHENTRD', -INFO )

	   RETURN

	   ELSE		    IF( LQUERY ) THEN

	   RETURN

	   END		    IF

	   IF(		    N.EQ.0 ) RETURN

	   ONEPMIN	    = N*N + 3*N + 1

	   LLWORK	    = LWORK

	   CALL		    IGAMN2D(  ICTXT, 'A', ' ', 1, 1, LLWORK, 1, 1, -1,
			    -1, -1, -1 )

	   ONEPRMIN	    = 2*N

	   LLRWORK	    = LRWORK

	   CALL		    IGAMN2D( ICTXT, 'A', ' ', 1, 1, LLRWORK, 1, 1, -1,
			    -1, -1, -1 )

	   NPROWB	    = 0

	   IF(		    (	 N.LT.MINSZ    .OR.    SQNPC.EQ.1    )	 .AND.
			    LLWORK.GE.ONEPMIN .AND.  LLRWORK.GE.ONEPRMIN .AND.
			    .NOT.UPPER ) THEN

	   NPROWB	    = 1

	   NPS		    = N

	   ELSE

	   IF(		    LLWORK.GE.TTLWMIN  .AND. LLRWORK.GE.TTLRWMIN .AND.
			    .NOT.  UPPER ) THEN

	   NPROWB	    = SQNPC

	   END		    IF

	   END		    IF

	   IF(		    NPROWB.GE.1 ) THEN

	   NPCOLB	    = NPROWB

	   SQNPC	    = NPROWB

	   INDB		    = 1

	   INDRD	    = 1

	   INDRE	    = INDRD + NPS

	   INDTAU	    = INDB + NPS*NPS

	   INDW		    = INDTAU + NPS

	   LLWORK	    = LLWORK - INDW + 1

	   CALL		    BLACS_GET( ICTXT, 10, CTXTB )

	   CALL		    BLACS_GRIDINIT( CTXTB, 'Row major', SQNPC, SQNPC )

	   CALL		    BLACS_GRIDINFO(  CTXTB,  NPROWB,  NPCOLB,  MYROWB,
			    MYCOLB )

	   CALL		    DESCSET( DESCB, N, N, 1, 1, 0, 0, CTXTB, NPS )

	   CALL		    PZTRMR2D( UPLO, 'N', N, N, A, IA, JA, DESCA, WORK(
			    INDB ), 1, 1, DESCB, ICTXT )

	   IF(		    NPROWB.GT.0 ) THEN

	   IF(		    NPROWB.EQ.1 ) THEN

	   CALL		    ZHETRD( UPLO, N, WORK( INDB ), NPS,	 RWORK(	 INDRD
			    ),	RWORK(	INDRE ), WORK( INDTAU ), WORK( INDW ),
			    LLWORK, INFO )

	   ELSE

	   CALL		    PZHETTRD( 'L', N,  WORK(  INDB  ),	1,  1,	DESCB,
			    RWORK(  INDRD  ),  RWORK( INDRE ), WORK( INDTAU ),
			    WORK( INDW ), LLWORK, INFO )

	   END		    IF

	   END		    IF

	   CALL		    PDLAMR1D( N-1, RWORK( INDRE ), 1, 1, DESCB, E,  1,
			    JA, DESCA )

	   CALL		    PDLAMR1D(  N,  RWORK(  INDRD ), 1, 1, DESCB, D, 1,
			    JA, DESCA )

	   CALL		    PZLAMR1D( N, WORK( INDTAU ), 1, 1, DESCB, TAU,  1,
			    JA, DESCA )

	   CALL		    PZTRMR2D(  UPLO,  'N',  N,	N, WORK( INDB ), 1, 1,
			    DESCB, A, IA, JA, DESCA, ICTXT )

	   IF(		    MYROWB.GE.0 ) CALL BLACS_GRIDEXIT( CTXTB )

	   ELSE

	   CALL		    PB_TOPGET( ICTXT, 'Combine', 'Columnwise', COLCTOP
			    )

	   CALL		    PB_TOPGET( ICTXT, 'Combine', 'Rowwise', ROWCTOP )

	   CALL		    PB_TOPSET(	  ICTXT,    'Combine',	 'Columnwise',
			    '1-tree' )

	   CALL		    PB_TOPSET( ICTXT, 'Combine', 'Rowwise', '1-tree' )

	   IPW		    = NP*NB + 1

	   IF(		    UPPER ) THEN

	   KK		    = MOD( JA+N-1, NB )

	   IF(		    KK.EQ.0 ) KK = NB

	   CALL		    DESCSET( DESCW, N, NB,  NB,	 NB,  IAROW,  INDXG2P(
			    JA+N-KK,  NB,  MYCOL,  DESCA(  CSRC_  ),  NPCOL ),
			    ICTXT, MAX( 1, NP ) )

	   DO		    10 K = N - KK + 1, NB + 1, -NB

	   JB		    = MIN( N-K+1, NB )

	   I		    = IA + K - 1

	   J		    = JA + K - 1

	   CALL		    PZLATRD( UPLO, K+JB-1, JB, A, IA, JA, DESCA, D, E,
			    TAU, WORK, 1, 1, DESCW, WORK( IPW ) )

	   CALL		    PZHER2K(  UPLO, 'No transpose', K-1, JB, -CONE, A,
			    IA, J, DESCA, WORK, 1, 1, DESCW, ONE, A,  IA,  JA,
			    DESCA )

	   JX		    = MIN( INDXG2L( J, NB, 0, IACOL, NPCOL ), NQ )

	   CALL		    PZELSET( A, I-1, J, DESCA, DCMPLX( E( JX ) ) )

	   DESCW(	    CSRC_ ) = MOD( DESCW( CSRC_ )+NPCOL-1, NPCOL )

	   10		    CONTINUE

	   CALL		    PZHETD2(  UPLO, MIN( N, NB ), A, IA, JA, DESCA, D,
			    E, TAU, WORK, LWORK, IINFO )

	   ELSE

	   KK		    = MOD( JA+N-1, NB )

	   IF(		    KK.EQ.0 ) KK = NB

	   CALL		    DESCSET( DESCW,  N,	 NB,  NB,  NB,	IAROW,	IACOL,
			    ICTXT, MAX( 1, NP ) )

	   DO		    20 K = 1, N - NB, NB

	   I		    = IA + K - 1

	   J		    = JA + K - 1

	   CALL		    PZLATRD(  UPLO,  N-K+1,  NB, A, I, J, DESCA, D, E,
			    TAU, WORK, K, 1, DESCW, WORK( IPW ) )

	   CALL		    PZHER2K(  UPLO,  'No  transpose',  N-K-NB+1,   NB,
			    -CONE,  A,	I+NB,  J, DESCA, WORK, K+NB, 1, DESCW,
			    ONE, A, I+NB, J+NB, DESCA )

	   JX		    = MIN( INDXG2L( J+NB-1, NB, 0, IACOL, NPCOL ),  NQ
			    )

	   CALL		    PZELSET( A, I+NB, J+NB-1, DESCA, DCMPLX( E( JX ) )
			    )

	   DESCW(	    CSRC_ ) = MOD( DESCW( CSRC_ )+1, NPCOL )

	   20		    CONTINUE

	   CALL		    PZHETD2( UPLO, KK, A, IA+K-1, JA+K-1, DESCA, D, E,
			    TAU, WORK, LWORK, IINFO )

	   END		    IF

	   CALL		    PB_TOPSET( ICTXT, 'Combine', 'Columnwise', COLCTOP
			    )

	   CALL		    PB_TOPSET( ICTXT, 'Combine', 'Rowwise', ROWCTOP )

	   END		    IF

	   WORK(	    1 ) = DCMPLX( DBLE( TTLWMIN ) )

	   RWORK(	    1 ) = DBLE( TTLRWMIN )

	   RETURN

	   END

PURPOSE
ScaLAPACK version 1.7		13 August 2001			   PZHENTRD(l)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net