@@ -166,7 +166,7 @@ SUBROUTINE CLAHEF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
166166 PARAMETER ( ZERO = (0.0E+0 , 0.0E+0 ), ONE = (1.0E+0 , 0.0E+0 ) )
167167*
168168* .. Local Scalars ..
169- INTEGER J, K, K1, I1, I2
169+ INTEGER J, K, K1, I1, I2, MJ
170170 COMPLEX PIV, ALPHA
171171* ..
172172* .. External Functions ..
@@ -205,6 +205,14 @@ SUBROUTINE CLAHEF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
205205* > for the rest of the columns, J1 is 2, and J1+J-1 is J+1,
206206*
207207 K = J1+ J-1
208+ IF ( J.EQ. M ) THEN
209+ *
210+ * Only need to compute T(J, J)
211+ *
212+ MJ = 1
213+ ELSE
214+ MJ = M- J+1
215+ END IF
208216*
209217* H(J:N, J) := A(J, J:N) - H(J:N, 1:(J-1)) * L(J1:(J-1), J),
210218* where H(J:N, J) has been initialized to be A(J, J:N)
@@ -218,7 +226,7 @@ SUBROUTINE CLAHEF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
218226* first column
219227*
220228 CALL CLACGV( J- K1, A( 1 , J ), 1 )
221- CALL CGEMV( ' No transpose' , M - J +1 , J- K1,
229+ CALL CGEMV( ' No transpose' , MJ , J- K1,
222230 $ - ONE, H( J, K1 ), LDH,
223231 $ A( 1 , J ), 1 ,
224232 $ ONE, H( J, J ), 1 )
@@ -227,15 +235,15 @@ SUBROUTINE CLAHEF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
227235*
228236* Copy H(i:n, i) into WORK
229237*
230- CALL CCOPY( M - J +1 , H( J, J ), 1 , WORK( 1 ), 1 )
238+ CALL CCOPY( MJ , H( J, J ), 1 , WORK( 1 ), 1 )
231239*
232240 IF ( J.GT. K1 ) THEN
233241*
234242* Compute WORK := WORK - L(J-1, J:N) * T(J-1,J),
235243* where A(J-1, J) stores T(J-1, J) and A(J-2, J:N) stores U(J-1, J:N)
236244*
237245 ALPHA = - CONJG ( A( K-1 , J ) )
238- CALL CAXPY( M - J +1 , ALPHA, A( K-2 , J ), LDA, WORK( 1 ), 1 )
246+ CALL CAXPY( MJ , ALPHA, A( K-2 , J ), LDA, WORK( 1 ), 1 )
239247 END IF
240248*
241249* Set A(J, J) = T(J, J)
@@ -349,6 +357,14 @@ SUBROUTINE CLAHEF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
349357* > for the rest of the columns, J1 is 2, and J1+J-1 is J+1,
350358*
351359 K = J1+ J-1
360+ IF ( J.EQ. M ) THEN
361+ *
362+ * Only need to compute T(J, J)
363+ *
364+ MJ = 1
365+ ELSE
366+ MJ = M- J+1
367+ END IF
352368*
353369* H(J:N, J) := A(J:N, J) - H(J:N, 1:(J-1)) * L(J, J1:(J-1))^T,
354370* where H(J:N, J) has been initialized to be A(J:N, J)
@@ -362,7 +378,7 @@ SUBROUTINE CLAHEF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
362378* first column
363379*
364380 CALL CLACGV( J- K1, A( J, 1 ), LDA )
365- CALL CGEMV( ' No transpose' , M - J +1 , J- K1,
381+ CALL CGEMV( ' No transpose' , MJ , J- K1,
366382 $ - ONE, H( J, K1 ), LDH,
367383 $ A( J, 1 ), LDA,
368384 $ ONE, H( J, J ), 1 )
@@ -371,15 +387,15 @@ SUBROUTINE CLAHEF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
371387*
372388* Copy H(J:N, J) into WORK
373389*
374- CALL CCOPY( M - J +1 , H( J, J ), 1 , WORK( 1 ), 1 )
390+ CALL CCOPY( MJ , H( J, J ), 1 , WORK( 1 ), 1 )
375391*
376392 IF ( J.GT. K1 ) THEN
377393*
378394* Compute WORK := WORK - L(J:N, J-1) * T(J-1,J),
379395* where A(J-1, J) = T(J-1, J) and A(J, J-2) = L(J, J-1)
380396*
381397 ALPHA = - CONJG ( A( J, K-1 ) )
382- CALL CAXPY( M - J +1 , ALPHA, A( J, K-2 ), 1 , WORK( 1 ), 1 )
398+ CALL CAXPY( MJ , ALPHA, A( J, K-2 ), 1 , WORK( 1 ), 1 )
383399 END IF
384400*
385401* Set A(J, J) = T(J, J)
0 commit comments