Skip to content

Commit ce2261d

Browse files
authored
Merge pull request #136 from echeresh/370_fix
A number of fixes for routines and testing sources integrated in LAPACK 3.7.0
2 parents 33b899f + ee09e07 commit ce2261d

55 files changed

Lines changed: 772 additions & 530 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

SRC/chb2st_kernels.f

Lines changed: 70 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -47,45 +47,87 @@
4747
* Arguments:
4848
* ==========
4949
*
50-
*> @param[in] n
51-
*> The order of the matrix A.
52-
*>
53-
*> @param[in] nb
54-
*> The size of the band.
55-
*>
56-
*> @param[in, out] A
57-
*> A pointer to the matrix A.
58-
*>
59-
*> @param[in] lda
60-
*> The leading dimension of the matrix A.
50+
*> \param[in] UPLO
51+
*> \verbatim
52+
*> UPLO is CHARACTER*1
53+
*> \endverbatim
6154
*>
62-
*> @param[out] V
63-
*> COMPLEX array, dimension 2*n if eigenvalues only are
64-
*> requested or to be queried for vectors.
55+
*> \param[in] WANTZ
56+
*> \verbatim
57+
*> WANTZ is LOGICAL which indicate if Eigenvalue are requested or both
58+
*> Eigenvalue/Eigenvectors.
59+
*> \endverbatim
6560
*>
66-
*> @param[out] TAU
67-
*> COMPLEX array, dimension (2*n).
68-
*> The scalar factors of the Householder reflectors are stored
69-
*> in this array.
61+
*> \param[in] TTYPE
62+
*> \verbatim
63+
*> TTYPE is INTEGER
64+
*> \endverbatim
7065
*>
71-
*> @param[in] st
66+
*> \param[in] ST
67+
*> \verbatim
68+
*> ST is INTEGER
7269
*> internal parameter for indices.
70+
*> \endverbatim
7371
*>
74-
*> @param[in] ed
72+
*> \param[in] ED
73+
*> \verbatim
74+
*> ED is INTEGER
7575
*> internal parameter for indices.
76+
*> \endverbatim
7677
*>
77-
*> @param[in] sweep
78+
*> \param[in] SWEEP
79+
*> \verbatim
80+
*> SWEEP is INTEGER
7881
*> internal parameter for indices.
82+
*> \endverbatim
7983
*>
80-
*> @param[in] Vblksiz
81-
*> internal parameter for indices.
84+
*> \param[in] N
85+
*> \verbatim
86+
*> N is INTEGER. The order of the matrix A.
87+
*> \endverbatim
8288
*>
83-
*> @param[in] wantz
84-
*> logical which indicate if Eigenvalue are requested or both
85-
*> Eigenvalue/Eigenvectors.
89+
*> \param[in] NB
90+
*> \verbatim
91+
*> NB is INTEGER. The size of the band.
92+
*> \endverbatim
93+
*>
94+
*> \param[in] IB
95+
*> \verbatim
96+
*> IB is INTEGER.
97+
*> \endverbatim
98+
*>
99+
*> \param[in, out] A
100+
*> \verbatim
101+
*> A is COMPLEX array. A pointer to the matrix A.
102+
*> \endverbatim
103+
*>
104+
*> \param[in] LDA
105+
*> \verbatim
106+
*> LDA is INTEGER. The leading dimension of the matrix A.
107+
*> \endverbatim
108+
*>
109+
*> \param[out] V
110+
*> \verbatim
111+
*> V is COMPLEX array, dimension 2*n if eigenvalues only are
112+
*> requested or to be queried for vectors.
113+
*> \endverbatim
114+
*>
115+
*> \param[out] TAU
116+
*> \verbatim
117+
*> TAU is COMPLEX array, dimension (2*n).
118+
*> The scalar factors of the Householder reflectors are stored
119+
*> in this array.
120+
*> \endverbatim
121+
*>
122+
*> \param[in] LDVT
123+
*> \verbatim
124+
*> LDVT is INTEGER.
125+
*> \endverbatim
86126
*>
87-
*> @param[in] work
88-
*> Workspace of size nb.
127+
*> \param[in] WORK
128+
*> \verbatim
129+
*> WORK is COMPLEX array. Workspace of size nb.
130+
*> \endverbatim
89131
*>
90132
*> \par Further Details:
91133
* =====================

SRC/clasyf_aa.f

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,12 @@
9999
*> \param[in] LDA
100100
*> \verbatim
101101
*> LDA is INTEGER
102-
*> The leading dimension of the array A. LDA >= max(1,N).
102+
*> The leading dimension of the array A. LDA >= max(1,M).
103103
*> \endverbatim
104104
*>
105105
*> \param[out] IPIV
106106
*> \verbatim
107-
*> IPIV is INTEGER array, dimension (N)
107+
*> IPIV is INTEGER array, dimension (M)
108108
*> Details of the row and column interchanges,
109109
*> the row and column k were interchanged with the row and
110110
*> column IPIV(k).
@@ -217,8 +217,8 @@ SUBROUTINE CLASYF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
217217
*
218218
K = J1+J-1
219219
*
220-
* H(J:N, J) := A(J, J:N) - H(J:N, 1:(J-1)) * L(J1:(J-1), J),
221-
* where H(J:N, J) has been initialized to be A(J, J:N)
220+
* H(J:M, J) := A(J, J:M) - H(J:M, 1:(J-1)) * L(J1:(J-1), J),
221+
* where H(J:M, J) has been initialized to be A(J, J:M)
222222
*
223223
IF( K.GT.2 ) THEN
224224
*
@@ -234,14 +234,14 @@ SUBROUTINE CLASYF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
234234
$ ONE, H( J, J ), 1 )
235235
END IF
236236
*
237-
* Copy H(i:n, i) into WORK
237+
* Copy H(i:M, i) into WORK
238238
*
239239
CALL CCOPY( M-J+1, H( J, J ), 1, WORK( 1 ), 1 )
240240
*
241241
IF( J.GT.K1 ) THEN
242242
*
243-
* Compute WORK := WORK - L(J-1, J:N) * T(J-1,J),
244-
* where A(J-1, J) stores T(J-1, J) and A(J-2, J:N) stores U(J-1, J:N)
243+
* Compute WORK := WORK - L(J-1, J:M) * T(J-1,J),
244+
* where A(J-1, J) stores T(J-1, J) and A(J-2, J:M) stores U(J-1, J:M)
245245
*
246246
ALPHA = -A( K-1, J )
247247
CALL CAXPY( M-J+1, ALPHA, A( K-2, J ), LDA, WORK( 1 ), 1 )
@@ -253,16 +253,16 @@ SUBROUTINE CLASYF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
253253
*
254254
IF( J.LT.M ) THEN
255255
*
256-
* Compute WORK(2:N) = T(J, J) L(J, (J+1):N)
257-
* where A(J, J) stores T(J, J) and A(J-1, (J+1):N) stores U(J, (J+1):N)
256+
* Compute WORK(2:M) = T(J, J) L(J, (J+1):M)
257+
* where A(J, J) stores T(J, J) and A(J-1, (J+1):M) stores U(J, (J+1):M)
258258
*
259259
IF( K.GT.1 ) THEN
260260
ALPHA = -A( K, J )
261261
CALL CAXPY( M-J, ALPHA, A( K-1, J+1 ), LDA,
262262
$ WORK( 2 ), 1 )
263263
ENDIF
264264
*
265-
* Find max(|WORK(2:n)|)
265+
* Find max(|WORK(2:M)|)
266266
*
267267
I2 = ICAMAX( M-J, WORK( 2 ), 1 ) + 1
268268
PIV = WORK( I2 )
@@ -277,14 +277,14 @@ SUBROUTINE CLASYF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
277277
WORK( I2 ) = WORK( I1 )
278278
WORK( I1 ) = PIV
279279
*
280-
* Swap A(I1, I1+1:N) with A(I1+1:N, I2)
280+
* Swap A(I1, I1+1:M) with A(I1+1:M, I2)
281281
*
282282
I1 = I1+J-1
283283
I2 = I2+J-1
284284
CALL CSWAP( I2-I1-1, A( J1+I1-1, I1+1 ), LDA,
285285
$ A( J1+I1, I2 ), 1 )
286286
*
287-
* Swap A(I1, I2+1:N) with A(I2, I2+1:N)
287+
* Swap A(I1, I2+1:M) with A(I2, I2+1:M)
288288
*
289289
CALL CSWAP( M-I2, A( J1+I1-1, I2+1 ), LDA,
290290
$ A( J1+I2-1, I2+1 ), LDA )
@@ -324,14 +324,14 @@ SUBROUTINE CLASYF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
324324
*
325325
IF( J.LT.NB ) THEN
326326
*
327-
* Copy A(J+1:N, J+1) into H(J:N, J),
327+
* Copy A(J+1:M, J+1) into H(J:M, J),
328328
*
329329
CALL CCOPY( M-J, A( K+1, J+1 ), LDA,
330330
$ H( J+1, J+1 ), 1 )
331331
END IF
332332
*
333-
* Compute L(J+2, J+1) = WORK( 3:N ) / T(J, J+1),
334-
* where A(J, J+1) = T(J, J+1) and A(J+2:N, J) = L(J+2:N, J+1)
333+
* Compute L(J+2, J+1) = WORK( 3:M ) / T(J, J+1),
334+
* where A(J, J+1) = T(J, J+1) and A(J+2:M, J) = L(J+2:M, J+1)
335335
*
336336
IF( A( K, J+1 ).NE.ZERO ) THEN
337337
ALPHA = ONE / A( K, J+1 )
@@ -367,8 +367,8 @@ SUBROUTINE CLASYF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
367367
*
368368
K = J1+J-1
369369
*
370-
* H(J:N, J) := A(J:N, J) - H(J:N, 1:(J-1)) * L(J, J1:(J-1))^T,
371-
* where H(J:N, J) has been initialized to be A(J:N, J)
370+
* H(J:M, J) := A(J:M, J) - H(J:M, 1:(J-1)) * L(J, J1:(J-1))^T,
371+
* where H(J:M, J) has been initialized to be A(J:M, J)
372372
*
373373
IF( K.GT.2 ) THEN
374374
*
@@ -384,13 +384,13 @@ SUBROUTINE CLASYF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
384384
$ ONE, H( J, J ), 1 )
385385
END IF
386386
*
387-
* Copy H(J:N, J) into WORK
387+
* Copy H(J:M, J) into WORK
388388
*
389389
CALL CCOPY( M-J+1, H( J, J ), 1, WORK( 1 ), 1 )
390390
*
391391
IF( J.GT.K1 ) THEN
392392
*
393-
* Compute WORK := WORK - L(J:N, J-1) * T(J-1,J),
393+
* Compute WORK := WORK - L(J:M, J-1) * T(J-1,J),
394394
* where A(J-1, J) = T(J-1, J) and A(J, J-2) = L(J, J-1)
395395
*
396396
ALPHA = -A( J, K-1 )
@@ -403,16 +403,16 @@ SUBROUTINE CLASYF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
403403
*
404404
IF( J.LT.M ) THEN
405405
*
406-
* Compute WORK(2:N) = T(J, J) L((J+1):N, J)
407-
* where A(J, J) = T(J, J) and A((J+1):N, J-1) = L((J+1):N, J)
406+
* Compute WORK(2:M) = T(J, J) L((J+1):M, J)
407+
* where A(J, J) = T(J, J) and A((J+1):M, J-1) = L((J+1):M, J)
408408
*
409409
IF( K.GT.1 ) THEN
410410
ALPHA = -A( J, K )
411411
CALL CAXPY( M-J, ALPHA, A( J+1, K-1 ), 1,
412412
$ WORK( 2 ), 1 )
413413
ENDIF
414414
*
415-
* Find max(|WORK(2:n)|)
415+
* Find max(|WORK(2:M)|)
416416
*
417417
I2 = ICAMAX( M-J, WORK( 2 ), 1 ) + 1
418418
PIV = WORK( I2 )
@@ -427,14 +427,14 @@ SUBROUTINE CLASYF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
427427
WORK( I2 ) = WORK( I1 )
428428
WORK( I1 ) = PIV
429429
*
430-
* Swap A(I1+1:N, I1) with A(I2, I1+1:N)
430+
* Swap A(I1+1:M, I1) with A(I2, I1+1:M)
431431
*
432432
I1 = I1+J-1
433433
I2 = I2+J-1
434434
CALL CSWAP( I2-I1-1, A( I1+1, J1+I1-1 ), 1,
435435
$ A( I2, J1+I1 ), LDA )
436436
*
437-
* Swap A(I2+1:N, I1) with A(I2+1:N, I2)
437+
* Swap A(I2+1:M, I1) with A(I2+1:M, I2)
438438
*
439439
CALL CSWAP( M-I2, A( I2+1, J1+I1-1 ), 1,
440440
$ A( I2+1, J1+I2-1 ), 1 )
@@ -473,14 +473,14 @@ SUBROUTINE CLASYF_AA( UPLO, J1, M, NB, A, LDA, IPIV,
473473
*
474474
IF( J.LT.NB ) THEN
475475
*
476-
* Copy A(J+1:N, J+1) into H(J+1:N, J),
476+
* Copy A(J+1:M, J+1) into H(J+1:M, J),
477477
*
478478
CALL CCOPY( M-J, A( J+1, K+1 ), 1,
479479
$ H( J+1, J+1 ), 1 )
480480
END IF
481481
*
482-
* Compute L(J+2, J+1) = WORK( 3:N ) / T(J, J+1),
483-
* where A(J, J+1) = T(J, J+1) and A(J+2:N, J) = L(J+2:N, J+1)
482+
* Compute L(J+2, J+1) = WORK( 3:M ) / T(J, J+1),
483+
* where A(J, J+1) = T(J, J+1) and A(J+2:M, J) = L(J+2:M, J+1)
484484
*
485485
IF( A( J+1, K ).NE.ZERO ) THEN
486486
ALPHA = ONE / A( J+1, K )

0 commit comments

Comments
 (0)