@@ -288,8 +288,9 @@ SUBROUTINE CLAHEF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
288288*
289289* Swap A(I1, I2+1:N) with A(I2, I2+1:N)
290290*
291- CALL CSWAP( M- I2, A( J1+ I1-1 , I2+1 ), LDA,
292- $ A( J1+ I2-1 , I2+1 ), LDA )
291+ IF ( I2.LT. M )
292+ $ CALL CSWAP( M- I2, A( J1+ I1-1 , I2+1 ), LDA,
293+ $ A( J1+ I2-1 , I2+1 ), LDA )
293294*
294295* Swap A(I1, I1) with A(I2,I2)
295296*
@@ -329,13 +330,15 @@ SUBROUTINE CLAHEF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
329330* Compute L(J+2, J+1) = WORK( 3:N ) / T(J, J+1),
330331* where A(J, J+1) = T(J, J+1) and A(J+2:N, J) = L(J+2:N, J+1)
331332*
332- IF ( A( K, J+1 ).NE. ZERO ) THEN
333- ALPHA = ONE / A( K, J+1 )
334- CALL CCOPY( M- J-1 , WORK( 3 ), 1 , A( K, J+2 ), LDA )
335- CALL CSCAL( M- J-1 , ALPHA, A( K, J+2 ), LDA )
336- ELSE
337- CALL CLASET( ' Full' , 1 , M- J-1 , ZERO, ZERO,
338- $ A( K, J+2 ), LDA)
333+ IF ( J.LT. (M-1 ) ) THEN
334+ IF ( A( K, J+1 ).NE. ZERO ) THEN
335+ ALPHA = ONE / A( K, J+1 )
336+ CALL CCOPY( M- J-1 , WORK( 3 ), 1 , A( K, J+2 ), LDA )
337+ CALL CSCAL( M- J-1 , ALPHA, A( K, J+2 ), LDA )
338+ ELSE
339+ CALL CLASET( ' Full' , 1 , M- J-1 , ZERO, ZERO,
340+ $ A( K, J+2 ), LDA)
341+ END IF
339342 END IF
340343 END IF
341344 J = J + 1
@@ -440,8 +443,9 @@ SUBROUTINE CLAHEF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
440443*
441444* Swap A(I2+1:N, I1) with A(I2+1:N, I2)
442445*
443- CALL CSWAP( M- I2, A( I2+1 , J1+ I1-1 ), 1 ,
444- $ A( I2+1 , J1+ I2-1 ), 1 )
446+ IF ( I2.LT. M )
447+ $ CALL CSWAP( M- I2, A( I2+1 , J1+ I1-1 ), 1 ,
448+ $ A( I2+1 , J1+ I2-1 ), 1 )
445449*
446450* Swap A(I1, I1) with A(I2, I2)
447451*
@@ -481,13 +485,15 @@ SUBROUTINE CLAHEF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
481485* Compute L(J+2, J+1) = WORK( 3:N ) / T(J, J+1),
482486* where A(J, J+1) = T(J, J+1) and A(J+2:N, J) = L(J+2:N, J+1)
483487*
484- IF ( A( J+1 , K ).NE. ZERO ) THEN
485- ALPHA = ONE / A( J+1 , K )
486- CALL CCOPY( M- J-1 , WORK( 3 ), 1 , A( J+2 , K ), 1 )
487- CALL CSCAL( M- J-1 , ALPHA, A( J+2 , K ), 1 )
488- ELSE
489- CALL CLASET( ' Full' , M- J-1 , 1 , ZERO, ZERO,
490- $ A( J+2 , K ), LDA )
488+ IF ( J.LT. (M-1 ) ) THEN
489+ IF ( A( J+1 , K ).NE. ZERO ) THEN
490+ ALPHA = ONE / A( J+1 , K )
491+ CALL CCOPY( M- J-1 , WORK( 3 ), 1 , A( J+2 , K ), 1 )
492+ CALL CSCAL( M- J-1 , ALPHA, A( J+2 , K ), 1 )
493+ ELSE
494+ CALL CLASET( ' Full' , M- J-1 , 1 , ZERO, ZERO,
495+ $ A( J+2 , K ), LDA )
496+ END IF
491497 END IF
492498 END IF
493499 J = J + 1
0 commit comments