DragonFly On-Line Manual Pages

Search: Section:  


PDSYTTRD(l)                            )                           PDSYTTRD(l)

NAME

SYNOPSIS

SUBROUTINE PDSYTTRD( UPLO, N, A, IA, JA, DESCA, D, E, TAU, WORK, LWORK, INFO ) CHARACTER UPLO INTEGER IA, INFO, JA, LWORK, N INTEGER DESCA( * ) DOUBLE PRECISION 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 ) DOUBLE PRECISION ONE PARAMETER ( ONE = 1.0D0 ) DOUBLE PRECISION Z_ONE, Z_NEGONE, Z_ZERO PARAMETER ( Z_ONE = 1.0D0, Z_NEGONE = -1.0D0, Z_ZERO = 0.0D0 ) DOUBLE PRECISION ZERO PARAMETER ( ZERO = 0.0D+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, NUMROWS, NXTCOL, NXTROW, PBMAX, PBMIN, PBSIZE, PNB, ROWSPERPROC DOUBLE PRECISION ALPHA, BETA, C, CONJTOPH, CONJTOPV, NORM, ONEOVERBETA, SAFMAX, SAFMIN, TOPH, TOPNV, TOPTAU, TOPV INTEGER IDUM1( 1 ), IDUM2( 1 ) DOUBLE PRECISION CC( 3 ), DTMP( 5 ) EXTERNAL BLACS_GRIDINFO, CHK1MAT, DCOMBNRM2, DGEBR2D, DGEBS2D, DGEMM, DGEMV, DGERV2D, DGESD2D, DGSUM2D, DLACPY, DSCAL, DTRMVT, PCHK1MAT, PDTREECOMB, PXERBLA LOGICAL LSAME INTEGER ICEIL, NUMROC, PJLAENV DOUBLE PRECISION DNRM2, PDLAMCH EXTERNAL LSAME, ICEIL, NUMROC, PJLAENV, DNRM2, PDLAMCH INTRINSIC DBLE, ICHAR, MAX, MIN, MOD, 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( PDLAMCH( ICTXT, 'O' ) ) / N SAFMIN = SQRT( PDLAMCH( ICTXT, 'S' ) ) INFO = 0 IF( NPROW.EQ.-1 ) THEN INFO = -( 600+CTXT_ ) ELSE PNB = PJLAENV( ICTXT, 2, 'PDSYTTRD', 'L', 0, 0, 0, 0 ) ANB = PJLAENV( ICTXT, 3, 'PDSYTTRD', 'L', 0, 0, 0, 0 ) INTERLEAVE = ( PJLAENV( ICTXT, 4, 'PDSYTTRD', 'L', 1, 0, 0, 0 ).EQ.1 ) TWOGEMMS = ( PJLAENV( ICTXT, 4, 'PDSYTTRD', 'L', 2, 0, 0, 0 ).EQ.1 ) BALANCED = ( PJLAENV( ICTXT, 4, 'PDSYTTRD', '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 ) = DBLE( 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, 'PDSYTTRD', -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, 'PDSYTTRD', -INFO ) WORK( 1 ) = DBLE( 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 CONJTOPH = WORK( INHT+LIJ-1+BINDEX*LDV ) CONJTOPV = TOPNV IF( INDEX.GT.1 ) THEN DO 30 I = 0, NPM0 - 1 A( INDEXA+I ) = A( INDEXA+I ) - WORK( INDEXINV+LDV+I )*CONJTOPH - WORK( INDEXINH+LDV+I )*CONJTOPV 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 = DNRM2( 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 DGSUM2D( ICTXT, 'C', ' ', 5, 1, DTMP, 5, -1, CURCOL ) IF( DTMP( 5 ).EQ.ZERO ) THEN DTMP( 1 ) = SQRT( DTMP( 1 ) ) ELSE DTMP( 1 ) = NORM CALL PDTREECOMB( ICTXT, 'C', 1, DTMP, -1, MYCOL, DCOMBNRM2 ) 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.0D0 / BETA CALL DSCAL( 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 DGEBS2D( ICTXT, 'R', ' ', NPM1+NPM1+1, 1, WORK( INV+LIIP1-1+BINDEX*LDV ), NPM1+NPM1+1 ) ELSE CALL DGEBR2D( ICTXT, 'R', ' ', NPM1+NPM1+1, 1, WORK( INV+LIIP1-1+BINDEX*LDV ), NPM1+NPM1+1, MYROW, CURCOL ) 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 DGESD2D( ICTXT, NPM1+NPM1, 1, WORK( INV+LIIP1-1+BINDEX*LDV ), NPM1+NPM1, MYCOL, MYROW ) CALL DGERV2D( 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 DTRMVT( '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 DTRMVT( '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 DGEMV( '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 DGEMV( '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 DGSUM2D( ICTXT, 'C', ' ', 2*( BINDEX+1 ), 1, WORK( INTMP ), 2*( BINDEX+1 ), -1, -1 ) ELSE CALL DGEMV( 'C', NQB, BINDEX+1, Z_ONE, WORK( INHTB ), LDV, WORK( INHTB+( BINDEX+1 )*LDV ), 1, Z_ZERO, WORK( INTMP ), 1 ) CALL DGEMV( '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 DGSUM2D( ICTXT, 'R', ' ', 2*( BINDEX+1 ), 1, WORK( INTMP ), 2*( BINDEX+1 ), -1, -1 ) IF( INDEX.GT.1. ) THEN CALL DGEMV( '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 DGEMV( '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 DGEMV( 'N', NPB, BINDEX+1, Z_NEGONE, WORK( INVB ), LDV, WORK( INTMP ), 1, Z_ONE, WORK( INVB+( BINDEX+1 )*LDV ), 1 ) CALL DGEMV( '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 DGESD2D( ICTXT, NQM1, 1, WORK( INVT+LIJP1-1+( BINDEX+1 )*LDV ), NQM1, MYCOL, MYROW ) CALL DGERV2D( 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 DGSUM2D( 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 DGSUM2D( 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 DLACPY( 'A', LTNM1, ANB, WORK( INHT+LIJP1-1 ), LDV, WORK( INVT+LIJP1-1+ANB*LDV ), LDV ) CALL DLACPY( '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 DGEMM( '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 DGEMM( '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 DGEBS2D( ICTXT, 'C', ' ', 1, 1, D( NQ ), 1 ) ELSE CALL DGEBR2D( ICTXT, 'C', ' ', 1, 1, D( NQ ), 1, NXTROW, NXTCOL ) END IF END IF WORK( 1 ) = DBLE( LWMIN ) RETURN END

PURPOSE

ScaLAPACK version 1.7 13 August 2001 PDSYTTRD(l)

Search: Section: