Skip to content

Commit 0aa9a64

Browse files
committed
small tweak for the last column of the panel
1 parent 9e4fb69 commit 0aa9a64

6 files changed

Lines changed: 138 additions & 42 deletions

File tree

SRC/clahef_aa.f

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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)

SRC/clasyf_aa.f

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ SUBROUTINE CLASYF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
166166
PARAMETER ( ZERO = 0.0E+0, ONE = 1.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 CLASYF_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:M, J) := A(J, J:M) - H(J:M, 1:(J-1)) * L(J1:(J-1), J),
210218
* where H(J:M, J) has been initialized to be A(J, J:M)
@@ -217,23 +225,23 @@ SUBROUTINE CLASYF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
217225
* > for the rest of the columns, K is J+1, skipping only the
218226
* first column
219227
*
220-
CALL CGEMV( 'No transpose', M-J+1, J-K1,
228+
CALL CGEMV( 'No transpose', MJ, J-K1,
221229
$ -ONE, H( J, K1 ), LDH,
222230
$ A( 1, J ), 1,
223231
$ ONE, H( J, J ), 1 )
224232
END IF
225233
*
226234
* Copy H(i:M, i) into WORK
227235
*
228-
CALL CCOPY( M-J+1, H( J, J ), 1, WORK( 1 ), 1 )
236+
CALL CCOPY( MJ, H( J, J ), 1, WORK( 1 ), 1 )
229237
*
230238
IF( J.GT.K1 ) THEN
231239
*
232240
* Compute WORK := WORK - L(J-1, J:M) * T(J-1,J),
233241
* where A(J-1, J) stores T(J-1, J) and A(J-2, J:M) stores U(J-1, J:M)
234242
*
235243
ALPHA = -A( K-1, J )
236-
CALL CAXPY( M-J+1, ALPHA, A( K-2, J ), LDA, WORK( 1 ), 1 )
244+
CALL CAXPY( MJ, ALPHA, A( K-2, J ), LDA, WORK( 1 ), 1 )
237245
END IF
238246
*
239247
* Set A(J, J) = T(J, J)
@@ -345,6 +353,14 @@ SUBROUTINE CLASYF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
345353
* > for the rest of the columns, J1 is 2, and J1+J-1 is J+1,
346354
*
347355
K = J1+J-1
356+
IF( J.EQ.M ) THEN
357+
*
358+
* Only need to compute T(J, J)
359+
*
360+
MJ = 1
361+
ELSE
362+
MJ = M-J+1
363+
END IF
348364
*
349365
* H(J:M, J) := A(J:M, J) - H(J:M, 1:(J-1)) * L(J, J1:(J-1))^T,
350366
* where H(J:M, J) has been initialized to be A(J:M, J)
@@ -357,23 +373,23 @@ SUBROUTINE CLASYF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
357373
* > for the rest of the columns, K is J+1, skipping only the
358374
* first column
359375
*
360-
CALL CGEMV( 'No transpose', M-J+1, J-K1,
376+
CALL CGEMV( 'No transpose', MJ, J-K1,
361377
$ -ONE, H( J, K1 ), LDH,
362378
$ A( J, 1 ), LDA,
363379
$ ONE, H( J, J ), 1 )
364380
END IF
365381
*
366382
* Copy H(J:M, J) into WORK
367383
*
368-
CALL CCOPY( M-J+1, H( J, J ), 1, WORK( 1 ), 1 )
384+
CALL CCOPY( MJ, H( J, J ), 1, WORK( 1 ), 1 )
369385
*
370386
IF( J.GT.K1 ) THEN
371387
*
372388
* Compute WORK := WORK - L(J:M, J-1) * T(J-1,J),
373389
* where A(J-1, J) = T(J-1, J) and A(J, J-2) = L(J, J-1)
374390
*
375391
ALPHA = -A( J, K-1 )
376-
CALL CAXPY( M-J+1, ALPHA, A( J, K-2 ), 1, WORK( 1 ), 1 )
392+
CALL CAXPY( MJ, ALPHA, A( J, K-2 ), 1, WORK( 1 ), 1 )
377393
END IF
378394
*
379395
* Set A(J, J) = T(J, J)

SRC/dlasyf_aa.f

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ SUBROUTINE DLASYF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
166166
PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
167167
*
168168
* .. Local Scalars ..
169-
INTEGER J, K, K1, I1, I2
169+
INTEGER J, K, K1, I1, I2, MJ
170170
DOUBLE PRECISION PIV, ALPHA
171171
* ..
172172
* .. External Functions ..
@@ -205,6 +205,14 @@ SUBROUTINE DLASYF_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:M, J) := A(J, J:M) - H(J:M, 1:(J-1)) * L(J1:(J-1), J),
210218
* where H(J:M, J) has been initialized to be A(J, J:M)
@@ -217,23 +225,23 @@ SUBROUTINE DLASYF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
217225
* > for the rest of the columns, K is J+1, skipping only the
218226
* first column
219227
*
220-
CALL DGEMV( 'No transpose', M-J+1, J-K1,
228+
CALL DGEMV( 'No transpose', MJ, J-K1,
221229
$ -ONE, H( J, K1 ), LDH,
222230
$ A( 1, J ), 1,
223231
$ ONE, H( J, J ), 1 )
224232
END IF
225233
*
226234
* Copy H(i:M, i) into WORK
227235
*
228-
CALL DCOPY( M-J+1, H( J, J ), 1, WORK( 1 ), 1 )
236+
CALL DCOPY( MJ, H( J, J ), 1, WORK( 1 ), 1 )
229237
*
230238
IF( J.GT.K1 ) THEN
231239
*
232240
* Compute WORK := WORK - L(J-1, J:M) * T(J-1,J),
233241
* where A(J-1, J) stores T(J-1, J) and A(J-2, J:M) stores U(J-1, J:M)
234242
*
235243
ALPHA = -A( K-1, J )
236-
CALL DAXPY( M-J+1, ALPHA, A( K-2, J ), LDA, WORK( 1 ), 1 )
244+
CALL DAXPY( MJ, ALPHA, A( K-2, J ), LDA, WORK( 1 ), 1 )
237245
END IF
238246
*
239247
* Set A(J, J) = T(J, J)
@@ -345,6 +353,14 @@ SUBROUTINE DLASYF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
345353
* > for the rest of the columns, J1 is 2, and J1+J-1 is J+1,
346354
*
347355
K = J1+J-1
356+
IF( J.EQ.M ) THEN
357+
*
358+
* Only need to compute T(J, J)
359+
*
360+
MJ = 1
361+
ELSE
362+
MJ = M-J+1
363+
END IF
348364
*
349365
* H(J:M, J) := A(J:M, J) - H(J:M, 1:(J-1)) * L(J, J1:(J-1))^T,
350366
* where H(J:M, J) has been initialized to be A(J:M, J)
@@ -357,23 +373,23 @@ SUBROUTINE DLASYF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
357373
* > for the rest of the columns, K is J+1, skipping only the
358374
* first column
359375
*
360-
CALL DGEMV( 'No transpose', M-J+1, J-K1,
376+
CALL DGEMV( 'No transpose', MJ, J-K1,
361377
$ -ONE, H( J, K1 ), LDH,
362378
$ A( J, 1 ), LDA,
363379
$ ONE, H( J, J ), 1 )
364380
END IF
365381
*
366382
* Copy H(J:M, J) into WORK
367383
*
368-
CALL DCOPY( M-J+1, H( J, J ), 1, WORK( 1 ), 1 )
384+
CALL DCOPY( MJ, H( J, J ), 1, WORK( 1 ), 1 )
369385
*
370386
IF( J.GT.K1 ) THEN
371387
*
372388
* Compute WORK := WORK - L(J:M, J-1) * T(J-1,J),
373389
* where A(J-1, J) = T(J-1, J) and A(J, J-2) = L(J, J-1)
374390
*
375391
ALPHA = -A( J, K-1 )
376-
CALL DAXPY( M-J+1, ALPHA, A( J, K-2 ), 1, WORK( 1 ), 1 )
392+
CALL DAXPY( MJ, ALPHA, A( J, K-2 ), 1, WORK( 1 ), 1 )
377393
END IF
378394
*
379395
* Set A(J, J) = T(J, J)

SRC/slasyf_aa.f

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ SUBROUTINE SLASYF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
166166
PARAMETER ( ZERO = 0.0E+0, ONE = 1.0E+0 )
167167
*
168168
* .. Local Scalars ..
169-
INTEGER J, K, K1, I1, I2
169+
INTEGER J, K, K1, I1, I2, MJ
170170
REAL PIV, ALPHA
171171
* ..
172172
* .. External Functions ..
@@ -205,6 +205,14 @@ SUBROUTINE SLASYF_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:M, J) := A(J, J:M) - H(J:M, 1:(J-1)) * L(J1:(J-1), J),
210218
* where H(J:M, J) has been initialized to be A(J, J:M)
@@ -217,23 +225,23 @@ SUBROUTINE SLASYF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
217225
* > for the rest of the columns, K is J+1, skipping only the
218226
* first column
219227
*
220-
CALL SGEMV( 'No transpose', M-J+1, J-K1,
228+
CALL SGEMV( 'No transpose', MJ, J-K1,
221229
$ -ONE, H( J, K1 ), LDH,
222230
$ A( 1, J ), 1,
223231
$ ONE, H( J, J ), 1 )
224232
END IF
225233
*
226234
* Copy H(i:M, i) into WORK
227235
*
228-
CALL SCOPY( M-J+1, H( J, J ), 1, WORK( 1 ), 1 )
236+
CALL SCOPY( MJ, H( J, J ), 1, WORK( 1 ), 1 )
229237
*
230238
IF( J.GT.K1 ) THEN
231239
*
232240
* Compute WORK := WORK - L(J-1, J:M) * T(J-1,J),
233241
* where A(J-1, J) stores T(J-1, J) and A(J-2, J:M) stores U(J-1, J:M)
234242
*
235243
ALPHA = -A( K-1, J )
236-
CALL SAXPY( M-J+1, ALPHA, A( K-2, J ), LDA, WORK( 1 ), 1 )
244+
CALL SAXPY( MJ, ALPHA, A( K-2, J ), LDA, WORK( 1 ), 1 )
237245
END IF
238246
*
239247
* Set A(J, J) = T(J, J)
@@ -345,6 +353,14 @@ SUBROUTINE SLASYF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
345353
* > for the rest of the columns, J1 is 2, and J1+J-1 is J+1,
346354
*
347355
K = J1+J-1
356+
IF( J.EQ.M ) THEN
357+
*
358+
* Only need to compute T(J, J)
359+
*
360+
MJ = 1
361+
ELSE
362+
MJ = M-J+1
363+
END IF
348364
*
349365
* H(J:M, J) := A(J:M, J) - H(J:M, 1:(J-1)) * L(J, J1:(J-1))^T,
350366
* where H(J:M, J) has been initialized to be A(J:M, J)
@@ -357,23 +373,23 @@ SUBROUTINE SLASYF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
357373
* > for the rest of the columns, K is J+1, skipping only the
358374
* first column
359375
*
360-
CALL SGEMV( 'No transpose', M-J+1, J-K1,
376+
CALL SGEMV( 'No transpose', MJ, J-K1,
361377
$ -ONE, H( J, K1 ), LDH,
362378
$ A( J, 1 ), LDA,
363379
$ ONE, H( J, J ), 1 )
364380
END IF
365381
*
366382
* Copy H(J:M, J) into WORK
367383
*
368-
CALL SCOPY( M-J+1, H( J, J ), 1, WORK( 1 ), 1 )
384+
CALL SCOPY( MJ, H( J, J ), 1, WORK( 1 ), 1 )
369385
*
370386
IF( J.GT.K1 ) THEN
371387
*
372388
* Compute WORK := WORK - L(J:M, J-1) * T(J-1,J),
373389
* where A(J-1, J) = T(J-1, J) and A(J, J-2) = L(J, J-1)
374390
*
375391
ALPHA = -A( J, K-1 )
376-
CALL SAXPY( M-J+1, ALPHA, A( J, K-2 ), 1, WORK( 1 ), 1 )
392+
CALL SAXPY( MJ, ALPHA, A( J, K-2 ), 1, WORK( 1 ), 1 )
377393
END IF
378394
*
379395
* Set A(J, J) = T(J, J)

0 commit comments

Comments
 (0)