pchentrd man page on DragonFly

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

PCHENTRD(l)			       )			   PCHENTRD(l)

NAME
SYNOPSIS
       SUBROUTINE PCHENTRD( 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( * )

	   REAL		    D( * ), E( * ), RWORK( * )

	   COMPLEX	    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 )

	   REAL		    ONE

	   PARAMETER	    ( ONE = 1.0E+0 )

	   COMPLEX	    CONE

	   PARAMETER	    ( CONE = ( 1.0E+0, 0.0E+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, CHETRD, CHK1MAT, DESCSET, IGAMN2D,
			    PCELSET,  PCHER2K,	PCHETD2,  PCHETTRD,  PCHK1MAT,
			    PCLAMR1D, PCLATRD, PCTRMR2D, PSLAMR1D,  PB_TOPGET,
			    PB_TOPSET, PXERBLA

	   LOGICAL	    LSAME

	   INTEGER	    INDXG2L, INDXG2P, NUMROC, PJLAENV

	   EXTERNAL	    LSAME, INDXG2L, INDXG2P, NUMROC, PJLAENV

	   INTRINSIC	    CMPLX, ICHAR, INT, MAX, MIN, MOD, REAL, 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, 'PCHETTRD', 'L', 0, 0, 0, 0 )

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

	   SQNPC	    = INT( SQRT( REAL( 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 ) = CMPLX( REAL( TTLWMIN ) )

	   RWORK(	    1 ) = REAL( 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, 'PCHENTRD', -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		    PCTRMR2D( 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		    CHETRD( UPLO, N, WORK( INDB ), NPS,	 RWORK(	 INDRD
			    ),	RWORK(	INDRE ), WORK( INDTAU ), WORK( INDW ),
			    LLWORK, INFO )

	   ELSE

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

	   END		    IF

	   END		    IF

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

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

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

	   CALL		    PCTRMR2D(  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		    PCLATRD( UPLO, K+JB-1, JB, A, IA, JA, DESCA, D, E,
			    TAU, WORK, 1, 1, DESCW, WORK( IPW ) )

	   CALL		    PCHER2K(  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		    PCELSET( A, I-1, J, DESCA, CMPLX( E( JX ) ) )

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

	   10		    CONTINUE

	   CALL		    PCHETD2(  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		    PCLATRD(  UPLO,  N-K+1,  NB, A, I, J, DESCA, D, E,
			    TAU, WORK, K, 1, DESCW, WORK( IPW ) )

	   CALL		    PCHER2K(  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		    PCELSET(  A, I+NB, J+NB-1, DESCA, CMPLX( E( JX ) )
			    )

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

	   20		    CONTINUE

	   CALL		    PCHETD2( 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 ) = CMPLX( REAL( TTLWMIN ) )

	   RWORK(	    1 ) = REAL( TTLRWMIN )

	   RETURN

	   END

PURPOSE
ScaLAPACK version 1.7		13 August 2001			   PCHENTRD(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