TAU man page on DragonFly

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

PSSYTTRD(l)			       )			   PSSYTTRD(l)

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

	   CHARACTER	    UPLO

	   INTEGER	    IA, INFO, JA, LWORK, N

	   INTEGER	    DESCA( * )

	   REAL		    A( * ), D( * ), E( * ), 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.0E0 )

	   REAL		    Z_ONE, Z_NEGONE, Z_ZERO

	   PARAMETER	    ( Z_ONE = 1.0E0, Z_NEGONE = -1.0E0, Z_ZERO = 0.0E0
			    )

	   REAL		    ZERO

	   PARAMETER	    ( ZERO = 0.0E+0 )

	   LOGICAL	    BALANCED, INTERLEAVE, TWOGEMMS, UPPER

	   INTEGER	    ANB, BINDEX,  CURCOL,  CURROW,  I,	ICTXT,	INDEX,
			    INDEXA,   INDEXINH,	 INDEXINV,  INH,  INHB,	 INHT,
			    INHTB, INTMP, INV, INVB, INVT, INVTB, J, LDA, LDV,
			    LDZG,  LII, LIIB, LIIP1, LIJ, LIJB, LIJP1, LTLIP1,
			    LTNM1,   LWMIN,   MAXINDEX,	   MININDEX,	MYCOL,
			    MYFIRSTROW, MYROW, MYSETNUM, NBZG, NP, NPB, NPCOL,
			    NPM0, NPM1, NPROW, NPS, NPSET, NQ, NQB, NQM1, NUM‐
			    ROWS,  NXTCOL,  NXTROW, PBMAX, PBMIN, PBSIZE, PNB,
			    ROWSPERPROC

	   REAL		    ALPHA, BETA, C, NORM, ONEOVERBETA, SAFMAX, SAFMIN,
			    TOPH, TOPNV, TOPTAU, TOPV, TTOPH, TTOPV

	   INTEGER	    IDUM1( 1 ), IDUM2( 1 )

	   REAL		    CC( 3 ), DTMP( 5 )

	   EXTERNAL	    BLACS_GRIDINFO,   CHK1MAT,	PCHK1MAT,  PSTREECOMB,
			    PXERBLA,  SCOMBNRM2,  SGEBR2D,   SGEBS2D,	SGEMM,
			    SGEMV,  SGERV2D,  SGESD2D, SGSUM2D, SLACPY, SSCAL,
			    STRMVT

	   LOGICAL	    LSAME

	   INTEGER	    ICEIL, NUMROC, PJLAENV

	   REAL		    PSLAMCH, SNRM2

	   EXTERNAL	    LSAME, ICEIL, NUMROC, PJLAENV, PSLAMCH, SNRM2

	   INTRINSIC	    ICHAR, MAX, MIN, MOD, REAL, SIGN, 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
			    )

	   SAFMAX	    = SQRT( PSLAMCH( ICTXT, 'O' ) ) / N

	   SAFMIN	    = SQRT( PSLAMCH( ICTXT, 'S' ) )

	   INFO		    = 0

	   IF(		    NPROW.EQ.-1 ) THEN

	   INFO		    = -( 600+CTXT_ )

	   ELSE

	   PNB		    = PJLAENV( ICTXT, 2, 'PSSYTTRD', 'L', 0, 0, 0, 0 )

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

	   INTERLEAVE	    = ( PJLAENV( ICTXT, 4, 'PSSYTTRD', 'L', 1, 0, 0, 0
			    ).EQ.1 )

	   TWOGEMMS	    = ( PJLAENV( ICTXT, 4, 'PSSYTTRD', 'L', 2, 0, 0, 0
			    ).EQ.1 )

	   BALANCED	    = ( PJLAENV( ICTXT, 4, 'PSSYTTRD', 'L', 3, 0, 0, 0
			    ).EQ.1 )

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

	   UPPER	    = LSAME( UPLO, 'U' )

	   IF(		    INFO.EQ.0  .AND.  DESCA( NB_ ).NE.1 ) INFO = 600 +
			    NB_

	   IF(		    INFO.EQ.0 ) THEN

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

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

	   WORK(	    1 ) = REAL( LWMIN )

	   IF(

	   INFO		    = -1

	   ELSE		    IF( IA.NE.1 ) THEN

	   INFO		    = -4

	   ELSE		    IF( JA.NE.1 ) THEN

	   INFO		    = -5

	   ELSE		    IF( NPROW.NE.NPCOL ) THEN

	   INFO		    = -( 600+CTXT_ )

	   ELSE		    IF( DESCA( DTYPE_ ).NE.1 ) THEN

	   INFO		    = -( 600+DTYPE_ )

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

	   INFO		    = -( 600+MB_ )

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

	   INFO		    = -( 600+NB_ )

	   ELSE		    IF( DESCA( RSRC_ ).NE.0 ) THEN

	   INFO		    = -( 600+RSRC_ )

	   ELSE		    IF( DESCA( CSRC_ ).NE.0 ) THEN

	   INFO		    = -( 600+CSRC_ )

	   ELSE		    IF( LWORK.LT.LWMIN ) THEN

	   INFO		    = -11

	   END		    IF

	   END		    IF

	   IF(		    UPPER ) THEN

	   IDUM1(	    1 ) = ICHAR( 'U' )

	   ELSE

	   IDUM1(	    1 ) = ICHAR( 'L' )

	   END		    IF

	   IDUM2(	    1 ) = 1

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

	   END		    IF

	   IF(		    INFO.NE.0 ) THEN

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

	   RETURN

	   END		    IF

	   IF(		    N.EQ.0 ) RETURN

	   NP		    = NUMROC( N, 1, MYROW, 0, NPROW )

	   NQ		    = NUMROC( N, 1, MYCOL, 0, NPCOL )

	   NXTROW	    = 0

	   NXTCOL	    = 0

	   LIIP1	    = 1

	   LIJP1	    = 1

	   NPM1		    = NP

	   NQM1		    = NQ

	   LDA		    = DESCA( LLD_ )

	   ICTXT	    = DESCA( CTXT_ )

	   INH		    = 1

	   IF(		    INTERLEAVE ) THEN

	   LDV		    = 4*( MAX( NPM1, NQM1 ) ) + 2

	   INH		    = 1

	   INV		    = INH + LDV / 2

	   INVT		    = INH + ( ANB+1 )*LDV

	   INHT		    = INVT + LDV / 2

	   INTMP	    = INVT + LDV*( ANB+1 )

	   ELSE

	   LDV		    = MAX( NPM1, NQM1 )

	   INHT		    = INH + LDV*( ANB+1 )

	   INV		    = INHT + LDV*( ANB+1 )

	   INVT		    = INV + LDV*( ANB+1 ) + 1

	   INTMP	    = INVT + LDV*( 2*ANB )

	   END		    IF

	   IF(		    INFO.NE.0 ) THEN

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

	   WORK(	    1 ) = REAL( LWMIN )

	   RETURN

	   END		    IF

	   DO		    10 I = 1, NP

	   WORK(	    INH+I-1 ) = Z_ZERO

	   WORK(	    INV+I-1 ) = Z_ZERO

	   10		    CONTINUE

	   DO		    20 I = 1, NQ

	   WORK(	    INHT+I-1 ) = Z_ZERO

	   20		    CONTINUE

	   TOPNV	    = Z_ZERO

	   LTLIP1	    = LIJP1

	   LTNM1	    = NPM1

	   IF(		    MYCOL.GT.MYROW ) THEN

	   LTLIP1	    = LTLIP1 + 1

	   LTNM1	    = LTNM1 - 1

	   END		    IF

	   DO		    210 MININDEX = 1, N - 1, ANB

	   MAXINDEX	    = MIN( MININDEX+ANB-1, N )

	   LIJB		    = NUMROC( MAXINDEX, 1, MYCOL, 0, NPCOL ) + 1

	   LIIB		    = NUMROC( MAXINDEX, 1, MYROW, 0, NPROW ) + 1

	   NQB		    = NQ - LIJB + 1

	   NPB		    = NP - LIIB + 1

	   INHTB	    = INHT + LIJB - 1

	   INVTB	    = INVT + LIJB - 1

	   INHB		    = INH + LIIB - 1

	   INVB		    = INV + LIIB - 1

	   DO		    160 INDEX = MININDEX, MIN( MAXINDEX, N-1 )

	   BINDEX	    = INDEX - MININDEX

	   CURROW	    = NXTROW

	   CURCOL	    = NXTCOL

	   NXTROW	    = MOD( CURROW+1, NPROW )

	   NXTCOL	    = MOD( CURCOL+1, NPCOL )

	   LII		    = LIIP1

	   LIJ		    = LIJP1

	   NPM0		    = NPM1

	   IF(		    MYROW.EQ.CURROW ) THEN

	   NPM1		    = NPM1 - 1

	   LIIP1	    = LIIP1 + 1

	   END		    IF

	   IF(		    MYCOL.EQ.CURCOL ) THEN

	   NQM1		    = NQM1 - 1

	   LIJP1	    = LIJP1 + 1

	   LTLIP1	    = LTLIP1 + 1

	   LTNM1	    = LTNM1 - 1

	   END		    IF

	   IF(		    MYCOL.EQ.CURCOL ) THEN

	   INDEXA	    = LII + ( LIJ-1 )*LDA

	   INDEXINV	    = INV + LII - 1 + ( BINDEX-1 )*LDV

	   INDEXINH	    = INH + LII - 1 + ( BINDEX-1 )*LDV

	   TTOPH	    = WORK( INHT+LIJ-1+BINDEX*LDV )

	   TTOPV	    = TOPNV

	   IF(		    INDEX.GT.1 ) THEN

	   DO		    30 I = 0, NPM0 - 1

	   A(		    INDEXA+I  ) = A( INDEXA+I ) - WORK( INDEXINV+LDV+I
			    )*TTOPH - WORK( INDEXINH+LDV+I )*TTOPV

	   30		    CONTINUE

	   END		    IF

	   END		    IF

	   IF(		    MYCOL.EQ.CURCOL ) THEN

	   IF(		    MYROW.EQ.CURROW ) THEN

	   DTMP(	    2 ) = A( LII+( LIJ-1 )*LDA )

	   ELSE

	   DTMP(	    2 ) = ZERO

	   END		    IF

	   IF(		    MYROW.EQ.NXTROW ) THEN

	   DTMP(	    3 ) = A( LIIP1+( LIJ-1 )*LDA )

	   DTMP(	    4 ) = ZERO

	   ELSE

	   DTMP(	    3 ) = ZERO

	   DTMP(	    4 ) = ZERO

	   END		    IF

	   NORM		    = SNRM2( NPM1, A( LIIP1+( LIJ-1 )*LDA ), 1 )

	   DTMP(	    1 ) = NORM

	   DTMP(	    5 ) = ZERO

	   IF(		    DTMP( 1 ).GE.SAFMAX .OR.  DTMP(  1	).LT.SAFMIN  )
			    THEN

	   DTMP(	    5 ) = ONE

	   DTMP(	    1 ) = ZERO

	   END		    IF

	   DTMP(	    1 ) = DTMP( 1 )*DTMP( 1 )

	   CALL		    SGSUM2D(  ICTXT, 'C', ' ', 5, 1, DTMP, 5, -1, CUR‐
			    COL )

	   IF(		    DTMP( 5 ).EQ.ZERO ) THEN

	   DTMP(	    1 ) = SQRT( DTMP( 1 ) )

	   ELSE

	   DTMP(	    1 ) = NORM

	   CALL		    PSTREECOMB( ICTXT, 'C', 1, DTMP, -1, MYCOL, SCOMB‐
			    NRM2 )

	   END		    IF

	   NORM		    = DTMP( 1 )

	   D(		    LIJ ) = DTMP( 2 )

	   IF(		    MYROW.EQ.CURROW .AND. MYCOL.EQ.CURCOL ) THEN

	   A(		    LII+( LIJ-1 )*LDA ) = D( LIJ )

	   END		    IF

	   ALPHA	    = DTMP( 3 )

	   NORM		    = SIGN( NORM, ALPHA )

	   IF(		    NORM.EQ.ZERO ) THEN

	   TOPTAU	    = ZERO

	   ELSE

	   BETA		    = NORM + ALPHA

	   TOPTAU	    = BETA / NORM

	   ONEOVERBETA	    = 1.0E0 / BETA

	   CALL		    SSCAL(  NPM1,  ONEOVERBETA, A( LIIP1+( LIJ-1 )*LDA
			    ), 1 )

	   END		    IF

	   IF(		    MYROW.EQ.NXTROW ) THEN

	   A(		    LIIP1+( LIJ-1 )*LDA ) = Z_ONE

	   END		    IF

	   TAU(		    LIJ ) = TOPTAU

	   E(		    LIJ ) = -NORM

	   END		    IF

	   DO		    40 I = 0, NPM1 - 1

	   WORK(	    INV+LIIP1-1+BINDEX*LDV+NPM1+I ) =  A(  LIIP1+I+  (
			    LIJ-1 )*LDA )

	   40		    CONTINUE

	   IF(		    MYCOL.EQ.CURCOL ) THEN

	   WORK(	    INV+LIIP1-1+BINDEX*LDV+NPM1+NPM1 ) = TOPTAU

	   CALL		    SGEBS2D(  ICTXT,  'R',  ' ', NPM1+NPM1+1, 1, WORK(
			    INV+LIIP1-1+BINDEX*LDV ), NPM1+NPM1+1 )

	   ELSE

	   CALL		    SGEBR2D( ICTXT, 'R', ' ',  NPM1+NPM1+1,  1,	 WORK(
			    INV+LIIP1-1+BINDEX*LDV ), NPM1+NPM1+1, MYROW, CUR‐
			    COL )

	   TOPTAU	    = WORK( INV+LIIP1-1+BINDEX*LDV+NPM1+NPM1 )

	   END		    IF

	   DO		    50 I = 0, NPM1 - 1

	   WORK(	    INH+LIIP1-1+(   BINDEX+1   )*LDV+I	 )   =	 WORK(
			    INV+LIIP1- 1+BINDEX*LDV+NPM1+I )

	   50		    CONTINUE

	   IF(		    INDEX.LT.N ) THEN

	   IF(		    MYROW.EQ.NXTROW .AND. MYCOL.EQ.CURCOL ) A( LIIP1+(
			    LIJ-1 )*LDA ) = E( LIJ )

	   END		    IF

	   IF(		    MYROW.EQ.MYCOL ) THEN

	   DO		    60 I = 0, NPM1 + NPM1

	   WORK(	    INVT+LIJP1-1+BINDEX*LDV+I ) =  WORK(  INV+LIIP1-1+
			    BINDEX*LDV+I )

	   60		    CONTINUE

	   ELSE

	   CALL		    SGESD2D(	 ICTXT,	    NPM1+NPM1,	   1,	 WORK(
			    INV+LIIP1-1+BINDEX*LDV ), NPM1+NPM1, MYCOL,	 MYROW
			    )

	   CALL		    SGERV2D(	 ICTXT,	    NQM1+NQM1,	   1,	 WORK(
			    INVT+LIJP1-1+BINDEX*LDV ), NQM1+NQM1, MYCOL, MYROW
			    )

	   END		    IF

	   DO		    70 I = 0, NQM1 - 1

	   WORK(	    INHT+LIJP1-1+(  BINDEX+1  )*LDV+I  ) = WORK( INVT+
			    LIJP1-1+BINDEX*LDV+NQM1+I )

	   70		    CONTINUE

	   IF(		    INDEX.GT.1 ) THEN

	   DO		    90 J = LIJP1, LIJB - 1

	   DO		    80 I = 0, NPM1 - 1

	   A(		    LIIP1+I+( J-1 )*LDA ) = A( LIIP1+I+( J-1 )*LDA ) -
			    WORK(     INV+LIIP1-1+BINDEX*LDV+I	   )*	 WORK(
			    INHT+J-1+BINDEX*LDV	       )	-	 WORK(
			    INH+LIIP1-1+BINDEX*LDV+I	      )*	 WORK(
			    INVT+J-1+BINDEX*LDV )

	   80		    CONTINUE

	   90		    CONTINUE

	   END		    IF

	   WORK(	    INV+LIIP1-1+( BINDEX+1 )*LDV ) = Z_ZERO

	   WORK(	    INVT+LIJP1-1+( BINDEX+1 )*LDV+NQM1-1 ) = Z_ZERO

	   IF(		    MYROW.EQ.MYCOL ) THEN

	   IF(		    LTNM1.GT.1 ) THEN

	   CALL		    STRMVT( 'L', LTNM1-1, A( LTLIP1+1+( LIJP1-1	 )*LDA
			    ),	LDA, WORK( INVT+LIJP1-1+( BINDEX+1 )*LDV ), 1,
			    WORK( INH+LTLIP1+1-1+( BINDEX+1 )*LDV ), 1,	 WORK(
			    INV+LTLIP1+1-1+(  BINDEX+1	)*  LDV	 ),  1,	 WORK(
			    INHT+LIJP1-1+( BINDEX+ 1 )*LDV ), 1 )

	   END		    IF

	   DO		    100 I = 1, LTNM1

	   WORK(	    INVT+LIJP1+I-1-1+(	BINDEX+1  )*LDV	 )   =	 WORK(
			    INVT+LIJP1+I-1-1+(	 BINDEX+1   )*LDV   )	+   A(
			    LTLIP1+I-1+(   LIJP1+I-1-1	  )*LDA	   )*	 WORK(
			    INH+LTLIP1+I-1-1+( BINDEX+1 )*LDV )

	   100		    CONTINUE

	   ELSE

	   IF(		    LTNM1.GT.0	) CALL STRMVT( 'L', LTNM1, A( LTLIP1+(
			    LIJP1-1  )*LDA  ),	 LDA,	WORK(	INVT+LIJP1-1+(
			    BINDEX+1 )* LDV ), 1, WORK( INH+LTLIP1-1+( BINDEX+
			    1 )*LDV ), 1, WORK( INV+LTLIP1-1+ ( BINDEX+1 )*LDV
			    ), 1, WORK( INHT+LIJP1-1+( BINDEX+1 )*LDV ), 1 )

	   END		    IF

	   DO		    110 I = 1, 2*( BINDEX+1 )

	   WORK(	    INTMP-1+I ) = 0

	   110		    CONTINUE

	   IF(		    BALANCED ) THEN

	   NPSET	    = NPROW

	   MYSETNUM	    = MYROW

	   ROWSPERPROC	    = ICEIL( NQB, NPSET )

	   MYFIRSTROW	    = MIN( NQB+1, 1+ROWSPERPROC*MYSETNUM )

	   NUMROWS	    = MIN( ROWSPERPROC, NQB-MYFIRSTROW+1 )

	   CALL		    SGEMV(   'C',   NUMROWS,  BINDEX+1,	 Z_ONE,	 WORK(
			    INHTB+MYFIRSTROW-1	     ),	      LDV,	 WORK(
			    INHTB+MYFIRSTROW-1+(  BINDEX+1 )*LDV ), 1, Z_ZERO,
			    WORK( INTMP ), 1 )

	   CALL		    SGEMV(  'C',  NUMROWS,  BINDEX+1,	Z_ONE,	 WORK(
			    INVTB+MYFIRSTROW-1	     ),	      LDV,	 WORK(
			    INHTB+MYFIRSTROW-1+( BINDEX+1 )*LDV ), 1,  Z_ZERO,
			    WORK( INTMP+BINDEX+1 ), 1 )

	   CALL		    SGSUM2D( ICTXT, 'C', ' ', 2*( BINDEX+1 ), 1, WORK(
			    INTMP ), 2*( BINDEX+1 ), -1, -1 )

	   ELSE

	   CALL		    SGEMV( 'C', NQB, BINDEX+1, Z_ONE, WORK(  INHTB  ),
			    LDV,  WORK(	 INHTB+(  BINDEX+1 )*LDV ), 1, Z_ZERO,
			    WORK( INTMP ), 1 )

	   CALL		    SGEMV( 'C', NQB, BINDEX+1, Z_ONE, WORK(  INVTB  ),
			    LDV,  WORK(	 INHTB+(  BINDEX+1 )*LDV ), 1, Z_ZERO,
			    WORK( INTMP+BINDEX+1 ), 1 )

	   END		    IF

	   IF(		    BALANCED ) THEN

	   MYSETNUM	    = MYCOL

	   ROWSPERPROC	    = ICEIL( NPB, NPSET )

	   MYFIRSTROW	    = MIN( NPB+1, 1+ROWSPERPROC*MYSETNUM )

	   NUMROWS	    = MIN( ROWSPERPROC, NPB-MYFIRSTROW+1 )

	   CALL		    SGSUM2D( ICTXT, 'R', ' ', 2*( BINDEX+1 ), 1, WORK(
			    INTMP ), 2*( BINDEX+1 ), -1, -1 )

	   IF(		    INDEX.GT.1. ) THEN

	   CALL		    SGEMV(  'N',  NUMROWS,  BINDEX+1,  Z_NEGONE, WORK(
			    INVB+MYFIRSTROW-1 ), LDV, WORK( INTMP ), 1, Z_ONE,
			    WORK( INVB+MYFIRSTROW-1+( BINDEX+1 )* LDV ), 1 )

	   CALL		    SGEMV(  'N',  NUMROWS,  BINDEX+1,  Z_NEGONE, WORK(
			    INHB+MYFIRSTROW-1 ), LDV, WORK( INTMP+BINDEX+1  ),
			    1,	Z_ONE,	WORK(  INVB+MYFIRSTROW-1+( BINDEX+1 )*
			    LDV ), 1 )

	   END		    IF

	   ELSE

	   CALL		    SGEMV( 'N', NPB, BINDEX+1, Z_NEGONE, WORK( INVB ),
			    LDV,   WORK(  INTMP	 ),  1,	 Z_ONE,	 WORK(	INVB+(
			    BINDEX+1 )*LDV ), 1 )

	   CALL		    SGEMV( 'N', NPB, BINDEX+1, Z_NEGONE, WORK( INHB ),
			    LDV,  WORK(	 INTMP+BINDEX+1	 ),  1,	 Z_ONE,	 WORK(
			    INVB+( BINDEX+1 )*LDV ), 1 )

	   END		    IF

	   IF(		    MYROW.EQ.MYCOL ) THEN

	   DO		    120 I = 0, NQM1 - 1

	   WORK(	    INTMP+I ) = WORK( INVT+LIJP1-1+( BINDEX+1 )*LDV+ I
			    )

	   120		    CONTINUE

	   ELSE

	   CALL		    SGESD2D(  ICTXT,  NQM1,  1,	 WORK(	INVT+LIJP1-1+(
			    BINDEX+1 )*LDV ), NQM1, MYCOL, MYROW )

	   CALL		    SGERV2D( ICTXT, NPM1,  1,  WORK(  INTMP  ),	 NPM1,
			    MYCOL, MYROW )

	   END		    IF

	   DO		    130 I = 0, NPM1 - 1

	   WORK(	    INV+LIIP1-1+(   BINDEX+1   )*LDV+I	 )   =	 WORK(
			    INV+LIIP1- 1+( BINDEX+1 )*LDV+I ) + WORK(  INTMP+I
			    )

	   130		    CONTINUE

	   CALL		    SGSUM2D(   ICTXT,	'R',   '  ',  NPM1,  1,	 WORK(
			    INV+LIIP1-1+(  BINDEX+1  )*LDV  ),	NPM1,	MYROW,
			    NXTCOL )

	   IF(		    MYCOL.EQ.NXTCOL ) THEN

	   CC(		    1 ) = Z_ZERO

	   DO		    140 I = 0, NPM1 - 1

	   CC(		    1  )  =  CC( 1 ) + WORK( INV+LIIP1-1+( BINDEX+1 )*
			    LDV+I )*WORK( INH+LIIP1-1+( BINDEX+1 )*LDV+ I )

	   140		    CONTINUE

	   IF(		    MYROW.EQ.NXTROW ) THEN

	   CC(		    2 ) = WORK( INV+LIIP1-1+( BINDEX+1 )*LDV )

	   CC(		    3 ) = WORK( INH+LIIP1-1+( BINDEX+1 )*LDV )

	   ELSE

	   CC(		    2 ) = Z_ZERO

	   CC(		    3 ) = Z_ZERO

	   END		    IF

	   CALL		    SGSUM2D( ICTXT, 'C', ' ', 3, 1, CC, 3, -1,	NXTCOL
			    )

	   TOPV		    = CC( 2 )

	   C		    = CC( 1 )

	   TOPH		    = CC( 3 )

	   TOPNV	    = TOPTAU*( TOPV-C*TOPTAU / 2*TOPH )

	   DO		    150 I = 0, NPM1 - 1

	   WORK(	    INV+LIIP1-1+( BINDEX+1 )*LDV+I ) = TOPTAU* ( WORK(
			    INV+LIIP1-1+(  BINDEX+1   )*LDV+I	)-C*TOPTAU   /
			    2*WORK( INH+LIIP1-1+( BINDEX+1 )*LDV+I ) )

	   150		    CONTINUE

	   END		    IF

	   160		    CONTINUE

	   IF(		    MAXINDEX.LT.N ) THEN

	   DO		    170 I = 0, NPM1 - 1

	   WORK(	    INTMP+I ) = WORK( INH+LIIP1-1+ANB*LDV+I )

	   170		    CONTINUE

	   IF(

	   IF(		    INTERLEAVE ) THEN

	   LDZG		    = LDV / 2

	   ELSE

	   CALL		    SLACPY(  'A',  LTNM1,  ANB,	 WORK( INHT+LIJP1-1 ),
			    LDV, WORK( INVT+LIJP1-1+ANB*LDV ), LDV )

	   CALL		    SLACPY( 'A', LTNM1,	 ANB,  WORK(  INV+LTLIP1-1  ),
			    LDV, WORK( INH+LTLIP1-1+ANB*LDV ), LDV )

	   LDZG		    = LDV

	   END		    IF

	   NBZG		    = ANB*2

	   ELSE

	   LDZG		    = LDV

	   NBZG		    = ANB

	   END		    IF

	   DO		    180 PBMIN = 1, LTNM1, PNB

	   PBSIZE	    = MIN( PNB, LTNM1-PBMIN+1 )

	   PBMAX	    = MIN( LTNM1, PBMIN+PNB-1 )

	   CALL		    SGEMM(  'N',  'C',	PBSIZE, PBMAX, NBZG, Z_NEGONE,
			    WORK(   INH+LTLIP1-1+PBMIN-1   ),	LDZG,	 WORK(
			    INVT+LIJP1-1  ),  LDZG, Z_ONE, A( LTLIP1+PBMIN-1+(
			    LIJP1-1 )*LDA ), LDA )

	   IF(		    TWOGEMMS ) THEN

	   CALL		    SGEMM( 'N', 'C',  PBSIZE,  PBMAX,  ANB,  Z_NEGONE,
			    WORK(    INV+LTLIP1-1+PBMIN-1   ),	 LDZG,	 WORK(
			    INHT+LIJP1-1 ), LDZG, Z_ONE,  A(  LTLIP1+PBMIN-1+(
			    LIJP1-1 )*LDA ), LDA )

	   END		    IF

	   180		    CONTINUE

	   DO		    190 I = 0, NPM1 - 1

	   WORK(	    INV+LIIP1-1+I ) = WORK( INV+LIIP1-1+ANB*LDV+I )

	   WORK(	    INH+LIIP1-1+I ) = WORK( INTMP+I )

	   190		    CONTINUE

	   DO		    200 I = 0, NQM1 - 1

	   WORK(	    INHT+LIJP1-1+I ) = WORK( INHT+LIJP1-1+ANB*LDV+I )

	   200		    CONTINUE

	   END		    IF

	   210		    CONTINUE

	   IF(		    MYCOL.EQ.NXTCOL ) THEN

	   IF(		    MYROW.EQ.NXTROW ) THEN

	   D(		    NQ ) = A( NP+( NQ-1 )*LDA )

	   CALL		    SGEBS2D( ICTXT, 'C', ' ', 1, 1, D( NQ ), 1 )

	   ELSE

	   CALL		    SGEBR2D(  ICTXT,  'C',  '  ',  1,  1,  D( NQ ), 1,
			    NXTROW, NXTCOL )

	   END		    IF

	   END		    IF

	   WORK(	    1 ) = REAL( LWMIN )

	   RETURN

	   END

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