@@ -182,7 +182,7 @@ SUBROUTINE DSYTRF_AA_2STAGE( UPLO, N, A, LDA, TB, LTB, IPIV,
182182* .. Local Scalars ..
183183 LOGICAL UPPER, TQUERY, WQUERY
184184 INTEGER I, J, K, I1, I2, TD
185- INTEGER LDTB, NB, KB, NT, IINFO
185+ INTEGER LDTB, NB, KB, JB, NT, IINFO
186186 DOUBLE PRECISION PIV
187187* ..
188188* .. External Functions ..
@@ -282,25 +282,27 @@ SUBROUTINE DSYTRF_AA_2STAGE( UPLO, N, A, LDA, TB, LTB, IPIV,
282282*
283283 KB = MIN (NB, N- J* NB)
284284 DO I = 1 , J-1
285- IF ( I.EQ. 1 ) THEN
286- * H(I,J) = T(I,I)*U(I,J) + T(I+1,I)*U(I+1,J)
287- CALL DGEMM( ' NoTranspose' , ' NoTranspose' ,
288- $ NB, KB, 2 * NB,
289- $ ONE, TB( TD+1 + (I* NB)* LDTB ), LDTB-1 ,
290- $ A( (I-1 )* NB+1 , J* NB+1 ), LDA,
291- $ ZERO, WORK( I* NB+1 ), N )
292- ELSE IF ( I .EQ. J-1 ) THEN
293- * H(I,J) = T(I,I-1)*U(I-1,J) + T(I,I)*U(I,J) + T(I,I+1)*U(I+1,J)
285+ IF ( I .EQ. 1 ) THEN
286+ * H(I,J) = T(I,I)*U(I,J) + T(I,I+1)*U(I+1,J)
287+ IF ( I .EQ. (J-1 ) ) THEN
288+ JB = NB+ KB
289+ ELSE
290+ JB = 2 * NB
291+ END IF
294292 CALL DGEMM( ' NoTranspose' , ' NoTranspose' ,
295- $ NB, KB, 2 * NB+ KB,
296- $ ONE, TB( TD+ NB+1 + ((I-1 )* NB)* LDTB ),
297- $ LDTB-1 ,
298- $ A( (I-2 )* NB+1 , J* NB+1 ), LDA,
293+ $ NB, KB, JB,
294+ $ ONE, TB( TD+1 + (I* NB)* LDTB ), LDTB-1 ,
295+ $ A( (I-1 )* NB+1 , J* NB+1 ), LDA,
299296 $ ZERO, WORK( I* NB+1 ), N )
300- ELSE
297+ ELSE
301298* H(I,J) = T(I,I-1)*U(I-1,J) + T(I,I)*U(I,J) + T(I,I+1)*U(I+1,J)
299+ IF ( I .EQ. J-1 ) THEN
300+ JB = 2 * NB+ KB
301+ ELSE
302+ JB = 3 * NB
303+ END IF
302304 CALL DGEMM( ' NoTranspose' , ' NoTranspose' ,
303- $ NB, KB, 3 * NB ,
305+ $ NB, KB, JB ,
304306 $ ONE, TB( TD+ NB+1 + ((I-1 )* NB)* LDTB ),
305307 $ LDTB-1 ,
306308 $ A( (I-2 )* NB+1 , J* NB+1 ), LDA,
@@ -471,23 +473,25 @@ SUBROUTINE DSYTRF_AA_2STAGE( UPLO, N, A, LDA, TB, LTB, IPIV,
471473 DO I = 1 , J-1
472474 IF ( I.EQ. 1 ) THEN
473475* H(I,J) = T(I,I)*L(J,I)' + T(I+1,I)'*L(J,I+1)'
476+ IF ( I .EQ. J-1 ) THEN
477+ JB = NB+ KB
478+ ELSE
479+ JB = 2 * NB
480+ END IF
474481 CALL DGEMM( ' NoTranspose' , ' Transpose' ,
475- $ NB, KB, 2 * NB ,
482+ $ NB, KB, JB ,
476483 $ ONE, TB( TD+1 + (I* NB)* LDTB ), LDTB-1 ,
477484 $ A( J* NB+1 , (I-1 )* NB+1 ), LDA,
478485 $ ZERO, WORK( I* NB+1 ), N )
479- ELSE IF ( I .EQ. J-1 ) THEN
480- * H(I,J) = T(I,I-1)*L(J,I-1)' + T(I,I)*L(J,I)' + T(I,I+1)*L(J,I+1)'
481- CALL DGEMM( ' NoTranspose' , ' Transpose' ,
482- $ NB, KB, 2 * NB+ KB,
483- $ ONE, TB( TD+ NB+1 + ((I-1 )* NB)* LDTB ),
484- $ LDTB-1 ,
485- $ A( J* NB+1 , (I-2 )* NB+1 ), LDA,
486- $ ZERO, WORK( I* NB+1 ), N )
487- ELSE
486+ ELSE
488487* H(I,J) = T(I,I-1)*L(J,I-1)' + T(I,I)*L(J,I)' + T(I,I+1)*L(J,I+1)'
488+ IF ( I .EQ. J-1 ) THEN
489+ JB = 2 * NB+ KB
490+ ELSE
491+ JB = 3 * NB
492+ END IF
489493 CALL DGEMM( ' NoTranspose' , ' Transpose' ,
490- $ NB, KB, 3 * NB ,
494+ $ NB, KB, JB ,
491495 $ ONE, TB( TD+ NB+1 + ((I-1 )* NB)* LDTB ),
492496 $ LDTB-1 ,
493497 $ A( J* NB+1 , (I-2 )* NB+1 ), LDA,
@@ -590,8 +594,8 @@ SUBROUTINE DSYTRF_AA_2STAGE( UPLO, N, A, LDA, TB, LTB, IPIV,
590594*
591595 DO K = 1 , NB
592596 DO I = 1 , KB
593- TB( TD- NB+ K- I+1 + (J* NB+ NB+ I-1 )* LDTB ) =
594- $ TB( TD+ NB+ I- K+1 + (J* NB+ K-1 )* LDTB )
597+ TB( TD- NB+ K- I+1 + (J* NB+ NB+ I-1 )* LDTB )
598+ $ = TB( TD+ NB+ I- K+1 + (J* NB+ K-1 )* LDTB )
595599 END DO
596600 END DO
597601 CALL DLASET( ' Upper' , KB, NB, ZERO, ONE,
0 commit comments