109109* >
110110* > \param[out] WORK
111111* > \verbatim
112- * > (workspace) COMPLEX*16 array, dimension (MAX(1,LWORK))
112+ * > (workspace) COMPLEX*16 array, dimension (MAX(1,LWORK))
113+ * > On exit, if INFO = 0, WORK(1) returns the minimal LWORK.
113114* > \endverbatim
114115* >
115116* > \param[in] LWORK
116117* > \verbatim
117118* > LWORK is INTEGER
118- * > The dimension of the array WORK.
119+ * > The dimension of the array WORK. LWORK >= 1.
119120* > If LWORK = -1, then a workspace query is assumed. The routine
120121* > only calculates the size of the WORK array, returns this
121122* > value as WORK(1), and no error message related to WORK
@@ -186,7 +187,7 @@ SUBROUTINE ZGEMLQ( SIDE, TRANS, M, N, K, A, LDA, T, TSIZE,
186187* ..
187188* .. Local Scalars ..
188189 LOGICAL LEFT, RIGHT, TRAN, NOTRAN, LQUERY
189- INTEGER MB, NB, LW, NBLCKS, MN
190+ INTEGER MB, NB, LW, NBLCKS, MN, MINMNK, LWMIN
190191* ..
191192* .. External Functions ..
192193 LOGICAL LSAME
@@ -202,7 +203,7 @@ SUBROUTINE ZGEMLQ( SIDE, TRANS, M, N, K, A, LDA, T, TSIZE,
202203*
203204* Test the input arguments
204205*
205- LQUERY = LWORK.EQ. - 1
206+ LQUERY = ( LWORK.EQ. - 1 )
206207 NOTRAN = LSAME( TRANS, ' N' )
207208 TRAN = LSAME( TRANS, ' C' )
208209 LEFT = LSAME( SIDE, ' L' )
@@ -217,6 +218,13 @@ SUBROUTINE ZGEMLQ( SIDE, TRANS, M, N, K, A, LDA, T, TSIZE,
217218 LW = M * MB
218219 MN = N
219220 END IF
221+ *
222+ MINMNK = MIN ( M, N, K )
223+ IF ( MINMNK.EQ. 0 ) THEN
224+ LWMIN = 1
225+ ELSE
226+ LWMIN = MAX ( 1 , LW )
227+ END IF
220228*
221229 IF ( ( NB.GT. K ) .AND. ( MN.GT. K ) ) THEN
222230 IF ( MOD ( MN - K, NB - K ) .EQ. 0 ) THEN
@@ -245,7 +253,7 @@ SUBROUTINE ZGEMLQ( SIDE, TRANS, M, N, K, A, LDA, T, TSIZE,
245253 INFO = - 9
246254 ELSE IF ( LDC.LT. MAX ( 1 , M ) ) THEN
247255 INFO = - 11
248- ELSE IF ( ( LWORK.LT. MAX ( 1 , LW ) ) .AND. ( .NOT. LQUERY ) ) THEN
256+ ELSE IF ( ( LWORK.LT. LWMIN ) .AND. ( .NOT. LQUERY ) ) THEN
249257 INFO = - 13
250258 END IF
251259*
@@ -262,7 +270,7 @@ SUBROUTINE ZGEMLQ( SIDE, TRANS, M, N, K, A, LDA, T, TSIZE,
262270*
263271* Quick return if possible
264272*
265- IF ( MIN ( M, N, K ) .EQ. 0 ) THEN
273+ IF ( MINMNK .EQ. 0 ) THEN
266274 RETURN
267275 END IF
268276*
0 commit comments