@@ -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