1 SUBROUTINE pclahqr( WANTT, WANTZ, N, ILO, IHI, A, DESCA, W, ILOZ,
2 $ IHIZ, Z, DESCZ, WORK, LWORK, IWORK, ILWORK,
14 INTEGER IHI, IHIZ, ILO, ILOZ, ILWORK, INFO, LWORK, N
17 INTEGER DESCA( * ), DESCZ( * ), IWORK( * )
18 COMPLEX A( * ), W( * ), WORK( * ), Z( * )
249 INTEGER BLOCK_CYCLIC_2D, CSRC_, DLEN_, DT_,
250 $ LLD_, MB_, M_, NB_, N_, RSRC_
251 parameter( block_cyclic_2d = 1, dlen_ = 9, dt_ = 1,
253 $ rsrc_ = 7, csrc_ = 8, lld_ = 9 )
257 parameter( zero = ( 0.0e+0, 0.0e+0 ),
258 $ one = ( 1.0e+0, 0.0e+0 ) )
260 PARAMETER ( CONST = 1.50e+0 )
262 parameter( iblk = 32 )
266 INTEGER CONTXT, DOWN, HBL, I, I1, I2, IAFIRST, IBULGE,
267 $ icbuf, icol, icol1, icol2, idia, ierr, ii,
270 $ itermax, itmp1, itmp2, itn, its, izbuf, j,
272 $ left, lihih, lihiz, liloh, liloz, locali1,
274 $ myrow, nbulge, nh, node, npcol, nprow, nq, nr,
275 $ num, nz, right, rotn, up, vecsidx
276 REAL CS, OVFL, S, SMLNUM, ULP, UNFL
277 COMPLEX CDUM, H10, H11, H22, H33, H43H34, H44, SN, SUM,
278 $ t1, t1copy, t2, t3, v1save, v2, v2save, v3,
282 INTEGER ICURCOL( ), ICURROW( IBLK ), K1( IBLK ),
285 COMPLEX S1( 2*IBLK, 2*IBLK ), ( 6, 6, IBLK ),
291 EXTERNAL ilcm, numroc, pslamch
302 INTRINSIC abs, real, conjg, aimag,
max,
min, mod
308 cabs1( cdum ) = abs( real( cdum ) ) + abs( aimag( cdum ) )
314 itermax = 30*( ihi-ilo+1 )
321 contxt = desca( ctxt_ )
323 iafirst = desca( rsrc_ )
324 jafirst = desca( csrc_ )
327 node = myrow*npcol + mycol
329 left = mod( mycol+npcol-1, npcol )
330 right = mod( mycol+1, npcol )
331 up = mod( myrow+nprow-1, nprow )
332 down = mod( myrow+1, nprow )
333 lcmrc = ilcm( nprow, npcol )
334 IF( ( nprow.LE.3 ) .OR. ( npcol.LE.3 ) )
THEN
342 nq = numroc( n, hbl, mycol, jafirst, npcol )
347 jj = 3*n +
max( 2*
max( lda, ldz )+2*nq, jj )
348 jj = jj +
max( 2*n, ( 8*lcmrc+2 )**2 )
349 IF( lwork.EQ.-1 )
THEN
353 IF( lwork.LT.jj )
THEN
356 IF( descz( ctxt_ ).NE.desca( ctxt_ ) )
THEN
357 info = -( 1300+ctxt_ )
359 IF( desca( mb_ ).NE.desca( nb_ ) )
THEN
362 IF( descz( mb_ ).NE.descz( nb_ ) )
THEN
365 IF( desca( mb_ ).NE.descz( mb_ ) )
THEN
368 IF( ( desca( rsrc_ ).NE.0 ) .OR. ( desca( csrc_ ).NE.0 ) )
THEN
369 info = -( 700+rsrc_ )
371 IF( ( descz( rsrc_ ).NE.0 ) .OR. ( descz( csrc_ ).NE.0 ) )
THEN
372 info = -( 1300+rsrc_ )
374 IF( ( ilo.GT.n ) .OR. ( ilo.LT.1 ) )
THEN
377 IF( ( ihi.GT.n ) .OR. ( ihi.LT.1 ) )
THEN
383 CALL igamn2d( contxt,
'ALL',
' ', 1, 1, info, 1, itmp1, itmp2, -1,
386 CALL pxerbla( contxt,
'PCLAHQR', -info )
403 rotn =
min( rotn, hbl-2 )
404 rotn =
max( rotn, 1 )
406 IF( ilo.EQ.ihi )
THEN
407 CALL infog2l( ilo, ilo, desca, nprow, npcol, myrow, mycol,
408 $ irow, icol, ii, jj )
409 IF( ( myrow.EQ.ii ) .AND. ( mycol.EQ.jj ) )
THEN
410 w( ilo ) = a( ( icol-1 )*lda+irow )
420 CALL infog1l( iloz, hbl, nprow, myrow, iafirst, liloz, lihiz )
421 lihiz = numroc( ihiz,
426 unfl = pslamch( contxt,
'SAFE MINIMUM' )
428 CALL pslabad( contxt, unfl, ovfl )
429 ulp = pslamch( contxt,
'PRECISION' )
430 smlnum = unfl*( nh / ulp )
466 CALL pclasmsub( a, desca, i, l, k, smlnum, work( irbuf+1 ),
474 CALL infog2l( l, l-1, desca, nprow, npcol, myrow, mycol,
475 $ irow, icol, itmp1, itmp2 )
476 IF( ( myrow.EQ.itmp1 ) .AND. ( mycol.EQ.itmp2 ) )
THEN
477 a( ( icol-1 )*lda+irow ) = zero
479 work( isub+l-1 ) = zero
491 IF( l.GE.i-( 2*iblk-1 ) )
THEN
500 IF( .NOT.wantt )
THEN
508 jblk =
min( iblk, ( ( i-l+1 ) / 2 )-1 )
509 IF( jblk.GT.lcmrc )
THEN
513 jblk = jblk - mod( jblk, lcmrc )
515 jblk =
min( jblk, 2*lcmrc )
516 jblk =
max( jblk, 1 )
518 CALL pclacp3( 2*jblk, i-2*jblk+1, a, desca, s1, 2*iblk, -1, -1,
520 IF( ( its.EQ.20 .OR. its.EQ.40 ) .AND. ( jblk.GT.1 ) )
THEN
524 DO 20 ii = 2*jblk, 2, -1
525 s1( ii, ii ) = const*( cabs1( s1( ii, ii ) )+
526 $ cabs1( s1( ii, ii-1 ) ) )
527 s1( ii, ii-1 ) = zero
528 s1( ii-1, ii ) = zero
530 s1( 1, 1 ) = const*cabs1( s1( 1, 1 ) )
532 CALL clahqr2( .false., .false., 2*jblk, 1, 2*jblk, s1,
533 $ 2*iblk, work( irbuf+1 ), 1, 2*jblk, z, ldz,
538 h44 = s1( 2*jblk, 2*jblk )
539 h33 = s1( 2*jblk-1, 2*jblk-1 )
540 h43h34 = s1( 2*jblk-1, 2*jblk )*s1( 2*jblk, 2*jblk-1 )
547 CALL pclaconsb( a, desca, i, l, m, h44, h33, h43h34,
548 $ work( irbuf+1 ), lwork-irbuf )
554 istop =
min( m+rotn-1-mod( m-( m / hbl )*hbl-1, rotn ), i-2 )
555 istop =
min( istop, m+hbl-3-mod( m-1, hbl ) )
556 istop =
min( istop, i2-2 )
557 istop =
max( istop, m )
558 nbulge = ( i-1-istop ) / hbl
562 nbulge =
min( nbulge, jblk )
563 IF( nbulge.GT.lcmrc )
THEN
567 nbulge = nbulge - mod( nbulge, lcmrc )
569 nbulge =
max( nbulge, 1 )
576 IF( ( nbulge.GT.1 ) .AND. ( m.GT.l ) )
THEN
580 CALL infog2l( m+2, m+2, desca, nprow, npcol, myrow, mycol,
581 $ irow1, icol1, itmp1, itmp2 )
582 ii =
min( 4*nbulge+2, n-m+2 )
583 CALL pclacp3( ii, m-1, a, desca, work( irbuf+1 ), ii, itmp1,
585 IF( ( myrow.EQ.itmp1 ) .AND. ( mycol.EQ.itmp2 ) )
THEN
589 CALL clamsh( s1, 2*iblk, nbulge, jblk, work( irbuf+1 ),
592 CALL igebs2d( contxt,
'ALL', '
', 1, 1, NBULGE, 1 )
598 CALL IGEBR2D( CONTXT, 'all
', ' ', 1, 1, NBULGE, 1, ITMP1,
609 CALL INFOG1L( M, HBL, NPCOL, MYCOL, JAFIRST, ITMP1, LOCALK )
611 CALL INFOG1L( 1, HBL, NPCOL, MYCOL, JAFIRST, ICOL1, LOCALI2 )
612 LOCALI2 = NUMROC( I2, HBL, MYCOL, JAFIRST, NPCOL )
616 CALL INFOG1L( I1, HBL, NPROW, MYROW, IAFIRST, LOCALI1, ICOL1 )
617 CALL INFOG1L( 1, HBL, NPROW, MYROW, IAFIRST, LOCALM, ICOL1 )
618 ICOL1 = NUMROC( MIN( M+3, I ), HBL, MYROW, IAFIRST, NPROW )
622 ISTARTROW = MOD( ( M+1 ) / HBL, NPROW ) + IAFIRST
623 ISTARTCOL = MOD( ( M+1 ) / HBL, NPCOL ) + JAFIRST
625 CALL INFOG1L( M, HBL, NPROW, MYROW, IAFIRST, II, ITMP2 )
626 CALL INFOG1L( M, HBL, NPCOL, MYCOL, JAFIRST, JJ, ITMP2 )
627 CALL INFOG1L( 1, HBL, NPROW, MYROW, IAFIRST, ISTOP,
629 KP2ROW( 1 ) = NUMROC( M+2, HBL, MYROW, IAFIRST, NPROW )
630 CALL INFOG1L( 1, HBL, NPCOL, MYCOL, JAFIRST, ISTOP,
632 KP2COL( 1 ) = NUMROC( M+2, HBL, MYCOL, JAFIRST, NPCOL )
653 ISTOP = MIN( M+ROTN-1-MOD( M-( M / HBL )*HBL-1, ROTN ),
655 ISTOP = MIN( ISTOP, M+HBL-3-MOD( M-1, HBL ) )
656 ISTOP = MIN( ISTOP, I2-2 )
657 ISTOP = MAX( ISTOP, M )
658.EQ..AND.
IF( ( MOD( M-1, HBL )HBL-2 )
659.LT.
$ ( ISTOPMIN( I-2, I2-2 ) ) ) THEN
663 ICURROW( KI ) = ISTARTROW
664 ICURCOL( KI ) = ISTARTCOL
668 $ KP2ROW( KI ) = KP2ROW( 1 )
670 $ KP2COL( KI ) = KP2COL( 1 )
680 CALL PCLAWIL( ITMP1, ITMP2, M, A, DESCA, H44, H33, H43H34,
689.LE.
IF( K2( IBULGE )I-1 ) THEN
691.GE..AND..LT.
IF( ( K1( IBULGE )M+5 ) ( IBULGENBULGE ) )
693.EQ.
IF( ( MOD( K2( IBULGE )+2, HBL )MOD( K2( IBULGE+1 )+
694.AND..LE.
$ 2, HBL ) ) ( K1( 1 )I-1 ) ) THEN
695 H44 = S1( 2*JBLK-2*IBULGE, 2*JBLK-2*IBULGE )
696 H33 = S1( 2*JBLK-2*IBULGE-1, 2*JBLK-2*IBULGE-1 )
697 H43H34 = S1( 2*JBLK-2*IBULGE-1, 2*JBLK-2*IBULGE )*
698 $ S1( 2*JBLK-2*IBULGE, 2*JBLK-2*IBULGE-1 )
701 CALL PCLAWIL( ITMP1, ITMP2, M, A, DESCA, H44, H33,
717 DO 120 KI = 1, IBULGE
719 ISTART = MAX( K1( KI ), M )
720 ISTOP = MIN( K2( KI ), I-1 )
722 MODKM1 = MOD( K-1, HBL )
723.GE..AND..LE.
IF( ( MODKM1HBL-2 ) ( KI-1 ) ) THEN
726 SMALLA(ITMP1, ITMP2, KI) = ZERO
729.EQ..AND..LT.
IF( ( MODKM1HBL-2 ) ( KI-1 ) ) THEN
733 ITMP1 = ICURROW( KI )
734 ITMP2 = ICURCOL( KI )
735 CALL PCLACP3( MIN( 6, N-K+2 ), K-1, A, DESCA,
736 $ SMALLA( 1, 1, KI ), 6, ITMP1, ITMP2,
739.EQ.
IF( MODKM1HBL-1 ) THEN
743 CALL INFOG2L( K+1, K+1, DESCA, NPROW, NPCOL, MYROW,
744 $ MYCOL, IROW1, ICOL1, ITMP1, ITMP2 )
745 CALL PCLACP3( MIN( 6, N-K+3 ), K-2, A, DESCA,
746 $ SMALLA( 1, 1, KI ), 6, ITMP1, ITMP2,
786.EQ..AND.
IF( ( MYROWICURROW( KI ) )
787.EQ..AND.
$ ( MYCOLICURCOL( KI ) )
788.EQ..AND.
$ ( MODKM1HBL-2 )
789.LT.
$ ( ISTARTMIN( I-1, ISTOP+1 ) ) ) THEN
793 CALL CCOPY( NR, SMALLA( 2, 1, KI ), 1, VCOPY, 1 )
799 CALL CLARFG( NR, VCOPY( 1 ), VCOPY( 2 ), 1, T1COPY )
801 SMALLA( 2, 1, KI ) = VCOPY( 1 )
802 SMALLA( 3, 1, KI ) = ZERO
804 $ SMALLA( 4, 1, KI ) = ZERO
805.GT.
ELSE IF( ML ) THEN
809 SMALLA( 2, 1, KI ) = SMALLA( 2, 1, KI ) -
815 WORK( VECSIDX+( K-1 )*3+1 ) = VCOPY( 2 )
816 WORK( VECSIDX+( K-1 )*3+2 ) = VCOPY( 3 )
817 WORK( VECSIDX+( K-1 )*3+3 ) = T1COPY
825 ITMP1 = MIN( 6, I2+2-K )
826 ITMP2 = MAX( I1-K+2, 1 )
828 SUM = CONJG( T1 )*SMALLA( 2, J, KI ) +
829 $ CONJG( T2 )*SMALLA( 3, J, KI ) +
830 $ CONJG( T3 )*SMALLA( 4, J, KI )
831 SMALLA( 2, J, KI ) = SMALLA( 2, J, KI ) - SUM
832 SMALLA( 3, J, KI ) = SMALLA( 3, J, KI ) - SUM*V2
833 SMALLA( 4, J, KI ) = SMALLA( 4, J, KI ) - SUM*V3
836 SUM = T1*SMALLA( J, 2, KI ) +
837 $ T2*SMALLA( J, 3, KI ) +
838 $ T3*SMALLA( J, 4, KI )
839 SMALLA( J, 2, KI ) = SMALLA( J, 2, KI ) - SUM
840 SMALLA( J, 3, KI ) = SMALLA( J, 3, KI ) -
842 SMALLA( J, 4, KI ) = SMALLA( J, 4, KI ) -
848.EQ..AND.
IF( ( MOD( ISTOP-1, HBL )HBL-1 )
849.EQ..AND.
$ ( MYROWICURROW( KI ) )
850.EQ..AND.
$ ( MYCOLICURCOL( KI ) )
851.LE.
$ ( ISTARTMIN( I, ISTOP ) ) ) THEN
855 CALL CCOPY( NR, SMALLA( 3, 2, KI ), 1, VCOPY, 1 )
861 CALL CLARFG( NR, VCOPY( 1 ), VCOPY( 2 ), 1, T1COPY )
863 SMALLA( 3, 2, KI ) = VCOPY( 1 )
864 SMALLA( 4, 2, KI ) = ZERO
866 $ SMALLA( 5, 2, KI ) = ZERO
870.GT..AND..GT.
IF( ( K-2M ) ( MOD( K-1, HBL )1 ) )
872 H11 = SMALLA( 1, 1, KI )
873 H10 = SMALLA( 2, 1, KI )
874 H22 = SMALLA( 2, 2, KI )
875 S = CABS1( H11 ) + CABS1( H22 )
876.LE.
IF( CABS1( H10 )MAX( ULP*S, SMLNUM ) ) THEN
877 SMALLA( 2, 1, KI ) = ZERO
880.GT.
ELSE IF( ML ) THEN
884 SMALLA( 3, 2, KI ) = SMALLA( 3, 2, KI ) -
890 WORK( VECSIDX+( K-1 )*3+1 ) = VCOPY( 2 )
891 WORK( VECSIDX+( K-1 )*3+2 ) = VCOPY( 3 )
892 WORK( VECSIDX+( K-1 )*3+3 ) = T1COPY
900 ITMP1 = MIN( 6, I2-K+3 )
901 ITMP2 = MAX( I1-K+3, 1 )
903 SUM = CONJG( T1 )*SMALLA( 3, J, KI ) +
904 $ CONJG( T2 )*SMALLA( 4, J, KI ) +
905 $ CONJG( T3 )*SMALLA( 5, J, KI )
906 SMALLA( 3, J, KI ) = SMALLA( 3, J, KI ) - SUM
907 SMALLA( 4, J, KI ) = SMALLA( 4, J, KI ) - SUM*V2
908 SMALLA( 5, J, KI ) = SMALLA( 5, J, KI ) - SUM*V3
911 SUM = T1*SMALLA( J, 3, KI ) +
912 $ T2*SMALLA( J, 4, KI ) +
913 $ T3*SMALLA( J, 5, KI )
914 SMALLA( J, 3, KI ) = SMALLA( J, 3, KI ) - SUM
915 SMALLA( J, 4, KI ) = SMALLA( J, 4, KI ) -
917 SMALLA( J, 5, KI ) = SMALLA( J, 5, KI ) -
923.EQ..AND..LE..AND.
IF( ( MODKM10 ) ( ISTARTI-1 )
924.EQ..AND.
$ ( MYROWICURROW( KI ) )
925.EQ.
$ ( RIGHTICURCOL( KI ) ) ) THEN
935.GT.
IF( ISTARTM ) THEN
936 VCOPY( 1 ) = SMALLA( 4, 3, KI )
937 VCOPY( 2 ) = SMALLA( 5, 3, KI )
938 VCOPY( 3 ) = SMALLA( 6, 3, KI )
939 NR = MIN( 3, I-ISTART+1 )
940 CALL CLARFG( NR, VCOPY( 1 ), VCOPY( 2 ), 1,
942 A( ( ICOL1-2 )*LDA+IROW1 ) = VCOPY( 1 )
943 A( ( ICOL1-2 )*LDA+IROW1+1 ) = ZERO
944.LT.
IF( ISTARTI-1 ) THEN
945 A( ( ICOL1-2 )*LDA+IROW1+2 ) = ZERO
951 NR = MIN( 3, I-ISTART+1 )
952.EQ.
IF( NPCOL1 ) THEN
960 CALL CGERV2D( CONTXT, 3, 1, VCOPY, 3, MYROW,
963 CALL CLARFG( NR, VCOPY( 1 ), VCOPY( 2 ), 1,
969 A( ( ICOL1-2 )*LDA+IROW1 ) = A( ( ICOL1-2 )*LDA+
970 $ IROW1 )*CONJG( ONE-T1COPY )
975.EQ..AND.
IF( ( MYROWICURROW( KI ) )
976.EQ..AND.
$ ( MYCOLICURCOL( KI ) )
977.EQ..AND..EQ.
$ ( ( ( MODKM1HBL-2 ) ( ISTARTI-
978.OR..LT..AND..LE.
$ 1 ) ) ( ( MODKM1HBL-2 ) ( ISTARTI-
985 DO 110 K = ISTART, ISTOP
991.EQ.
IF( MOD( K-1, HBL )0 ) THEN
992 VCOPY( 1 ) = SMALLA( 4, 3, KI )
993 VCOPY( 2 ) = SMALLA( 5, 3, KI )
994 VCOPY( 3 ) = SMALLA( 6, 3, KI )
996 VCOPY( 1 ) = A( ( ICOL1-2 )*LDA+IROW1 )
997 VCOPY( 2 ) = A( ( ICOL1-2 )*LDA+IROW1+1 )
999 VCOPY( 3 ) = A( ( ICOL1-2 )*LDA+IROW1+2 )
1010.GT..AND..LE..AND.
IF( NPCOL1 ISTARTM
1011.EQ.
$ MOD( K-1, HBL )0 ) THEN
1012 CALL CGESD2D( CONTXT, 3, 1, VCOPY, 3, MYROW,
1015 CALL CLARFG( NR, VCOPY( 1 ), VCOPY( 2 ), 1,
1018.GT.
IF( MOD( K-1, HBL )0 ) THEN
1019 A( ( ICOL1-2 )*LDA+IROW1 ) = VCOPY( 1 )
1020 A( ( ICOL1-2 )*LDA+IROW1+1 ) = ZERO
1022 A( ( ICOL1-2 )*LDA+IROW1+2 ) = ZERO
1027.GT..AND..GT..AND.
IF( ( IROW12 ) ( ICOL12 )
1028.GT..AND.
$ ( K-2M ) ( MOD( K-1,
1029.GT.
$ HBL )1 ) ) THEN
1030 H11 = A( ( ICOL1-3 )*LDA+IROW1-2 )
1031 H10 = A( ( ICOL1-3 )*LDA+IROW1-1 )
1032 H22 = A( ( ICOL1-2 )*LDA+IROW1-1 )
1033 S = CABS1( H11 ) + CABS1( H22 )
1034.LE.
IF( CABS1( H10 )MAX( ULP*S, SMLNUM ) )
1036 A( ( ICOL1-3 )*LDA+IROW1-1 ) = ZERO
1040.GT.
ELSE IF( ML ) THEN
1041.GT.
IF( MOD( K-1, HBL )0 ) THEN
1045 A( ( ICOL1-2 )*LDA+IROW1 ) = A( ( ICOL1-2 )*
1046 $ LDA+IROW1 )*CONJG( ONE-T1COPY )
1051 WORK( VECSIDX+( K-1 )*3+1 ) = VCOPY( 2 )
1052 WORK( VECSIDX+( K-1 )*3+2 ) = VCOPY( 3 )
1053 WORK( VECSIDX+( K-1 )*3+3 ) = T1COPY
1055.LT.
IF( KISTOP ) THEN
1061 DO 90 J = ( ICOL1-1 )*LDA + IROW1,
1062 $ ( MIN( K2( KI )+1, I-1 )+ICOL1-K-1 )*
1064 SUM = CONJG( T1 )*A( J ) +
1065 $ CONJG( T2 )*A( J+1 ) +
1066 $ CONJG( T3 )*A( J+2 )
1067 A( J ) = A( J ) - SUM
1068 A( J+1 ) = A( J+1 ) - SUM*V2
1069 A( J+2 ) = A( J+2 ) - SUM*V3
1071 DO 100 J = IROW1 + 1, IROW1 + 3
1072 SUM = T1*A( ( ICOL1-1 )*LDA+J ) +
1073 $ T2*A( ICOL1*LDA+J ) +
1074 $ T3*A( ( ICOL1+1 )*LDA+J )
1075 A( ( ICOL1-1 )*LDA+J ) = A( ( ICOL1-1 )*LDA+
1077 A( ICOL1*LDA+J ) = A( ICOL1*LDA+J ) -
1079 A( ( ICOL1+1 )*LDA+J ) = A( ( ICOL1+1 )*LDA+
1080 $ J ) - SUM*CONJG( V3 )
1092 DO 130 KI = 1, IBULGE
1094 ISTART = MAX( K1( KI ), M )
1095 ISTOP = MIN( K2( KI ), I-1 )
1099.EQ..AND..GT..AND.
IF( ( MYROWICURROW( KI ) ) ( NPCOL1 )
1100.LE.
$ ( ISTARTISTOP ) ) THEN
1101.NE.
IF( MYCOLICURCOL( KI ) ) THEN
1102 CALL CGEBR2D( CONTXT, 'row
', ' ',
1103 $ 3*( ISTOP-ISTART+1 ), 1,
1104 $ WORK( VECSIDX+( ISTART-1 )*3+1 ),
1105 $ 3*( ISTOP-ISTART+1 ), MYROW,
1108 CALL CGEBS2D( CONTXT, 'row
', ' ',
1109 $ 3*( ISTOP-ISTART+1 ), 1,
1110 $ WORK( VECSIDX+( ISTART-1 )*3+1 ),
1111 $ 3*( ISTOP-ISTART+1 ) )
1118 DO 140 KI = 1, IBULGE
1120 ISTART = MAX( K1( KI ), M )
1121 ISTOP = MIN( K2( KI ), I-1 )
1123.EQ..AND..GT..AND.
IF( ( MYCOLICURCOL( KI ) ) ( NPROW1 )
1124.LE.
$ ( ISTARTISTOP ) ) THEN
1125.NE.
IF( MYROWICURROW( KI ) ) THEN
1126 CALL CGEBR2D( CONTXT, 'col
', ' ',
1127 $ 3*( ISTOP-ISTART+1 ), 1,
1128 $ WORK( VECSIDX+( ISTART-1 )*3+1 ),
1129 $ 3*( ISTOP-ISTART+1 ), ICURROW( KI ),
1132 CALL CGEBS2D( CONTXT, 'col
', ' ',
1133 $ 3*( ISTOP-ISTART+1 ), 1,
1134 $ WORK( VECSIDX+( ISTART-1 )*3+1 ),
1135 $ 3*( ISTOP-ISTART+1 ) )
1143 DO 160 KI = 1, IBULGE
1144 ISTART = MAX( K1( KI ), M )
1145 ISTOP = MIN( K2( KI ), I-1 )
1147 MODKM1 = MOD( ISTART-1, HBL )
1148.EQ..AND.
IF( ( MYROWICURROW( KI ) )
1149.EQ..AND.
$ ( MYCOLICURCOL( KI ) )
1150.EQ..AND..EQ.
$ ( ( ( MODKM1HBL-2 ) ( ISTARTI-
1151.OR..LT..AND..LE.
$ 1 ) ) ( ( MODKM1HBL-2 ) ( ISTARTI-
1158 DO 150 K = ISTART, ISTOP
1162 NR = MIN( 3, I-K+1 )
1163 V2 = WORK( VECSIDX+( K-1 )*3+1 )
1164 V3 = WORK( VECSIDX+( K-1 )*3+2 )
1165 T1 = WORK( VECSIDX+( K-1 )*3+3 )
1167.LT.
IF( KISTOP ) THEN
1172 CALL CLAREF( 'col
', A, LDA, .FALSE., Z, LDZ,
1173 $ .FALSE., ICOL1, ICOL1, ISTART,
1174 $ ISTOP, MIN( ISTART+1, I )-K+IROW1,
1175 $ IROW1, LILOZ, LIHIZ,
1176 $ WORK( VECSIDX+1 ), V2, V3, T1, T2,
1181.EQ..AND.
IF( ( NR3 ) ( MOD( K-1,
1182.LT.
$ HBL )HBL-2 ) ) THEN
1184 CALL CLAREF( 'row
', A, LDA, .FALSE., Z, LDZ,
1185 $ .FALSE., IROW1, IROW1, ISTART,
1186 $ ISTOP, ICOL1, MIN( MIN( K2( KI )
1187 $ +1, I-1 ), I2 )-K+ICOL1, LILOZ,
1188 $ LIHIZ, WORK( VECSIDX+1 ), V2,
1198 MODKM1 = MOD( K-1, HBL )
1199.GE..AND..LE.
IF( ( MODKM1HBL-2 ) ( KI-1 ) ) THEN
1200.EQ..AND..LT.
IF( ( MODKM1HBL-2 ) ( KI-1 ) ) THEN
1204 ITMP1 = ICURROW( KI )
1205 ITMP2 = ICURCOL( KI )
1206 CALL PCLACP3( MIN( 6, N-K+2 ), K-1, A, DESCA,
1207 $ SMALLA( 1, 1, KI ), 6, ITMP1, ITMP2,
1211.EQ.
IF( MODKM1HBL-1 ) THEN
1215 ITMP1 = ICURROW( KI )
1216 ITMP2 = ICURCOL( KI )
1217 CALL PCLACP3( MIN( 6, N-K+3 ), K-2, A, DESCA,
1218 $ SMALLA( 1, 1, KI ), 6, ITMP1, ITMP2,
1229 DO 180 KI = 1, IBULGE
1230.NE..AND.
IF( ( MYROWICURROW( KI ) )
1231.NE.
$ ( DOWNICURROW( KI ) ) )GO TO 180
1232 ISTART = MAX( K1( KI ), M )
1233 ISTOP = MIN( K2( KI ), I-1 )
1235.GT..AND.
IF( ( ISTOPISTART )
1236.LT..AND.
$ ( MOD( ISTART-1, HBL )HBL-2 )
1237.EQ.
$ ( ICURROW( KI )MYROW ) ) THEN
1238 IROW1 = MIN( K2( KI )+1, I-1 ) + 1
1239 CALL INFOG1L( IROW1, HBL, NPCOL, MYCOL, JAFIRST,
1243 CALL CLAREF( 'row
', A, LDA, WANTZ, Z, LDZ, .TRUE., II,
1244 $ II, ISTART, ISTOP, ITMP1, ITMP2, LILOZ,
1245 $ LIHIZ, WORK( VECSIDX+1 ), V2, V3, T1, T2,
1250 DO 220 KI = 1, IBULGE
1251.GT.
IF( KROW( KI )KP2ROW( KI ) )
1253.NE..AND.
IF( ( MYROWICURROW( KI ) )
1254.NE.
$ ( DOWNICURROW( KI ) ) )GO TO 220
1255 ISTART = MAX( K1( KI ), M )
1256 ISTOP = MIN( K2( KI ), I-1 )
1257.EQ..OR.
IF( ( ISTARTISTOP )
1258.GE..OR.
$ ( MOD( ISTART-1, HBL )HBL-2 )
1259.NE.
$ ( ICURROW( KI )MYROW ) ) THEN
1260 DO 210 K = ISTART, ISTOP
1261 V2 = WORK( VECSIDX+( K-1 )*3+1 )
1262 V3 = WORK( VECSIDX+( K-1 )*3+2 )
1263 T1 = WORK( VECSIDX+( K-1 )*3+3 )
1264 NR = MIN( 3, I-K+1 )
1265.EQ..AND..LE.
IF( ( NR3 ) ( KROW( KI )
1266 $ KP2ROW( KI ) ) ) THEN
1267.LT..AND.
IF( ( KISTOP )
1268.LT.
$ ( MOD( K-1, HBL )HBL-2 ) ) THEN
1269 ITMP1 = MIN( K2( KI )+1, I-1 ) + 1
1271.LT.
IF( MOD( K-1, HBL )HBL-2 ) THEN
1272 ITMP1 = MIN( K2( KI )+1, I-1 ) + 1
1274.EQ.
IF( MOD( K-1, HBL )HBL-2 ) THEN
1275 ITMP1 = MIN( K+4, I2 ) + 1
1277.EQ.
IF( MOD( K-1, HBL )HBL-1 ) THEN
1278 ITMP1 = MIN( K+3, I2 ) + 1
1285 IROW2 = KP2ROW( KI )
1286.GT..AND.
IF( ( KISTART )
1287.GE.
$ ( MOD( K-1, HBL )HBL-2 ) ) THEN
1288.EQ.
IF( DOWNICURROW( KI ) ) THEN
1291.EQ.
IF( MYROWICURROW( KI ) ) THEN
1295 CALL INFOG1L( ITMP1, HBL, NPCOL, MYCOL, JAFIRST,
1298.LT..OR.
IF( ( MOD( K-1, HBL )HBL-2 )
1299.EQ.
$ ( NPROW1 ) ) THEN
1302 CALL CLAREF( 'row
', A, LDA, WANTZ, Z, LDZ,
1303 $ .FALSE., IROW1, IROW1, ISTART,
1304 $ ISTOP, ICOL1, ICOL2, LILOZ,
1305 $ LIHIZ, WORK( VECSIDX+1 ), V2,
1308.EQ..AND.
IF( ( MOD( K-1, HBL )HBL-2 )
1309.GT.
$ ( NPROW1 ) ) THEN
1310.NE.
IF( IROW1IROW2 ) THEN
1311 CALL CGESD2D( CONTXT, 2, ICOL2-ICOL1+1,
1312 $ A( ( ICOL1-1 )*LDA+IROW1 ),
1313 $ LDA, DOWN, MYCOL )
1314.AND..EQ.
IF( SKIP ( ISTARTISTOP ) ) THEN
1315 CALL CGERV2D( CONTXT, 2, ICOL2-ICOL1+1,
1316 $ A( ( ICOL1-1 )*LDA+
1317 $ IROW1 ), LDA, DOWN,
1320 ELSE IF( SKIP ) THEN
1321 CALL CGERV2D( CONTXT, 2, ICOL2-ICOL1+1,
1322 $ WORK( IRBUF+1 ), 2, UP,
1326 DO 190 J = ICOL1, ICOL2
1328 $ WORK( IRBUF+2*( J-ICOL1 )+1 ) +
1329 $ CONJG( T2 )*WORK( IRBUF+2*
1331 $ CONJG( T3 )*A( ( J-1 )*LDA+
1333 WORK( IRBUF+2*( J-ICOL1 )+1 )
1334 $ = WORK( IRBUF+2*( J-ICOL1 )+1 ) -
1336 WORK( IRBUF+2*( J-ICOL1 )+2 )
1337 $ = WORK( IRBUF+2*( J-ICOL1 )+2 ) -
1339 A( ( J-1 )*LDA+IROW1 ) = A( ( J-1 )*
1340 $ LDA+IROW1 ) - SUM*V3
1342.EQ.
IF( ISTARTISTOP ) THEN
1343 CALL CGESD2D( CONTXT, 2, ICOL2-ICOL1+1,
1344 $ WORK( IRBUF+1 ), 2, UP,
1349.EQ..AND.
IF( ( MOD( K-1, HBL )HBL-1 )
1350.GT.
$ ( NPROW1 ) ) THEN
1351.EQ.
IF( IROW1IROW2 ) THEN
1352.EQ.
IF( ISTARTISTOP ) THEN
1353 CALL CGESD2D( CONTXT, 2, ICOL2-ICOL1+1,
1354 $ A( ( ICOL1-1 )*LDA+IROW1-
1355 $ 1 ), LDA, DOWN, MYCOL )
1358 CALL CGERV2D( CONTXT, 2, ICOL2-ICOL1+1,
1359 $ A( ( ICOL1-1 )*LDA+IROW1-
1360 $ 1 ), LDA, DOWN, MYCOL )
1362 ELSE IF( SKIP ) THEN
1363.EQ.
IF( ISTARTISTOP ) THEN
1364 CALL CGERV2D( CONTXT, 2, ICOL2-ICOL1+1,
1365 $ WORK( IRBUF+1 ), 2, UP,
1370 DO 200 J = ICOL1, ICOL2
1372 $ WORK( IRBUF+2*( J-ICOL1 )+2 ) +
1373 $ CONJG( T2 )*A( ( J-1 )*LDA+
1374 $ IROW1 ) + CONJG( T3 )*
1375 $ A( ( J-1 )*LDA+IROW1+1 )
1376 WORK( IRBUF+2*( J-ICOL1 )+2 )
1377 $ = WORK( IRBUF+2*( J-ICOL1 )+2 ) -
1379 A( ( J-1 )*LDA+IROW1 ) = A( ( J-1 )*
1380 $ LDA+IROW1 ) - SUM*V2
1381 A( ( J-1 )*LDA+IROW1+1 ) = A( ( J-1 )*
1382 $ LDA+IROW1+1 ) - SUM*V3
1384 CALL CGESD2D( CONTXT, 2, ICOL2-ICOL1+1,
1385 $ WORK( IRBUF+1 ), 2, UP,
1398 DO 260 KI = 1, IBULGE
1399.GT.
IF( KROW( KI )KP2ROW( KI ) )
1401.NE..AND.
IF( ( MYROWICURROW( KI ) )
1402.NE.
$ ( DOWNICURROW( KI ) ) )GO TO 260
1403 ISTART = MAX( K1( KI ), M )
1404 ISTOP = MIN( K2( KI ), I-1 )
1405.EQ..OR.
IF( ( ISTARTISTOP )
1406.GE..OR.
$ ( MOD( ISTART-1, HBL )HBL-2 )
1407.NE.
$ ( ICURROW( KI )MYROW ) ) THEN
1408 DO 250 K = ISTART, ISTOP
1409 V2 = WORK( VECSIDX+( K-1 )*3+1 )
1410 V3 = WORK( VECSIDX+( K-1 )*3+2 )
1411 T1 = WORK( VECSIDX+( K-1 )*3+3 )
1412 NR = MIN( 3, I-K+1 )
1413.EQ..AND..LE.
IF( ( NR3 ) ( KROW( KI )
1414 $ KP2ROW( KI ) ) ) THEN
1415.LT..AND.
IF( ( KISTOP )
1416.LT.
$ ( MOD( K-1, HBL )HBL-2 ) ) THEN
1417 ITMP1 = MIN( K2( KI )+1, I-1 ) + 1
1419.LT.
IF( MOD( K-1, HBL )HBL-2 ) THEN
1420 ITMP1 = MIN( K2( KI )+1, I-1 ) + 1
1422.EQ.
IF( MOD( K-1, HBL )HBL-2 ) THEN
1423 ITMP1 = MIN( K+4, I2 ) + 1
1425.EQ.
IF( MOD( K-1, HBL )HBL-1 ) THEN
1426 ITMP1 = MIN( K+3, I2 ) + 1
1433 IROW2 = KP2ROW( KI )
1434.GT..AND.
IF( ( KISTART )
1435.GE.
$ ( MOD( K-1, HBL )HBL-2 ) ) THEN
1436.EQ.
IF( DOWNICURROW( KI ) ) THEN
1439.EQ.
IF( MYROWICURROW( KI ) ) THEN
1443 CALL INFOG1L( ITMP1, HBL, NPCOL, MYCOL, JAFIRST,
1446.EQ..AND.
IF( ( MOD( K-1, HBL )HBL-2 )
1447.GT.
$ ( NPROW1 ) ) THEN
1448.EQ.
IF( IROW1IROW2 ) THEN
1449 CALL CGERV2D( CONTXT, 2, ICOL2-ICOL1+1,
1450 $ WORK( IRBUF+1 ), 2, UP,
1454 DO 230 J = ICOL1, ICOL2
1456 $ WORK( IRBUF+2*( J-ICOL1 )+1 ) +
1457 $ CONJG( T2 )*WORK( IRBUF+2*
1459 $ CONJG( T3 )*A( ( J-1 )*LDA+
1461 WORK( IRBUF+2*( J-ICOL1 )+1 )
1462 $ = WORK( IRBUF+2*( J-ICOL1 )+1 ) -
1464 WORK( IRBUF+2*( J-ICOL1 )+2 )
1465 $ = WORK( IRBUF+2*( J-ICOL1 )+2 ) -
1467 A( ( J-1 )*LDA+IROW1 ) = A( ( J-1 )*
1468 $ LDA+IROW1 ) - SUM*V3
1470.EQ.
IF( ISTARTISTOP ) THEN
1471 CALL CGESD2D( CONTXT, 2, ICOL2-ICOL1+1,
1472 $ WORK( IRBUF+1 ), 2, UP,
1477.EQ..AND.
IF( ( MOD( K-1, HBL )HBL-1 )
1478.GT.
$ ( NPROW1 ) ) THEN
1479.NE.
IF( IROW1IROW2 ) THEN
1480.EQ.
IF( ISTARTISTOP ) THEN
1481 CALL CGERV2D( CONTXT, 2, ICOL2-ICOL1+1,
1482 $ WORK( IRBUF+1 ), 2, UP,
1487 DO 240 J = ICOL1, ICOL2
1489 $ WORK( IRBUF+2*( J-ICOL1 )+2 ) +
1490 $ CONJG( T2 )*A( ( J-1 )*LDA+
1491 $ IROW1 ) + CONJG( T3 )*
1492 $ A( ( J-1 )*LDA+IROW1+1 )
1493 WORK( IRBUF+2*( J-ICOL1 )+2 )
1494 $ = WORK( IRBUF+2*( J-ICOL1 )+2 ) -
1496 A( ( J-1 )*LDA+IROW1 ) = A( ( J-1 )*
1497 $ LDA+IROW1 ) - SUM*V2
1498 A( ( J-1 )*LDA+IROW1+1 ) = A( ( J-1 )*
1499 $ LDA+IROW1+1 ) - SUM*V3
1501 CALL CGESD2D( CONTXT, 2, ICOL2-ICOL1+1,
1502 $ WORK( IRBUF+1 ), 2, UP,
1511 DO 280 KI = 1, IBULGE
1512.GT.
IF( KROW( KI )KP2ROW( KI ) )
1514.NE..AND.
IF( ( MYROWICURROW( KI ) )
1515.NE.
$ ( DOWNICURROW( KI ) ) )GO TO 280
1516 ISTART = MAX( K1( KI ), M )
1517 ISTOP = MIN( K2( KI ), I-1 )
1518.EQ..OR.
IF( ( ISTARTISTOP )
1519.GE..OR.
$ ( MOD( ISTART-1, HBL )HBL-2 )
1520.NE.
$ ( ICURROW( KI )MYROW ) ) THEN
1521 DO 270 K = ISTART, ISTOP
1522 V2 = WORK( VECSIDX+( K-1 )*3+1 )
1523 V3 = WORK( VECSIDX+( K-1 )*3+2 )
1524 T1 = WORK( VECSIDX+( K-1 )*3+3 )
1525 NR = MIN( 3, I-K+1 )
1526.EQ..AND..LE.
IF( ( NR3 ) ( KROW( KI )
1527 $ KP2ROW( KI ) ) ) THEN
1528.LT..AND.
IF( ( KISTOP )
1529.LT.
$ ( MOD( K-1, HBL )HBL-2 ) ) THEN
1530 ITMP1 = MIN( K2( KI )+1, I-1 ) + 1
1532.LT.
IF( MOD( K-1, HBL )HBL-2 ) THEN
1533 ITMP1 = MIN( K2( KI )+1, I-1 ) + 1
1535.EQ.
IF( MOD( K-1, HBL )HBL-2 ) THEN
1536 ITMP1 = MIN( K+4, I2 ) + 1
1538.EQ.
IF( MOD( K-1, HBL )HBL-1 ) THEN
1539 ITMP1 = MIN( K+3, I2 ) + 1
1546 IROW2 = KP2ROW( KI )
1547.GT..AND.
IF( ( KISTART )
1548.GE.
$ ( MOD( K-1, HBL )HBL-2 ) ) THEN
1549.EQ.
IF( DOWNICURROW( KI ) ) THEN
1552.EQ.
IF( MYROWICURROW( KI ) ) THEN
1556 CALL INFOG1L( ITMP1, HBL, NPCOL, MYCOL, JAFIRST,
1559.EQ..AND.
IF( ( MOD( K-1, HBL )HBL-2 )
1560.GT.
$ ( NPROW1 ) ) THEN
1561.NE.
IF( IROW1IROW2 ) THEN
1562.EQ.
IF( ISTARTISTOP ) THEN
1563 CALL CGERV2D( CONTXT, 2, ICOL2-ICOL1+1,
1564 $ A( ( ICOL1-1 )*LDA+
1565 $ IROW1 ), LDA, DOWN,
1570.EQ..AND.
IF( ( MOD( K-1, HBL )HBL-1 )
1571.GT.
$ ( NPROW1 ) ) THEN
1572.EQ.
IF( IROW1IROW2 ) THEN
1573 CALL CGERV2D( CONTXT, 2, ICOL2-ICOL1+1,
1574 $ A( ( ICOL1-1 )*LDA+IROW1-
1575 $ 1 ), LDA, DOWN, MYCOL )
1587 DO 300 KI = 1, IBULGE
1588.NE..AND.
IF( ( MYCOLICURCOL( KI ) )
1589.NE.
$ ( RIGHTICURCOL( KI ) ) )GO TO 300
1590 ISTART = MAX( K1( KI ), M )
1591 ISTOP = MIN( K2( KI ), I-1 )
1593.LT..OR..EQ.
IF( ( ( MOD( ISTART-1, HBL )HBL-2 ) ( NPCOL
1594.AND..EQ..AND.
$ 1 ) ) ( ICURCOL( KI )MYCOL )
1595.GE.
$ ( I-ISTOP+13 ) ) THEN
1597.LT..AND.
IF( ( KISTOP ) ( MOD( K-1,
1598.LT.
$ HBL )HBL-2 ) ) THEN
1599 ITMP1 = MIN( ISTART+1, I ) - 1
1601.LT.
IF( MOD( K-1, HBL )HBL-2 ) THEN
1602 ITMP1 = MIN( K+3, I )
1604.EQ.
IF( MOD( K-1, HBL )HBL-2 ) THEN
1605 ITMP1 = MAX( I1, K-1 ) - 1
1607.EQ.
IF( MOD( K-1, HBL )HBL-1 ) THEN
1608 ITMP1 = MAX( I1, K-2 ) - 1
1613 CALL INFOG1L( I1, HBL, NPROW, MYROW, IAFIRST, IROW1,
1615 IROW2 = NUMROC( ITMP1, HBL, MYROW, IAFIRST, NPROW )
1616.LE.
IF( IROW1IROW2 ) THEN
1621 CALL CLAREF( 'col
', A, LDA, WANTZ, Z, LDZ, .TRUE.,
1622 $ ICOL1, ICOL1, ISTART, ISTOP, IROW1,
1623 $ IROW2, LILOZ, LIHIZ, WORK( VECSIDX+1 ),
1624 $ V2, V3, T1, T2, T3 )
1626.LT.
IF( MOD( K-1, HBL )HBL-2 ) THEN
1630.LT.
IF( MOD( K-1, HBL )HBL-3 ) THEN
1632.EQ.
IF( MOD( ( ITMP1 / HBL ), NPROW )MYROW )
1634.GT.
IF( ITMP20 ) THEN
1635 IROW2 = ITMP2 + MIN( K+3, I ) - ITMP1
1643 CALL INFOG1L( ITMP1+1, HBL, NPROW, MYROW,
1644 $ IAFIRST, IROW1, IROW2 )
1645 IROW2 = NUMROC( MIN( K+3, I ), HBL, MYROW,
1648 V2 = WORK( VECSIDX+( K-1 )*3+1 )
1649 V3 = WORK( VECSIDX+( K-1 )*3+2 )
1650 T1 = WORK( VECSIDX+( K-1 )*3+3 )
1653 ICOL1 = KCOL( KI ) + ISTOP - ISTART
1654 CALL CLAREF( 'col
', A, LDA, .FALSE., Z, LDZ,
1655 $ .FALSE., ICOL1, ICOL1, ISTART, ISTOP,
1656 $ IROW1, IROW2, LILOZ, LIHIZ,
1657 $ WORK( VECSIDX+1 ), V2, V3, T1, T2,
1663 DO 360 KI = 1, IBULGE
1664.GT.
IF( KCOL( KI )KP2COL( KI ) )
1666.NE..AND.
IF( ( MYCOLICURCOL( KI ) )
1667.NE.
$ ( RIGHTICURCOL( KI ) ) )GO TO 360
1668 ISTART = MAX( K1( KI ), M )
1669 ISTOP = MIN( K2( KI ), I-1 )
1670.GE.
IF( MOD( ISTART-1, HBL )HBL-2 ) THEN
1681 DO 350 K = ISTART, ISTOP
1683 V2 = WORK( VECSIDX+( K-1 )*3+1 )
1684 V3 = WORK( VECSIDX+( K-1 )*3+2 )
1685 T1 = WORK( VECSIDX+( K-1 )*3+3 )
1686 NR = MIN( 3, I-K+1 )
1687.EQ..AND..LE.
IF( ( NR3 ) ( KCOL( KI )KP2COL( KI ) ) )
1690.LT..AND.
IF( ( KISTOP )
1691.LT.
$ ( MOD( K-1, HBL )HBL-2 ) ) THEN
1692 ITMP1 = MIN( ISTART+1, I ) - 1
1694.LT.
IF( MOD( K-1, HBL )HBL-2 ) THEN
1695 ITMP1 = MIN( K+3, I )
1697.EQ.
IF( MOD( K-1, HBL )HBL-2 ) THEN
1698 ITMP1 = MAX( I1, K-1 ) - 1
1700.EQ.
IF( MOD( K-1, HBL )HBL-1 ) THEN
1701 ITMP1 = MAX( I1, K-2 ) - 1
1704.LT.
IF( MOD( K-1, HBL )HBL-2 ) THEN
1705 ICOL1 = KCOL( KI ) + K - ISTART
1706 ICOL2 = KP2COL( KI ) + K - ISTART
1709 ICOL2 = KP2COL( KI )
1710.GT.
IF( KISTART ) THEN
1711.EQ.
IF( RIGHTICURCOL( KI ) ) THEN
1714.EQ.
IF( MYCOLICURCOL( KI ) ) THEN
1719 CALL INFOG1L( I1, HBL, NPROW, MYROW, IAFIRST,
1721 IROW2 = NUMROC( ITMP1, HBL, MYROW, IAFIRST, NPROW )
1722.EQ..AND.
IF( ( MOD( K-1, HBL )HBL-2 )
1723.GT.
$ ( NPCOL1 ) ) THEN
1724.NE.
IF( ICOL1ICOL2 ) THEN
1725 CALL CGESD2D( CONTXT, IROW2-IROW1+1, 2,
1726 $ A( ( ICOL1-1 )*LDA+IROW1 ),
1727 $ LDA, MYROW, RIGHT )
1728.EQ..AND.
IF( ( ISTARTISTOP ) SKIP ) THEN
1729 CALL CGERV2D( CONTXT, IROW2-IROW1+1, 2,
1730 $ A( ( ICOL1-1 )*LDA+IROW1 ),
1731 $ LDA, MYROW, RIGHT )
1733 ELSE IF( SKIP ) THEN
1736 CALL CGERV2D( CONTXT, IROW2-IROW1+1, 2,
1737 $ WORK( ICBUF+1 ), IROW2-IROW1+1,
1739 II = ICBUF - IROW1 + 1
1740 JJ = ICBUF + IROW2 - 2*IROW1 + 2
1741 DO 310 J = IROW1, IROW2
1742 SUM = T1*WORK( II+J ) + T2*WORK( JJ+J ) +
1743 $ T3*A( ( ICOL1-1 )*LDA+J )
1744 WORK( II+J ) = WORK( II+J ) - SUM
1745 WORK( JJ+J ) = WORK( JJ+J ) -
1747 A( ( ICOL1-1 )*LDA+J ) = A( ( ICOL1-1 )*
1748 $ LDA+J ) - SUM*CONJG( V3 )
1750.EQ.
IF( ISTARTISTOP ) THEN
1751 CALL CGESD2D( CONTXT, IROW2-IROW1+1, 2,
1753 $ IROW2-IROW1+1, MYROW, LEFT )
1757.EQ..AND.
IF( ( MOD( K-1, HBL )HBL-1 )
1758.GT.
$ ( NPCOL1 ) ) THEN
1759.EQ.
IF( ICOL1ICOL2 ) THEN
1760.EQ.
IF( ISTARTISTOP ) THEN
1761 CALL CGESD2D( CONTXT, IROW2-IROW1+1, 2,
1762 $ A( ( ICOL1-2 )*LDA+IROW1 ),
1763 $ LDA, MYROW, RIGHT )
1766 CALL CGERV2D( CONTXT, IROW2-IROW1+1, 2,
1767 $ A( ( ICOL1-2 )*LDA+IROW1 ),
1768 $ LDA, MYROW, RIGHT )
1770 ELSE IF( SKIP ) THEN
1771.EQ.
IF( ISTARTISTOP ) THEN
1772 CALL CGERV2D( CONTXT, IROW2-IROW1+1, 2,
1774 $ IROW2-IROW1+1, MYROW, LEFT )
1778 II = ICBUF + IROW2 - 2*IROW1 + 2
1779 DO 320 J = IROW1, IROW2
1780 SUM = T1*WORK( J+II ) +
1781 $ T2*A( ( ICOL1-1 )*LDA+J ) +
1782 $ T3*A( ICOL1*LDA+J )
1783 WORK( J+II ) = WORK( J+II ) - SUM
1784 A( ( ICOL1-1 )*LDA+J ) = A( ( ICOL1-1 )*
1785 $ LDA+J ) - SUM*CONJG( V2 )
1786 A( ICOL1*LDA+J ) = A( ICOL1*LDA+J ) -
1789 CALL CGESD2D( CONTXT, IROW2-IROW1+1, 2,
1790 $ WORK( ICBUF+1 ), IROW2-IROW1+1,
1797.AND.
IF( ( WANTZ ) ( MOD( K-1,
1798.GE..AND..GT.
$ HBL )HBL-2 ) ( NPCOL1 ) ) THEN
1804.EQ.
IF( MOD( K-1, HBL )HBL-2 ) THEN
1805.NE.
IF( ICOL1ICOL2 ) THEN
1806 CALL CGESD2D( CONTXT, IROW2-IROW1+1, 2,
1807 $ Z( ( ICOL1-1 )*LDZ+IROW1 ),
1808 $ LDZ, MYROW, RIGHT )
1809.EQ..AND.
IF( ( ISTARTISTOP ) SKIP ) THEN
1810 CALL CGERV2D( CONTXT, IROW2-IROW1+1, 2,
1811 $ Z( ( ICOL1-1 )*LDZ+
1812 $ IROW1 ), LDZ, MYROW,
1815 ELSE IF( SKIP ) THEN
1816 CALL CGERV2D( CONTXT, IROW2-IROW1+1, 2,
1818 $ IROW2-IROW1+1, MYROW, LEFT )
1821 ICOL1 = ( ICOL1-1 )*LDZ
1822 II = IZBUF - IROW1 + 1
1823 JJ = IZBUF + IROW2 - 2*IROW1 + 2
1824 DO 330 J = IROW1, IROW2
1825 SUM = T1*WORK( II+J ) +
1826 $ T2*WORK( JJ+J ) + T3*Z( ICOL1+J )
1827 WORK( II+J ) = WORK( II+J ) - SUM
1828 WORK( JJ+J ) = WORK( JJ+J ) -
1830 Z( ICOL1+J ) = Z( ICOL1+J ) -
1833.EQ.
IF( ISTARTISTOP ) THEN
1834 CALL CGESD2D( CONTXT, IROW2-IROW1+1, 2,
1836 $ IROW2-IROW1+1, MYROW,
1841.EQ.
IF( MOD( K-1, HBL )HBL-1 ) THEN
1842.EQ.
IF( ICOL1ICOL2 ) THEN
1843.EQ.
IF( ISTARTISTOP ) THEN
1844 CALL CGESD2D( CONTXT, IROW2-IROW1+1, 2,
1845 $ Z( ( ICOL1-2 )*LDZ+
1846 $ IROW1 ), LDZ, MYROW,
1850 CALL CGERV2D( CONTXT, IROW2-IROW1+1, 2,
1851 $ Z( ( ICOL1-2 )*LDZ+
1852 $ IROW1 ), LDZ, MYROW,
1855 ELSE IF( SKIP ) THEN
1856.EQ.
IF( ISTARTISTOP ) THEN
1857 CALL CGERV2D( CONTXT, IROW2-IROW1+1, 2,
1859 $ IROW2-IROW1+1, MYROW,
1864 ICOL1 = ( ICOL1-1 )*LDZ
1865 II = IZBUF + IROW2 - 2*IROW1 + 2
1866 DO 340 J = IROW1, IROW2
1867 SUM = T1*WORK( II+J ) +
1869 $ T3*Z( J+ICOL1+LDZ )
1870 WORK( II+J ) = WORK( II+J ) - SUM
1871 Z( J+ICOL1 ) = Z( J+ICOL1 ) -
1873 Z( J+ICOL1+LDZ ) = Z( J+ICOL1+LDZ ) -
1876 CALL CGESD2D( CONTXT, IROW2-IROW1+1, 2,
1878 $ IROW2-IROW1+1, MYROW, LEFT )
1889 DO 420 KI = 1, IBULGE
1890.GT.
IF( KCOL( KI )KP2COL( KI ) )
1892.NE..AND.
IF( ( MYCOLICURCOL( KI ) )
1893.NE.
$ ( RIGHTICURCOL( KI ) ) )GO TO 420
1894 ISTART = MAX( K1( KI ), M )
1895 ISTOP = MIN( K2( KI ), I-1 )
1896.GE.
IF( MOD( ISTART-1, HBL )HBL-2 ) THEN
1907 DO 410 K = ISTART, ISTOP
1909 V2 = WORK( VECSIDX+( K-1 )*3+1 )
1910 V3 = WORK( VECSIDX+( K-1 )*3+2 )
1911 T1 = WORK( VECSIDX+( K-1 )*3+3 )
1912 NR = MIN( 3, I-K+1 )
1913.EQ..AND..LE.
IF( ( NR3 ) ( KCOL( KI )KP2COL( KI ) ) )
1916.LT..AND.
IF( ( KISTOP )
1917.LT.
$ ( MOD( K-1, HBL )HBL-2 ) ) THEN
1918 ITMP1 = MIN( ISTART+1, I ) - 1
1920.LT.
IF( MOD( K-1, HBL )HBL-2 ) THEN
1921 ITMP1 = MIN( K+3, I )
1923.EQ.
IF( MOD( K-1, HBL )HBL-2 ) THEN
1924 ITMP1 = MAX( I1, K-1 ) - 1
1926.EQ.
IF( MOD( K-1, HBL )HBL-1 ) THEN
1927 ITMP1 = MAX( I1, K-2 ) - 1
1930.LT.
IF( MOD( K-1, HBL )HBL-2 ) THEN
1931 ICOL1 = KCOL( KI ) + K - ISTART
1932 ICOL2 = KP2COL( KI ) + K - ISTART
1935 ICOL2 = KP2COL( KI )
1936.GT.
IF( KISTART ) THEN
1937.EQ.
IF( RIGHTICURCOL( KI ) ) THEN
1940.EQ.
IF( MYCOLICURCOL( KI ) ) THEN
1945 CALL INFOG1L( I1, HBL, NPROW, MYROW, IAFIRST,
1947 IROW2 = NUMROC( ITMP1, HBL, MYROW, IAFIRST, NPROW )
1948.EQ..AND.
IF( ( MOD( K-1, HBL )HBL-2 )
1949.GT.
$ ( NPCOL1 ) ) THEN
1950.EQ.
IF( ICOL1ICOL2 ) THEN
1951 CALL CGERV2D( CONTXT, IROW2-IROW1+1, 2,
1952 $ WORK( ICBUF+1 ), IROW2-IROW1+1,
1956 II = ICBUF - IROW1 + 1
1957 JJ = ICBUF + IROW2 - 2*IROW1 + 2
1958 DO 370 J = IROW1, IROW2
1959 SUM = T1*WORK( II+J ) + T2*WORK( JJ+J ) +
1960 $ T3*A( ( ICOL1-1 )*LDA+J )
1961 WORK( II+J ) = WORK( II+J ) - SUM
1962 WORK( JJ+J ) = WORK( JJ+J ) -
1964 A( ( ICOL1-1 )*LDA+J ) = A( ( ICOL1-1 )*
1965 $ LDA+J ) - SUM*CONJG( V3 )
1967.EQ.
IF( ISTARTISTOP ) THEN
1968 CALL CGESD2D( CONTXT, IROW2-IROW1+1, 2,
1970 $ IROW2-IROW1+1, MYROW, LEFT )
1974.EQ..AND.
IF( ( MOD( K-1, HBL )HBL-1 )
1975.GT.
$ ( NPCOL1 ) ) THEN
1976.NE.
IF( ICOL1ICOL2 ) THEN
1977.EQ.
IF( ISTARTISTOP ) THEN
1978 CALL CGERV2D( CONTXT, IROW2-IROW1+1, 2,
1980 $ IROW2-IROW1+1, MYROW, LEFT )
1984 II = ICBUF + IROW2 - 2*IROW1 + 2
1985 DO 380 J = IROW1, IROW2
1986 SUM = T1*WORK( J+II ) +
1987 $ T2*A( ( ICOL1-1 )*LDA+J ) +
1988 $ T3*A( ICOL1*LDA+J )
1989 WORK( J+II ) = WORK( J+II ) - SUM
1990 A( ( ICOL1-1 )*LDA+J ) = A( ( ICOL1-1 )*
1991 $ LDA+J ) - SUM*CONJG( V2 )
1992 A( ICOL1*LDA+J ) = A( ICOL1*LDA+J ) -
1995 CALL CGESD2D( CONTXT, IROW2-IROW1+1, 2,
1996 $ WORK( ICBUF+1 ), IROW2-IROW1+1,
2003.AND.
IF( ( WANTZ ) ( MOD( K-1,
2004.GE..AND..GT.
$ HBL )HBL-2 ) ( NPCOL1 ) ) THEN
2010.EQ.
IF( MOD( K-1, HBL )HBL-2 ) THEN
2011.EQ.
IF( ICOL1ICOL2 ) THEN
2012 CALL CGERV2D( CONTXT, IROW2-IROW1+1, 2,
2014 $ IROW2-IROW1+1, MYROW, LEFT )
2017 ICOL1 = ( ICOL1-1 )*LDZ
2018 II = IZBUF - IROW1 + 1
2019 JJ = IZBUF + IROW2 - 2*IROW1 + 2
2020 DO 390 J = IROW1, IROW2
2021 SUM = T1*WORK( II+J ) +
2022 $ T2*WORK( JJ+J ) + T3*Z( ICOL1+J )
2023 WORK( II+J ) = WORK( II+J ) - SUM
2024 WORK( JJ+J ) = WORK( JJ+J ) -
2026 Z( ICOL1+J ) = Z( ICOL1+J ) -
2029.EQ.
IF( ISTARTISTOP ) THEN
2030 CALL CGESD2D( CONTXT, IROW2-IROW1+1, 2,
2032 $ IROW2-IROW1+1, MYROW,
2037.EQ.
IF( MOD( K-1, HBL )HBL-1 ) THEN
2038.NE.
IF( ICOL1ICOL2 ) THEN
2039.EQ.
IF( ISTARTISTOP ) THEN
2040 CALL CGERV2D( CONTXT, IROW2-IROW1+1, 2,
2042 $ IROW2-IROW1+1, MYROW,
2047 ICOL1 = ( ICOL1-1 )*LDZ
2048 II = IZBUF + IROW2 - 2*IROW1 + 2
2049 DO 400 J = IROW1, IROW2
2050 SUM = T1*WORK( II+J ) +
2052 $ T3*Z( J+ICOL1+LDZ )
2053 WORK( II+J ) = WORK( II+J ) - SUM
2054 Z( J+ICOL1 ) = Z( J+ICOL1 ) -
2056 Z( J+ICOL1+LDZ ) = Z( J+ICOL1+LDZ ) -
2059 CALL CGESD2D( CONTXT, IROW2-IROW1+1, 2,
2061 $ IROW2-IROW1+1, MYROW, LEFT )
2069 DO 440 KI = 1, IBULGE
2070.GT.
IF( KCOL( KI )KP2COL( KI ) )
2072.NE..AND.
IF( ( MYCOLICURCOL( KI ) )
2073.NE.
$ ( RIGHTICURCOL( KI ) ) )GO TO 440
2074 ISTART = MAX( K1( KI ), M )
2075 ISTOP = MIN( K2( KI ), I-1 )
2076.GE.
IF( MOD( ISTART-1, HBL )HBL-2 ) THEN
2087 DO 430 K = ISTART, ISTOP
2089 V2 = WORK( VECSIDX+( K-1 )*3+1 )
2090 V3 = WORK( VECSIDX+( K-1 )*3+2 )
2091 T1 = WORK( VECSIDX+( K-1 )*3+3 )
2092 NR = MIN( 3, I-K+1 )
2093.EQ..AND..LE.
IF( ( NR3 ) ( KCOL( KI )KP2COL( KI ) ) )
2096.LT..AND.
IF( ( KISTOP )
2097.LT.
$ ( MOD( K-1, HBL )HBL-2 ) ) THEN
2098 ITMP1 = MIN( ISTART+1, I ) - 1
2100.LT.
IF( MOD( K-1, HBL )HBL-2 ) THEN
2101 ITMP1 = MIN( K+3, I )
2103.EQ.
IF( MOD( K-1, HBL )HBL-2 ) THEN
2104 ITMP1 = MAX( I1, K-1 ) - 1
2106.EQ.
IF( MOD( K-1, HBL )HBL-1 ) THEN
2107 ITMP1 = MAX( I1, K-2 ) - 1
2110.LT.
IF( MOD( K-1, HBL )HBL-2 ) THEN
2111 ICOL1 = KCOL( KI ) + K - ISTART
2112 ICOL2 = KP2COL( KI ) + K - ISTART
2115 ICOL2 = KP2COL( KI )
2116.GT.
IF( KISTART ) THEN
2117.EQ.
IF( RIGHTICURCOL( KI ) ) THEN
2120.EQ.
IF( MYCOLICURCOL( KI ) ) THEN
2125 CALL INFOG1L( I1, HBL, NPROW, MYROW, IAFIRST,
2127 IROW2 = NUMROC( ITMP1, HBL, MYROW, IAFIRST, NPROW )
2128.EQ..AND.
IF( ( MOD( K-1, HBL )HBL-2 )
2129.GT.
$ ( NPCOL1 ) ) THEN
2130.NE.
IF( ICOL1ICOL2 ) THEN
2131.EQ.
IF( ISTARTISTOP ) THEN
2132 CALL CGERV2D( CONTXT, IROW2-IROW1+1, 2,
2133 $ A( ( ICOL1-1 )*LDA+IROW1 ),
2134 $ LDA, MYROW, RIGHT )
2138.EQ..AND.
IF( ( MOD( K-1, HBL )HBL-1 )
2139.GT.
$ ( NPCOL1 ) ) THEN
2140.EQ.
IF( ICOL1ICOL2 ) THEN
2141 CALL CGERV2D( CONTXT, IROW2-IROW1+1, 2,
2142 $ A( ( ICOL1-2 )*LDA+IROW1 ),
2143 $ LDA, MYROW, RIGHT )
2149.AND.
IF( ( WANTZ ) ( MOD( K-1,
2150.GE..AND..GT.
$ HBL )HBL-2 ) ( NPCOL1 ) ) THEN
2156.EQ.
IF( MOD( K-1, HBL )HBL-2 ) THEN
2157.NE.
IF( ICOL1ICOL2 ) THEN
2158.EQ.
IF( ISTARTISTOP ) THEN
2159 CALL CGERV2D( CONTXT, IROW2-IROW1+1, 2,
2160 $ Z( ( ICOL1-1 )*LDZ+
2161 $ IROW1 ), LDZ, MYROW,
2166.EQ.
IF( MOD( K-1, HBL )HBL-1 ) THEN
2167.EQ.
IF( ICOL1ICOL2 ) THEN
2168 CALL CGERV2D( CONTXT, IROW2-IROW1+1, 2,
2169 $ Z( ( ICOL1-2 )*LDZ+IROW1 ),
2170 $ LDZ, MYROW, RIGHT )
2184 DO 530 KI = 1, IBULGE
2185 ISTART = MAX( K1( KI ), M )
2186 ISTOP = MIN( K2( KI ), I-1 )
2187.GE.
IF( MOD( ISTART-1, HBL )HBL-2 ) THEN
2199 DO 520 K = ISTART, ISTOP
2201 V2 = WORK( VECSIDX+( K-1 )*3+1 )
2202 V3 = WORK( VECSIDX+( K-1 )*3+2 )
2203 T1 = WORK( VECSIDX+( K-1 )*3+3 )
2204 NR = MIN( 3, I-K+1 )
2206.EQ.
IF ( ICURROW( KI )MYROW ) THEN
2209.EQ.
IF ( ICURCOL( KI )MYCOL ) THEN
2216 CALL INFOG1L( K, HBL, NPCOL, MYCOL, JAFIRST, LILOH,
2219 CALL INFOG1L( 1, HBL, NPROW, MYROW, IAFIRST, ITMP2,
2221 ITMP1 = NUMROC( K+1, HBL, MYROW, IAFIRST, NPROW )
2222.EQ.
IF( ICURROW( KI )MYROW ) THEN
2223.EQ..OR..EQ..OR.
IF( ( ISPEC0 ) ( NPROW1 )
2224.EQ.
$ ( MOD( K-1, HBL )HBL-2 ) ) THEN
2226 DO 460 J = ( LILOH-1 )*LDA,
2227 $ ( LIHIH-1 )*LDA, LDA
2228 SUM = CONJG( T1 )*A( ITMP1+J ) +
2229 $ CONJG( T2 )*A( ITMP1+1+J )
2230 A( ITMP1+J ) = A( ITMP1+J ) - SUM
2231 A( ITMP1+1+J ) = A( ITMP1+1+J ) - SUM*V2
2234.EQ.
IF( MOD( K-1, HBL )HBL-1 ) THEN
2235 CALL CGERV2D( CONTXT, 1, LIHIH-LILOH+1,
2236 $ WORK( IRBUF+1 ), 1, UP,
2238 DO 470 J = LILOH, LIHIH
2240 $ WORK( IRBUF+J-LILOH+1 ) +
2241 $ CONJG( T2 )*A( ( J-1 )*LDA+
2243 WORK( IRBUF+J-LILOH+1 ) = WORK( IRBUF+
2245 A( ( J-1 )*LDA+ITMP1 ) = A( ( J-1 )*
2246 $ LDA+ITMP1 ) - SUM*V2
2248 CALL CGESD2D( CONTXT, 1, LIHIH-LILOH+1,
2249 $ WORK( IRBUF+1 ), 1, UP,
2254.EQ..AND.
IF( ( MOD( K-1, HBL )HBL-1 )
2255.EQ.
$ ( ICURROW( KI )DOWN ) ) THEN
2256 CALL CGESD2D( CONTXT, 1, LIHIH-LILOH+1,
2257 $ A( ( LILOH-1 )*LDA+ITMP1 ),
2258 $ LDA, DOWN, MYCOL )
2259 CALL CGERV2D( CONTXT, 1, LIHIH-LILOH+1,
2260 $ A( ( LILOH-1 )*LDA+ITMP1 ),
2261 $ LDA, DOWN, MYCOL )
2268 CALL INFOG1L( I1, HBL, NPROW, MYROW, IAFIRST,
2270 LIHIH = NUMROC( I, HBL, MYROW, IAFIRST, NPROW )
2272.EQ.
IF( ICURCOL( KI )MYCOL ) THEN
2274.EQ..OR..EQ..OR.
IF( ( ISPEC0 ) ( NPCOL1 )
2275.EQ.
$ ( MOD( K-1, HBL )HBL-2 ) ) THEN
2276 CALL INFOG1L( K, HBL, NPCOL, MYCOL, JAFIRST,
2278 ITMP2 = NUMROC( K+1, HBL, MYCOL, JAFIRST,
2280 DO 480 J = LILOH, LIHIH
2281 SUM = T1*A( ( ITMP1-1 )*LDA+J ) +
2282 $ T2*A( ITMP1*LDA+J )
2283 A( ( ITMP1-1 )*LDA+J ) = A( ( ITMP1-1 )*
2285 A( ITMP1*LDA+J ) = A( ITMP1*LDA+J ) -
2290.EQ.
IF( MOD( K-1, HBL )HBL-1 ) THEN
2291 CALL CGERV2D( CONTXT, LIHIH-LILOH+1, 1,
2293 $ LIHIH-LILOH+1, MYROW, LEFT )
2294 DO 490 J = LILOH, LIHIH
2295 SUM = T1*WORK( ICBUF+J ) +
2296 $ T2*A( ( ITMP1-1 )*LDA+J )
2297 WORK( ICBUF+J ) = WORK( ICBUF+J ) - SUM
2298 A( ( ITMP1-1 )*LDA+J )
2299 $ = A( ( ITMP1-1 )*LDA+J ) -
2302 CALL CGESD2D( CONTXT, LIHIH-LILOH+1, 1,
2304 $ LIHIH-LILOH+1, MYROW, LEFT )
2308.EQ..AND.
IF( ( MOD( K-1, HBL )HBL-1 )
2309.EQ.
$ ( ICURCOL( KI )RIGHT ) ) THEN
2311 CALL CGESD2D( CONTXT, LIHIH-LILOH+1, 1,
2312 $ A( ( ITMP1-1 )*LDA+LILOH ),
2313 $ LDA, MYROW, RIGHT )
2314 CALL INFOG1L( K, HBL, NPCOL, MYCOL, JAFIRST,
2316 ITMP2 = NUMROC( K+1, HBL, MYCOL, JAFIRST,
2318 CALL CGERV2D( CONTXT, LIHIH-LILOH+1, 1,
2319 $ A( ( ITMP1-1 )*LDA+LILOH ),
2320 $ LDA, MYROW, RIGHT )
2328.EQ.
IF( ICURCOL( KI )MYCOL ) THEN
2330.EQ..OR..EQ..OR.
IF( ( ISPEC0 ) ( NPCOL1 )
2331.EQ.
$ ( MOD( K-1, HBL )HBL-2 ) ) THEN
2332 ITMP1 = KCOL( KI ) + K - ISTART
2333 ITMP1 = ( ITMP1-1 )*LDZ
2334 DO 500 J = LILOZ, LIHIZ
2335 SUM = T1*Z( J+ITMP1 ) +
2336 $ T2*Z( J+ITMP1+LDZ )
2337 Z( J+ITMP1 ) = Z( J+ITMP1 ) - SUM
2338 Z( J+ITMP1+LDZ ) = Z( J+ITMP1+LDZ ) -
2344.EQ.
IF( MOD( K-1, HBL )HBL-1 ) THEN
2345 CALL CGERV2D( CONTXT, LIHIZ-LILOZ+1, 1,
2346 $ WORK( IZBUF+1 ), LDZ,
2348 ITMP1 = ( ITMP1-1 )*LDZ
2349 DO 510 J = LILOZ, LIHIZ
2350 SUM = T1*WORK( IZBUF+J ) +
2352 WORK( IZBUF+J ) = WORK( IZBUF+J ) -
2354 Z( J+ITMP1 ) = Z( J+ITMP1 ) -
2357 CALL CGESD2D( CONTXT, LIHIZ-LILOZ+1, 1,
2358 $ WORK( IZBUF+1 ), LDZ,
2366.EQ..AND.
IF( ( MOD( K-1, HBL )HBL-1 )
2367.EQ.
$ ( ICURCOL( KI )RIGHT ) ) THEN
2369 ITMP1 = ( ITMP1-1 )*LDZ
2370 CALL CGESD2D( CONTXT, LIHIZ-LILOZ+1, 1,
2371 $ Z( LILOZ+ITMP1 ), LDZ,
2373 CALL CGERV2D( CONTXT, LIHIZ-LILOZ+1, 1,
2374 $ Z( LILOZ+ITMP1 ), LDZ,
2384.EQ.
IF( NPROW1 ) THEN
2385 KROW( KI ) = KROW( KI ) + K2( KI ) - K1( KI ) + 1
2386 KP2ROW( KI ) = KP2ROW( KI ) + K2( KI ) - K1( KI ) + 1
2388.LT..AND.
IF( ( MOD( K1( KI )-1, HBL )HBL-2 )
2389.EQ..AND..GT.
$ ( ICURROW( KI )MYROW ) ( NPROW1 ) )
2391 KROW( KI ) = KROW( KI ) + K2( KI ) - K1( KI ) + 1
2393.LT..AND.
IF( ( MOD( K2( KI ), HBL )HBL-2 )
2394.EQ..AND..GT.
$ ( ICURROW( KI )MYROW ) ( NPROW1 ) )
2396 KP2ROW( KI ) = KP2ROW( KI ) + K2( KI ) - K1( KI ) + 1
2398.GE..AND.
IF( ( MOD( K1( KI )-1, HBL )HBL-2 )
2399.EQ..OR..EQ.
$ ( ( MYROWICURROW( KI ) ) ( DOWN
2400.AND..GT.
$ ICURROW( KI ) ) ) ( NPROW1 ) ) THEN
2401 CALL INFOG1L( K2( KI )+1, HBL, NPROW, MYROW, IAFIRST,
2402 $ KROW( KI ), ITMP2 )
2404.GE..AND.
IF( ( MOD( K2( KI ), HBL )HBL-2 )
2405.EQ..OR..EQ.
$ ( ( MYROWICURROW( KI ) ) ( UP
2406.AND..GT.
$ ICURROW( KI ) ) ) ( NPROW1 ) ) THEN
2407 KP2ROW( KI ) = NUMROC( K2( KI )+3, HBL, MYROW,
2410.EQ.
IF( NPCOL1 ) THEN
2411 KCOL( KI ) = KCOL( KI ) + K2( KI ) - K1( KI ) + 1
2412 KP2COL( KI ) = KP2COL( KI ) + K2( KI ) - K1( KI ) + 1
2414.LT..AND.
IF( ( MOD( K1( KI )-1, HBL )HBL-2 )
2415.EQ..AND..GT.
$ ( ICURCOL( KI )MYCOL ) ( NPCOL1 ) )
2417 KCOL( KI ) = KCOL( KI ) + K2( KI ) - K1( KI ) + 1
2419.LT..AND.
IF( ( MOD( K2( KI ), HBL )HBL-2 )
2420.EQ..AND..GT.
$ ( ICURCOL( KI )MYCOL ) ( NPCOL1 ) )
2422 KP2COL( KI ) = KP2COL( KI ) + K2( KI ) - K1( KI ) + 1
2424.GE..AND.
IF( ( MOD( K1( KI )-1, HBL )HBL-2 )
2425.EQ..OR..EQ.
$ ( ( MYCOLICURCOL( KI ) ) ( RIGHT
2426.AND..GT.
$ ICURCOL( KI ) ) ) ( NPCOL1 ) ) THEN
2427 CALL INFOG1L( K2( KI )+1, HBL, NPCOL, MYCOL, JAFIRST,
2428 $ KCOL( KI ), ITMP2 )
2430.GE..AND.
IF( ( MOD( K2( KI ), HBL )HBL-2 )
2431.EQ..OR..EQ.
$ ( ( MYCOLICURCOL( KI ) ) ( LEFT
2432.AND..GT.
$ ICURCOL( KI ) ) ) ( NPCOL1 ) ) THEN
2433 KP2COL( KI ) = NUMROC( K2( KI )+3, HBL, MYCOL,
2436 K1( KI ) = K2( KI ) + 1
2437 ISTOP = MIN( K1( KI )+ROTN-MOD( K1( KI ), ROTN ), I-2 )
2438 ISTOP = MIN( ISTOP, K1( KI )+HBL-3-
2439 $ MOD( K1( KI )-1, HBL ) )
2440 ISTOP = MIN( ISTOP, I2-2 )
2441 ISTOP = MAX( ISTOP, K1( KI ) )
2442.EQ..AND.
IF( ( MOD( K1( KI )-1, HBL )HBL-2 )
2443.LT.
$ ( ISTOPMIN( I-2, I2-2 ) ) ) THEN
2447.LE.
IF( K1( KI )ISTOP ) THEN
2448.EQ..AND.
IF( ( MOD( K1( KI )-1, HBL )HBL-2 )
2449.GT.
$ ( I-K1( KI )1 ) ) THEN
2453 ICURROW( KI ) = MOD( ICURROW( KI )+1, NPROW )
2454 ICURCOL( KI ) = MOD( ICURCOL( KI )+1, NPCOL )
2459.LE.
IF( K2( IBULGE )I-1 )
2476 CALL INFOG2L( I, I, DESCA, NPROW, NPCOL, MYROW, MYCOL, IROW,
2477 $ ICOL, ITMP1, ITMP2 )
2478.EQ..AND..EQ.
IF( ( MYROWITMP1 ) ( MYCOLITMP2 ) ) THEN
2479 W( I ) = A( ( ICOL-1 )*LDA+IROW )
2483.EQ.
ELSE IF( LI-1 ) THEN
2487 CALL PCLACP3( 2, I-1, A, DESCA, S1, 2*IBLK, -1, -1, 0 )
2488 CALL CLANV2( S1( 1, 1 ), S1( 1, 2 ), S1( 2, 1 ), S1( 2, 2 ),
2489 $ W( I-1 ), W( I ), CS, SN )
2490 CALL PCLACP3( 2, I-1, A, DESCA, S1, 2*IBLK, 0, 0, 1 )
2492.NE.
IF( NODE0 ) THEN
2503 CALL PCROT( I2-I, A, I-1, I+1, DESCA, N, A, I, I+1,
2504 $ DESCA, N, CS, SN )
2506 CALL PCROT( I-I1-1, A, I1, I-1, DESCA, 1, A, I1, I, DESCA,
2507 $ 1, CS, CONJG( SN ) )
2513 CALL PCROT( NZ, Z, ILOZ, I-1, DESCZ, 1, Z, ILOZ, I, DESCZ,
2514 $ 1, CS, CONJG( SN ) )
2522.LE.
IF( JBLK2*IBLK ) THEN
2523 CALL PCLACP3( I-L+1, L, A, DESCA, S1, 2*IBLK, 0, 0, 0 )
2524 CALL CLAHQR2( .FALSE., .FALSE., JBLK, 1, JBLK, S1, 2*IBLK,
2525 $ W( L ), 1, JBLK, Z, LDZ, IERR )
2526.NE.
IF( NODE0 ) THEN
2545 CALL CGSUM2D( CONTXT, 'all
', ' ', N, 1, W, N, -1, -1 )