Skip to content

Commit c137eb1

Browse files
committed
Fix leading dimension check
* TPMLQT, GEMLQT: Revert check of ldv and correct docs * Add input parameter checks for LASWLQ * LAMSWLQ: Fix mixed up column count of rhs (n) and original matrix (m)
1 parent 11d3fa9 commit c137eb1

20 files changed

Lines changed: 176 additions & 92 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/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/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/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

SRC/dtpmlqt.f

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,7 @@
103103
*> \param[in] LDV
104104
*> \verbatim
105105
*> LDV is INTEGER
106-
*> The leading dimension of the array V.
107-
*> If SIDE = 'L', LDV >= max(1,M);
108-
*> if SIDE = 'R', LDV >= max(1,N).
106+
*> The leading dimension of the array V. LDV >= K.
109107
*> \endverbatim
110108
*>
111109
*> \param[in] T
@@ -232,7 +230,7 @@ SUBROUTINE DTPMLQT( SIDE, TRANS, M, N, K, L, MB, V, LDV, T, LDT,
232230
* ..
233231
* .. Local Scalars ..
234232
LOGICAL LEFT, RIGHT, TRAN, NOTRAN
235-
INTEGER I, IB, NB, LB, KF, LDAQ, LDVQ
233+
INTEGER I, IB, NB, LB, KF, LDAQ
236234
* ..
237235
* .. External Functions ..
238236
LOGICAL LSAME
@@ -255,10 +253,8 @@ SUBROUTINE DTPMLQT( SIDE, TRANS, M, N, K, L, MB, V, LDV, T, LDT,
255253
NOTRAN = LSAME( TRANS, 'N' )
256254
*
257255
IF ( LEFT ) THEN
258-
LDVQ = MAX( 1, M )
259256
LDAQ = MAX( 1, K )
260257
ELSE IF ( RIGHT ) THEN
261-
LDVQ = MAX( 1, N )
262258
LDAQ = MAX( 1, M )
263259
END IF
264260
IF( .NOT.LEFT .AND. .NOT.RIGHT ) THEN
@@ -275,7 +271,7 @@ SUBROUTINE DTPMLQT( SIDE, TRANS, M, N, K, L, MB, V, LDV, T, LDT,
275271
INFO = -6
276272
ELSE IF( MB.LT.1 .OR. (MB.GT.K .AND. K.GT.0) ) THEN
277273
INFO = -7
278-
ELSE IF( LDV.LT.LDVQ ) THEN
274+
ELSE IF( LDV.LT.K ) THEN
279275
INFO = -9
280276
ELSE IF( LDT.LT.MB ) THEN
281277
INFO = -11

SRC/sgemlqt.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', LDV >= max(1,M);
100-
*> if SIDE = 'R', LDV >= max(1,N).
98+
*> The leading dimension of the array V. LDV >= max(1,K).
10199
*> \endverbatim
102100
*>
103101
*> \param[in] T
@@ -211,7 +209,7 @@ SUBROUTINE SGEMLQT( 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/slamswlq.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 SLAMSWLQ( 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 SLAMSWLQ( 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 SLAMSWLQ( 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

0 commit comments

Comments
 (0)