Skip to content

Commit 10634c1

Browse files
Merge pull request #658 from angsch/fix
Fix tests
2 parents 2f132ee + c137eb1 commit 10634c1

28 files changed

Lines changed: 335 additions & 139 deletions

SRC/cgemlqt.f

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,7 @@
9595
*> \param[in] LDV
9696
*> \verbatim
9797
*> LDV is INTEGER
98-
*> The leading dimension of the array V.
99-
*> If SIDE = 'L', M >= K >= 0;
100-
*> if SIDE = 'R', N >= K >= 0.
98+
*> The leading dimension of the array V. LDV >= max(1,K).
10199
*> \endverbatim
102100
*>
103101
*> \param[in] T
@@ -211,7 +209,7 @@ SUBROUTINE CGEMLQT( SIDE, TRANS, M, N, K, MB, V, LDV, T, LDT,
211209
INFO = -5
212210
ELSE IF( MB.LT.1 .OR. (MB.GT.K .AND. K.GT.0)) THEN
213211
INFO = -6
214-
ELSE IF( LDV.LT.MAX( 1, Q ) ) THEN
212+
ELSE IF( LDV.LT.MAX( 1, K ) ) THEN
215213
INFO = -8
216214
ELSE IF( LDT.LT.MB ) THEN
217215
INFO = -10

SRC/clamswlq.f

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
*> \param[in] N
5757
*> \verbatim
5858
*> N is INTEGER
59-
*> The number of columns of the matrix C. N >= M.
59+
*> The number of columns of the matrix C. N >= 0.
6060
*> \endverbatim
6161
*>
6262
*> \param[in] K
@@ -94,9 +94,7 @@
9494
*> \param[in] LDA
9595
*> \verbatim
9696
*> LDA is INTEGER
97-
*> The leading dimension of the array A.
98-
*> If SIDE = 'L', LDA >= max(1,M);
99-
*> if SIDE = 'R', LDA >= max(1,N).
97+
*> The leading dimension of the array A. LDA => max(1,K).
10098
*> \endverbatim
10199
*>
102100
*> \param[in] T
@@ -213,7 +211,7 @@ SUBROUTINE CLAMSWLQ( SIDE, TRANS, M, N, K, MB, NB, A, LDA, T,
213211
* ..
214212
* .. Local Scalars ..
215213
LOGICAL LEFT, RIGHT, TRAN, NOTRAN, LQUERY
216-
INTEGER I, II, KK, LW, CTR, Q
214+
INTEGER I, II, KK, LW, CTR
217215
* ..
218216
* .. External Functions ..
219217
LOGICAL LSAME
@@ -232,10 +230,8 @@ SUBROUTINE CLAMSWLQ( SIDE, TRANS, M, N, K, MB, NB, A, LDA, T,
232230
RIGHT = LSAME( SIDE, 'R' )
233231
IF (LEFT) THEN
234232
LW = N * MB
235-
Q = M
236233
ELSE
237234
LW = M * MB
238-
Q = N
239235
END IF
240236
*
241237
INFO = 0
@@ -247,11 +243,11 @@ SUBROUTINE CLAMSWLQ( SIDE, TRANS, M, N, K, MB, NB, A, LDA, T,
247243
INFO = -5
248244
ELSE IF( M.LT.K ) THEN
249245
INFO = -3
250-
ELSE IF( N.LT.M ) THEN
246+
ELSE IF( N.LT.0 ) THEN
251247
INFO = -4
252248
ELSE IF( K.LT.MB .OR. MB.LT.1) THEN
253249
INFO = -6
254-
ELSE IF( LDA.LT.MAX( 1, Q ) ) THEN
250+
ELSE IF( LDA.LT.MAX( 1, K ) ) THEN
255251
INFO = -9
256252
ELSE IF( LDT.LT.MAX( 1, MB) ) THEN
257253
INFO = -11

SRC/clamtsqr.f

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
*> SIDE = 'L' SIDE = 'R'
2626
*> TRANS = 'N': Q * C C * Q
2727
*> TRANS = 'C': Q**H * C C * Q**H
28-
*> where Q is a real orthogonal matrix defined as the product
28+
*> where Q is a complex unitary matrix defined as the product
2929
*> of blocked elementary reflectors computed by tall skinny
3030
*> QR factorization (CLATSQR)
3131
*> \endverbatim
@@ -56,15 +56,14 @@
5656
*> \param[in] N
5757
*> \verbatim
5858
*> N is INTEGER
59-
*> The number of columns of the matrix C. M >= N >= 0.
59+
*> The number of columns of the matrix C. N >= 0.
6060
*> \endverbatim
6161
*>
6262
*> \param[in] K
6363
*> \verbatim
6464
*> K is INTEGER
6565
*> The number of elementary reflectors whose product defines
66-
*> the matrix Q.
67-
*> N >= K >= 0;
66+
*> the matrix Q. M >= K >= 0;
6867
*>
6968
*> \endverbatim
7069
*>
@@ -164,8 +163,8 @@
164163
* =====================
165164
*>
166165
*> \verbatim
167-
*> Tall-Skinny QR (TSQR) performs QR by a sequence of orthogonal transformations,
168-
*> representing Q as a product of other orthogonal matrices
166+
*> Tall-Skinny QR (TSQR) performs QR by a sequence of unitary transformations,
167+
*> representing Q as a product of other unitary matrices
169168
*> Q = Q(1) * Q(2) * . . . * Q(k)
170169
*> where each Q(i) zeros out subdiagonal entries of a block of MB rows of A:
171170
*> Q(1) zeros out the subdiagonal entries of rows 1:MB of A
@@ -244,12 +243,12 @@ SUBROUTINE CLAMTSQR( SIDE, TRANS, M, N, K, MB, NB, A, LDA, T,
244243
INFO = -1
245244
ELSE IF( .NOT.TRAN .AND. .NOT.NOTRAN ) THEN
246245
INFO = -2
246+
ELSE IF( M.LT.K ) THEN
247+
INFO = -3
248+
ELSE IF( N.LT.0 ) THEN
249+
INFO = -4
247250
ELSE IF( K.LT.0 ) THEN
248251
INFO = -5
249-
ELSE IF( N.LT.K ) THEN
250-
INFO = -4
251-
ELSE IF( M.LT.N ) THEN
252-
INFO = -3
253252
ELSE IF( K.LT.NB .OR. NB.LT.1 ) THEN
254253
INFO = -7
255254
ELSE IF( LDA.LT.MAX( 1, Q ) ) THEN

SRC/claswlq.f

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
*> \verbatim
6161
*> NB is INTEGER
6262
*> The column block size to be used in the blocked QR.
63-
*> NB > M.
63+
*> NB > 0.
6464
*> \endverbatim
6565
*>
6666
*> \param[in,out] A
@@ -206,10 +206,10 @@ SUBROUTINE CLASWLQ( M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK,
206206
INFO = -2
207207
ELSE IF( MB.LT.1 .OR. ( MB.GT.M .AND. M.GT.0 )) THEN
208208
INFO = -3
209-
ELSE IF( NB.LE.M ) THEN
209+
ELSE IF( NB.LE.0 ) THEN
210210
INFO = -4
211211
ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
212-
INFO = -5
212+
INFO = -6
213213
ELSE IF( LDT.LT.MB ) THEN
214214
INFO = -8
215215
ELSE IF( ( LWORK.LT.M*MB) .AND. (.NOT.LQUERY) ) THEN

SRC/clatsqr.f

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,12 +202,12 @@ SUBROUTINE CLATSQR( M, N, MB, NB, A, LDA, T, LDT, WORK,
202202
INFO = -1
203203
ELSE IF( N.LT.0 .OR. M.LT.N ) THEN
204204
INFO = -2
205-
ELSE IF( MB.LE.N ) THEN
205+
ELSE IF( MB.LT.1 ) THEN
206206
INFO = -3
207207
ELSE IF( NB.LT.1 .OR. ( NB.GT.N .AND. N.GT.0 )) THEN
208208
INFO = -4
209209
ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
210-
INFO = -5
210+
INFO = -6
211211
ELSE IF( LDT.LT.NB ) THEN
212212
INFO = -8
213213
ELSE IF( LWORK.LT.(N*NB) .AND. (.NOT.LQUERY) ) THEN

SRC/ctpmlqt.f

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,7 @@
8888
*> \param[in] LDV
8989
*> \verbatim
9090
*> LDV is INTEGER
91-
*> The leading dimension of the array V.
92-
*> If SIDE = 'L', LDV >= max(1,M);
93-
*> if SIDE = 'R', LDV >= max(1,N).
91+
*> The leading dimension of the array V. LDV >= K.
9492
*> \endverbatim
9593
*>
9694
*> \param[in] T
@@ -217,7 +215,7 @@ SUBROUTINE CTPMLQT( SIDE, TRANS, M, N, K, L, MB, V, LDV, T, LDT,
217215
* ..
218216
* .. Local Scalars ..
219217
LOGICAL LEFT, RIGHT, TRAN, NOTRAN
220-
INTEGER I, IB, NB, LB, KF, LDAQ, LDVQ
218+
INTEGER I, IB, NB, LB, KF, LDAQ
221219
* ..
222220
* .. External Functions ..
223221
LOGICAL LSAME
@@ -240,10 +238,8 @@ SUBROUTINE CTPMLQT( SIDE, TRANS, M, N, K, L, MB, V, LDV, T, LDT,
240238
NOTRAN = LSAME( TRANS, 'N' )
241239
*
242240
IF ( LEFT ) THEN
243-
LDVQ = MAX( 1, M )
244241
LDAQ = MAX( 1, K )
245242
ELSE IF ( RIGHT ) THEN
246-
LDVQ = MAX( 1, N )
247243
LDAQ = MAX( 1, M )
248244
END IF
249245
IF( .NOT.LEFT .AND. .NOT.RIGHT ) THEN
@@ -260,7 +256,7 @@ SUBROUTINE CTPMLQT( SIDE, TRANS, M, N, K, L, MB, V, LDV, T, LDT,
260256
INFO = -6
261257
ELSE IF( MB.LT.1 .OR. (MB.GT.K .AND. K.GT.0) ) THEN
262258
INFO = -7
263-
ELSE IF( LDV.LT.LDVQ ) THEN
259+
ELSE IF( LDV.LT.K ) THEN
264260
INFO = -9
265261
ELSE IF( LDT.LT.MB ) THEN
266262
INFO = -11

SRC/dgemlqt.f

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,7 @@
110110
*> \param[in] LDV
111111
*> \verbatim
112112
*> LDV is INTEGER
113-
*> The leading dimension of the array V.
114-
*> If SIDE = 'L', LDV >= max(1,M);
115-
*> if SIDE = 'R', LDV >= max(1,N).
113+
*> The leading dimension of the array V. LDV >= max(1,K).
116114
*> \endverbatim
117115
*>
118116
*> \param[in] T
@@ -226,7 +224,7 @@ SUBROUTINE DGEMLQT( SIDE, TRANS, M, N, K, MB, V, LDV, T, LDT,
226224
INFO = -5
227225
ELSE IF( MB.LT.1 .OR. (MB.GT.K .AND. K.GT.0)) THEN
228226
INFO = -6
229-
ELSE IF( LDV.LT.MAX( 1, Q ) ) THEN
227+
ELSE IF( LDV.LT.MAX( 1, K ) ) THEN
230228
INFO = -8
231229
ELSE IF( LDT.LT.MB ) THEN
232230
INFO = -10

SRC/dlamswlq.f

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
*> \param[in] N
5757
*> \verbatim
5858
*> N is INTEGER
59-
*> The number of columns of the matrix C. N >= M.
59+
*> The number of columns of the matrix C. N >= 0.
6060
*> \endverbatim
6161
*>
6262
*> \param[in] K
@@ -94,9 +94,7 @@
9494
*> \param[in] LDA
9595
*> \verbatim
9696
*> LDA is INTEGER
97-
*> The leading dimension of the array A.
98-
*> If SIDE = 'L', LDA >= max(1,M);
99-
*> if SIDE = 'R', LDA >= max(1,N).
97+
*> The leading dimension of the array A. LDA >= max(1,K).
10098
*> \endverbatim
10199
*>
102100
*> \param[in] T
@@ -213,7 +211,7 @@ SUBROUTINE DLAMSWLQ( SIDE, TRANS, M, N, K, MB, NB, A, LDA, T,
213211
* ..
214212
* .. Local Scalars ..
215213
LOGICAL LEFT, RIGHT, TRAN, NOTRAN, LQUERY
216-
INTEGER I, II, KK, CTR, LW, Q
214+
INTEGER I, II, KK, CTR, LW
217215
* ..
218216
* .. External Functions ..
219217
LOGICAL LSAME
@@ -232,10 +230,8 @@ SUBROUTINE DLAMSWLQ( SIDE, TRANS, M, N, K, MB, NB, A, LDA, T,
232230
RIGHT = LSAME( SIDE, 'R' )
233231
IF (LEFT) THEN
234232
LW = N * MB
235-
Q = M
236233
ELSE
237234
LW = M * MB
238-
Q = N
239235
END IF
240236
*
241237
INFO = 0
@@ -247,11 +243,11 @@ SUBROUTINE DLAMSWLQ( SIDE, TRANS, M, N, K, MB, NB, A, LDA, T,
247243
INFO = -5
248244
ELSE IF( M.LT.K ) THEN
249245
INFO = -3
250-
ELSE IF( N.LT.M ) THEN
246+
ELSE IF( N.LT.0 ) THEN
251247
INFO = -4
252248
ELSE IF( K.LT.MB .OR. MB.LT.1) THEN
253249
INFO = -6
254-
ELSE IF( LDA.LT.MAX( 1, Q ) ) THEN
250+
ELSE IF( LDA.LT.MAX( 1, K ) ) THEN
255251
INFO = -9
256252
ELSE IF( LDT.LT.MAX( 1, MB) ) THEN
257253
INFO = -11

SRC/dlamtsqr.f

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,14 @@
5656
*> \param[in] N
5757
*> \verbatim
5858
*> N is INTEGER
59-
*> The number of columns of the matrix C. M >= N >= 0.
59+
*> The number of columns of the matrix C. N >= 0.
6060
*> \endverbatim
6161
*>
6262
*> \param[in] K
6363
*> \verbatim
6464
*> K is INTEGER
6565
*> The number of elementary reflectors whose product defines
66-
*> the matrix Q.
67-
*> N >= K >= 0;
66+
*> the matrix Q. M >= K >= 0;
6867
*>
6968
*> \endverbatim
7069
*>
@@ -244,12 +243,12 @@ SUBROUTINE DLAMTSQR( SIDE, TRANS, M, N, K, MB, NB, A, LDA, T,
244243
INFO = -1
245244
ELSE IF( .NOT.TRAN .AND. .NOT.NOTRAN ) THEN
246245
INFO = -2
246+
ELSE IF( M.LT.K ) THEN
247+
INFO = -3
248+
ELSE IF( N.LT.0 ) THEN
249+
INFO = -4
247250
ELSE IF( K.LT.0 ) THEN
248251
INFO = -5
249-
ELSE IF( N.LT.K ) THEN
250-
INFO = -4
251-
ELSE IF( M.LT.N ) THEN
252-
INFO = -3
253252
ELSE IF( K.LT.NB .OR. NB.LT.1 ) THEN
254253
INFO = -7
255254
ELSE IF( LDA.LT.MAX( 1, Q ) ) THEN

SRC/dlaswlq.f

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
*> \verbatim
6161
*> NB is INTEGER
6262
*> The column block size to be used in the blocked QR.
63-
*> NB > M.
63+
*> NB > 0.
6464
*> \endverbatim
6565
*>
6666
*> \param[in,out] A
@@ -202,10 +202,10 @@ SUBROUTINE DLASWLQ( M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK,
202202
INFO = -2
203203
ELSE IF( MB.LT.1 .OR. ( MB.GT.M .AND. M.GT.0 )) THEN
204204
INFO = -3
205-
ELSE IF( NB.LE.M ) THEN
205+
ELSE IF( NB.LT.0 ) THEN
206206
INFO = -4
207207
ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
208-
INFO = -5
208+
INFO = -6
209209
ELSE IF( LDT.LT.MB ) THEN
210210
INFO = -8
211211
ELSE IF( ( LWORK.LT.M*MB) .AND. (.NOT.LQUERY) ) THEN

0 commit comments

Comments
 (0)