Fix workspace query in LAPACK xGELQ (Reference-LAPACK 443)tags/v0.3.11^2
@@ -26,7 +26,7 @@ | |||||
*> where: | *> where: | ||||
*> | *> | ||||
*> Q is a N-by-N orthogonal matrix; | *> Q is a N-by-N orthogonal matrix; | ||||
*> L is an lower-triangular M-by-M matrix; | |||||
*> L is a lower-triangular M-by-M matrix; | |||||
*> 0 is a M-by-(N-M) zero matrix, if M < N. | *> 0 is a M-by-(N-M) zero matrix, if M < N. | ||||
*> | *> | ||||
*> \endverbatim | *> \endverbatim | ||||
@@ -187,7 +187,7 @@ | |||||
* .. | * .. | ||||
* .. Local Scalars .. | * .. Local Scalars .. | ||||
LOGICAL LQUERY, LMINWS, MINT, MINW | LOGICAL LQUERY, LMINWS, MINT, MINW | ||||
INTEGER MB, NB, MINTSZ, NBLCKS | |||||
INTEGER MB, NB, MINTSZ, NBLCKS, LWMIN, LWOPT, LWREQ | |||||
* .. | * .. | ||||
* .. External Functions .. | * .. External Functions .. | ||||
LOGICAL LSAME | LOGICAL LSAME | ||||
@@ -243,20 +243,32 @@ | |||||
* | * | ||||
* Determine if the workspace size satisfies minimal size | * Determine if the workspace size satisfies minimal size | ||||
* | * | ||||
IF( ( N.LE.M ) .OR. ( NB.LE.M ) .OR. ( NB.GE.N ) ) THEN | |||||
LWMIN = MAX( 1, N ) | |||||
LWOPT = MAX( 1, MB*N ) | |||||
ELSE | |||||
LWMIN = MAX( 1, M ) | |||||
LWOPT = MAX( 1, MB*M ) | |||||
END IF | |||||
LMINWS = .FALSE. | LMINWS = .FALSE. | ||||
IF( ( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) .OR. LWORK.LT.MB*M ) | |||||
$ .AND. ( LWORK.GE.M ) .AND. ( TSIZE.GE.MINTSZ ) | |||||
IF( ( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) .OR. LWORK.LT.LWOPT ) | |||||
$ .AND. ( LWORK.GE.LWMIN ) .AND. ( TSIZE.GE.MINTSZ ) | |||||
$ .AND. ( .NOT.LQUERY ) ) THEN | $ .AND. ( .NOT.LQUERY ) ) THEN | ||||
IF( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) ) THEN | IF( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) ) THEN | ||||
LMINWS = .TRUE. | LMINWS = .TRUE. | ||||
MB = 1 | MB = 1 | ||||
NB = N | NB = N | ||||
END IF | END IF | ||||
IF( LWORK.LT.MB*M ) THEN | |||||
IF( LWORK.LT.LWOPT ) THEN | |||||
LMINWS = .TRUE. | LMINWS = .TRUE. | ||||
MB = 1 | MB = 1 | ||||
END IF | END IF | ||||
END IF | END IF | ||||
IF( ( N.LE.M ) .OR. ( NB.LE.M ) .OR. ( NB.GE.N ) ) THEN | |||||
LWREQ = MAX( 1, MB*N ) | |||||
ELSE | |||||
LWREQ = MAX( 1, MB*M ) | |||||
END IF | |||||
* | * | ||||
IF( M.LT.0 ) THEN | IF( M.LT.0 ) THEN | ||||
INFO = -1 | INFO = -1 | ||||
@@ -267,7 +279,7 @@ | |||||
ELSE IF( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) | ELSE IF( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) | ||||
$ .AND. ( .NOT.LQUERY ) .AND. ( .NOT.LMINWS ) ) THEN | $ .AND. ( .NOT.LQUERY ) .AND. ( .NOT.LMINWS ) ) THEN | ||||
INFO = -6 | INFO = -6 | ||||
ELSE IF( ( LWORK.LT.MAX( 1, M*MB ) ) .AND .( .NOT.LQUERY ) | |||||
ELSE IF( ( LWORK.LT.LWREQ ) .AND .( .NOT.LQUERY ) | |||||
$ .AND. ( .NOT.LMINWS ) ) THEN | $ .AND. ( .NOT.LMINWS ) ) THEN | ||||
INFO = -8 | INFO = -8 | ||||
END IF | END IF | ||||
@@ -281,9 +293,9 @@ | |||||
T( 2 ) = MB | T( 2 ) = MB | ||||
T( 3 ) = NB | T( 3 ) = NB | ||||
IF( MINW ) THEN | IF( MINW ) THEN | ||||
WORK( 1 ) = MAX( 1, N ) | |||||
WORK( 1 ) = LWMIN | |||||
ELSE | ELSE | ||||
WORK( 1 ) = MAX( 1, MB*M ) | |||||
WORK( 1 ) = LWREQ | |||||
END IF | END IF | ||||
END IF | END IF | ||||
IF( INFO.NE.0 ) THEN | IF( INFO.NE.0 ) THEN | ||||
@@ -308,7 +320,7 @@ | |||||
$ LWORK, INFO ) | $ LWORK, INFO ) | ||||
END IF | END IF | ||||
* | * | ||||
WORK( 1 ) = MAX( 1, MB*M ) | |||||
WORK( 1 ) = LWREQ | |||||
* | * | ||||
RETURN | RETURN | ||||
* | * | ||||
@@ -261,7 +261,7 @@ | |||||
TSZM = INT( TQ( 1 ) ) | TSZM = INT( TQ( 1 ) ) | ||||
LWM = INT( WORKQ( 1 ) ) | LWM = INT( WORKQ( 1 ) ) | ||||
CALL CGEMLQ( 'L', TRANS, N, NRHS, M, A, LDA, TQ, | CALL CGEMLQ( 'L', TRANS, N, NRHS, M, A, LDA, TQ, | ||||
$ TSZO, B, LDB, WORKQ, -1, INFO2 ) | |||||
$ TSZM, B, LDB, WORKQ, -1, INFO2 ) | |||||
LWM = MAX( LWM, INT( WORKQ( 1 ) ) ) | LWM = MAX( LWM, INT( WORKQ( 1 ) ) ) | ||||
WSIZEO = TSZO + LWO | WSIZEO = TSZO + LWO | ||||
WSIZEM = TSZM + LWM | WSIZEM = TSZM + LWM | ||||
@@ -26,7 +26,7 @@ | |||||
*> where: | *> where: | ||||
*> | *> | ||||
*> Q is a N-by-N orthogonal matrix; | *> Q is a N-by-N orthogonal matrix; | ||||
*> L is an lower-triangular M-by-M matrix; | |||||
*> L is a lower-triangular M-by-M matrix; | |||||
*> 0 is a M-by-(N-M) zero matrix, if M < N. | *> 0 is a M-by-(N-M) zero matrix, if M < N. | ||||
*> | *> | ||||
*> \endverbatim | *> \endverbatim | ||||
@@ -187,7 +187,7 @@ | |||||
* .. | * .. | ||||
* .. Local Scalars .. | * .. Local Scalars .. | ||||
LOGICAL LQUERY, LMINWS, MINT, MINW | LOGICAL LQUERY, LMINWS, MINT, MINW | ||||
INTEGER MB, NB, MINTSZ, NBLCKS | |||||
INTEGER MB, NB, MINTSZ, NBLCKS, LWMIN, LWOPT, LWREQ | |||||
* .. | * .. | ||||
* .. External Functions .. | * .. External Functions .. | ||||
LOGICAL LSAME | LOGICAL LSAME | ||||
@@ -243,20 +243,32 @@ | |||||
* | * | ||||
* Determine if the workspace size satisfies minimal size | * Determine if the workspace size satisfies minimal size | ||||
* | * | ||||
IF( ( N.LE.M ) .OR. ( NB.LE.M ) .OR. ( NB.GE.N ) ) THEN | |||||
LWMIN = MAX( 1, N ) | |||||
LWOPT = MAX( 1, MB*N ) | |||||
ELSE | |||||
LWMIN = MAX( 1, M ) | |||||
LWOPT = MAX( 1, MB*M ) | |||||
END IF | |||||
LMINWS = .FALSE. | LMINWS = .FALSE. | ||||
IF( ( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) .OR. LWORK.LT.MB*M ) | |||||
$ .AND. ( LWORK.GE.M ) .AND. ( TSIZE.GE.MINTSZ ) | |||||
IF( ( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) .OR. LWORK.LT.LWOPT ) | |||||
$ .AND. ( LWORK.GE.LWMIN ) .AND. ( TSIZE.GE.MINTSZ ) | |||||
$ .AND. ( .NOT.LQUERY ) ) THEN | $ .AND. ( .NOT.LQUERY ) ) THEN | ||||
IF( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) ) THEN | IF( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) ) THEN | ||||
LMINWS = .TRUE. | LMINWS = .TRUE. | ||||
MB = 1 | MB = 1 | ||||
NB = N | NB = N | ||||
END IF | END IF | ||||
IF( LWORK.LT.MB*M ) THEN | |||||
IF( LWORK.LT.LWOPT ) THEN | |||||
LMINWS = .TRUE. | LMINWS = .TRUE. | ||||
MB = 1 | MB = 1 | ||||
END IF | END IF | ||||
END IF | END IF | ||||
IF( ( N.LE.M ) .OR. ( NB.LE.M ) .OR. ( NB.GE.N ) ) THEN | |||||
LWREQ = MAX( 1, MB*N ) | |||||
ELSE | |||||
LWREQ = MAX( 1, MB*M ) | |||||
END IF | |||||
* | * | ||||
IF( M.LT.0 ) THEN | IF( M.LT.0 ) THEN | ||||
INFO = -1 | INFO = -1 | ||||
@@ -267,7 +279,7 @@ | |||||
ELSE IF( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) | ELSE IF( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) | ||||
$ .AND. ( .NOT.LQUERY ) .AND. ( .NOT.LMINWS ) ) THEN | $ .AND. ( .NOT.LQUERY ) .AND. ( .NOT.LMINWS ) ) THEN | ||||
INFO = -6 | INFO = -6 | ||||
ELSE IF( ( LWORK.LT.MAX( 1, M*MB ) ) .AND .( .NOT.LQUERY ) | |||||
ELSE IF( ( LWORK.LT.LWREQ ) .AND .( .NOT.LQUERY ) | |||||
$ .AND. ( .NOT.LMINWS ) ) THEN | $ .AND. ( .NOT.LMINWS ) ) THEN | ||||
INFO = -8 | INFO = -8 | ||||
END IF | END IF | ||||
@@ -281,9 +293,9 @@ | |||||
T( 2 ) = MB | T( 2 ) = MB | ||||
T( 3 ) = NB | T( 3 ) = NB | ||||
IF( MINW ) THEN | IF( MINW ) THEN | ||||
WORK( 1 ) = MAX( 1, N ) | |||||
WORK( 1 ) = LWMIN | |||||
ELSE | ELSE | ||||
WORK( 1 ) = MAX( 1, MB*M ) | |||||
WORK( 1 ) = LWREQ | |||||
END IF | END IF | ||||
END IF | END IF | ||||
IF( INFO.NE.0 ) THEN | IF( INFO.NE.0 ) THEN | ||||
@@ -308,7 +320,7 @@ | |||||
$ LWORK, INFO ) | $ LWORK, INFO ) | ||||
END IF | END IF | ||||
* | * | ||||
WORK( 1 ) = MAX( 1, MB*M ) | |||||
WORK( 1 ) = LWREQ | |||||
* | * | ||||
RETURN | RETURN | ||||
* | * | ||||
@@ -258,7 +258,7 @@ | |||||
TSZM = INT( TQ( 1 ) ) | TSZM = INT( TQ( 1 ) ) | ||||
LWM = INT( WORKQ( 1 ) ) | LWM = INT( WORKQ( 1 ) ) | ||||
CALL DGEMLQ( 'L', TRANS, N, NRHS, M, A, LDA, TQ, | CALL DGEMLQ( 'L', TRANS, N, NRHS, M, A, LDA, TQ, | ||||
$ TSZO, B, LDB, WORKQ, -1, INFO2 ) | |||||
$ TSZM, B, LDB, WORKQ, -1, INFO2 ) | |||||
LWM = MAX( LWM, INT( WORKQ( 1 ) ) ) | LWM = MAX( LWM, INT( WORKQ( 1 ) ) ) | ||||
WSIZEO = TSZO + LWO | WSIZEO = TSZO + LWO | ||||
WSIZEM = TSZM + LWM | WSIZEM = TSZM + LWM | ||||
@@ -26,7 +26,7 @@ | |||||
*> where: | *> where: | ||||
*> | *> | ||||
*> Q is a N-by-N orthogonal matrix; | *> Q is a N-by-N orthogonal matrix; | ||||
*> L is an lower-triangular M-by-M matrix; | |||||
*> L is a lower-triangular M-by-M matrix; | |||||
*> 0 is a M-by-(N-M) zero matrix, if M < N. | *> 0 is a M-by-(N-M) zero matrix, if M < N. | ||||
*> | *> | ||||
*> \endverbatim | *> \endverbatim | ||||
@@ -187,7 +187,7 @@ | |||||
* .. | * .. | ||||
* .. Local Scalars .. | * .. Local Scalars .. | ||||
LOGICAL LQUERY, LMINWS, MINT, MINW | LOGICAL LQUERY, LMINWS, MINT, MINW | ||||
INTEGER MB, NB, MINTSZ, NBLCKS | |||||
INTEGER MB, NB, MINTSZ, NBLCKS, LWMIN, LWOPT, LWREQ | |||||
* .. | * .. | ||||
* .. External Functions .. | * .. External Functions .. | ||||
LOGICAL LSAME | LOGICAL LSAME | ||||
@@ -243,20 +243,32 @@ | |||||
* | * | ||||
* Determine if the workspace size satisfies minimal size | * Determine if the workspace size satisfies minimal size | ||||
* | * | ||||
IF( ( N.LE.M ) .OR. ( NB.LE.M ) .OR. ( NB.GE.N ) ) THEN | |||||
LWMIN = MAX( 1, N ) | |||||
LWOPT = MAX( 1, MB*N ) | |||||
ELSE | |||||
LWMIN = MAX( 1, M ) | |||||
LWOPT = MAX( 1, MB*M ) | |||||
END IF | |||||
LMINWS = .FALSE. | LMINWS = .FALSE. | ||||
IF( ( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) .OR. LWORK.LT.MB*M ) | |||||
$ .AND. ( LWORK.GE.M ) .AND. ( TSIZE.GE.MINTSZ ) | |||||
IF( ( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) .OR. LWORK.LT.LWOPT ) | |||||
$ .AND. ( LWORK.GE.LWMIN ) .AND. ( TSIZE.GE.MINTSZ ) | |||||
$ .AND. ( .NOT.LQUERY ) ) THEN | $ .AND. ( .NOT.LQUERY ) ) THEN | ||||
IF( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) ) THEN | IF( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) ) THEN | ||||
LMINWS = .TRUE. | LMINWS = .TRUE. | ||||
MB = 1 | MB = 1 | ||||
NB = N | NB = N | ||||
END IF | END IF | ||||
IF( LWORK.LT.MB*M ) THEN | |||||
IF( LWORK.LT.LWOPT ) THEN | |||||
LMINWS = .TRUE. | LMINWS = .TRUE. | ||||
MB = 1 | MB = 1 | ||||
END IF | END IF | ||||
END IF | END IF | ||||
IF( ( N.LE.M ) .OR. ( NB.LE.M ) .OR. ( NB.GE.N ) ) THEN | |||||
LWREQ = MAX( 1, MB*N ) | |||||
ELSE | |||||
LWREQ = MAX( 1, MB*M ) | |||||
END IF | |||||
* | * | ||||
IF( M.LT.0 ) THEN | IF( M.LT.0 ) THEN | ||||
INFO = -1 | INFO = -1 | ||||
@@ -267,7 +279,7 @@ | |||||
ELSE IF( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) | ELSE IF( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) | ||||
$ .AND. ( .NOT.LQUERY ) .AND. ( .NOT.LMINWS ) ) THEN | $ .AND. ( .NOT.LQUERY ) .AND. ( .NOT.LMINWS ) ) THEN | ||||
INFO = -6 | INFO = -6 | ||||
ELSE IF( ( LWORK.LT.MAX( 1, M*MB ) ) .AND .( .NOT.LQUERY ) | |||||
ELSE IF( ( LWORK.LT.LWREQ ) .AND .( .NOT.LQUERY ) | |||||
$ .AND. ( .NOT.LMINWS ) ) THEN | $ .AND. ( .NOT.LMINWS ) ) THEN | ||||
INFO = -8 | INFO = -8 | ||||
END IF | END IF | ||||
@@ -281,9 +293,9 @@ | |||||
T( 2 ) = MB | T( 2 ) = MB | ||||
T( 3 ) = NB | T( 3 ) = NB | ||||
IF( MINW ) THEN | IF( MINW ) THEN | ||||
WORK( 1 ) = MAX( 1, N ) | |||||
WORK( 1 ) = LWMIN | |||||
ELSE | ELSE | ||||
WORK( 1 ) = MAX( 1, MB*M ) | |||||
WORK( 1 ) = LWREQ | |||||
END IF | END IF | ||||
END IF | END IF | ||||
IF( INFO.NE.0 ) THEN | IF( INFO.NE.0 ) THEN | ||||
@@ -308,7 +320,7 @@ | |||||
$ LWORK, INFO ) | $ LWORK, INFO ) | ||||
END IF | END IF | ||||
* | * | ||||
WORK( 1 ) = MAX( 1, MB*M ) | |||||
WORK( 1 ) = LWREQ | |||||
RETURN | RETURN | ||||
* | * | ||||
* End of SGELQ | * End of SGELQ | ||||
@@ -258,7 +258,7 @@ | |||||
TSZM = INT( TQ( 1 ) ) | TSZM = INT( TQ( 1 ) ) | ||||
LWM = INT( WORKQ( 1 ) ) | LWM = INT( WORKQ( 1 ) ) | ||||
CALL SGEMLQ( 'L', TRANS, N, NRHS, M, A, LDA, TQ, | CALL SGEMLQ( 'L', TRANS, N, NRHS, M, A, LDA, TQ, | ||||
$ TSZO, B, LDB, WORKQ, -1, INFO2 ) | |||||
$ TSZM, B, LDB, WORKQ, -1, INFO2 ) | |||||
LWM = MAX( LWM, INT( WORKQ( 1 ) ) ) | LWM = MAX( LWM, INT( WORKQ( 1 ) ) ) | ||||
WSIZEO = TSZO + LWO | WSIZEO = TSZO + LWO | ||||
WSIZEM = TSZM + LWM | WSIZEM = TSZM + LWM | ||||
@@ -26,7 +26,7 @@ | |||||
*> where: | *> where: | ||||
*> | *> | ||||
*> Q is a N-by-N orthogonal matrix; | *> Q is a N-by-N orthogonal matrix; | ||||
*> L is an lower-triangular M-by-M matrix; | |||||
*> L is a lower-triangular M-by-M matrix; | |||||
*> 0 is a M-by-(N-M) zero matrix, if M < N. | *> 0 is a M-by-(N-M) zero matrix, if M < N. | ||||
*> | *> | ||||
*> \endverbatim | *> \endverbatim | ||||
@@ -187,7 +187,7 @@ | |||||
* .. | * .. | ||||
* .. Local Scalars .. | * .. Local Scalars .. | ||||
LOGICAL LQUERY, LMINWS, MINT, MINW | LOGICAL LQUERY, LMINWS, MINT, MINW | ||||
INTEGER MB, NB, MINTSZ, NBLCKS | |||||
INTEGER MB, NB, MINTSZ, NBLCKS, LWMIN, LWOPT, LWREQ | |||||
* .. | * .. | ||||
* .. External Functions .. | * .. External Functions .. | ||||
LOGICAL LSAME | LOGICAL LSAME | ||||
@@ -243,20 +243,32 @@ | |||||
* | * | ||||
* Determine if the workspace size satisfies minimal size | * Determine if the workspace size satisfies minimal size | ||||
* | * | ||||
IF( ( N.LE.M ) .OR. ( NB.LE.M ) .OR. ( NB.GE.N ) ) THEN | |||||
LWMIN = MAX( 1, N ) | |||||
LWOPT = MAX( 1, MB*N ) | |||||
ELSE | |||||
LWMIN = MAX( 1, M ) | |||||
LWOPT = MAX( 1, MB*M ) | |||||
END IF | |||||
LMINWS = .FALSE. | LMINWS = .FALSE. | ||||
IF( ( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) .OR. LWORK.LT.MB*M ) | |||||
$ .AND. ( LWORK.GE.M ) .AND. ( TSIZE.GE.MINTSZ ) | |||||
IF( ( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) .OR. LWORK.LT.LWOPT ) | |||||
$ .AND. ( LWORK.GE.LWMIN ) .AND. ( TSIZE.GE.MINTSZ ) | |||||
$ .AND. ( .NOT.LQUERY ) ) THEN | $ .AND. ( .NOT.LQUERY ) ) THEN | ||||
IF( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) ) THEN | IF( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) ) THEN | ||||
LMINWS = .TRUE. | LMINWS = .TRUE. | ||||
MB = 1 | MB = 1 | ||||
NB = N | NB = N | ||||
END IF | END IF | ||||
IF( LWORK.LT.MB*M ) THEN | |||||
IF( LWORK.LT.LWOPT ) THEN | |||||
LMINWS = .TRUE. | LMINWS = .TRUE. | ||||
MB = 1 | MB = 1 | ||||
END IF | END IF | ||||
END IF | END IF | ||||
IF( ( N.LE.M ) .OR. ( NB.LE.M ) .OR. ( NB.GE.N ) ) THEN | |||||
LWREQ = MAX( 1, MB*N ) | |||||
ELSE | |||||
LWREQ = MAX( 1, MB*M ) | |||||
END IF | |||||
* | * | ||||
IF( M.LT.0 ) THEN | IF( M.LT.0 ) THEN | ||||
INFO = -1 | INFO = -1 | ||||
@@ -267,7 +279,7 @@ | |||||
ELSE IF( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) | ELSE IF( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) | ||||
$ .AND. ( .NOT.LQUERY ) .AND. ( .NOT.LMINWS ) ) THEN | $ .AND. ( .NOT.LQUERY ) .AND. ( .NOT.LMINWS ) ) THEN | ||||
INFO = -6 | INFO = -6 | ||||
ELSE IF( ( LWORK.LT.MAX( 1, M*MB ) ) .AND .( .NOT.LQUERY ) | |||||
ELSE IF( ( LWORK.LT.LWREQ ) .AND .( .NOT.LQUERY ) | |||||
$ .AND. ( .NOT.LMINWS ) ) THEN | $ .AND. ( .NOT.LMINWS ) ) THEN | ||||
INFO = -8 | INFO = -8 | ||||
END IF | END IF | ||||
@@ -281,9 +293,9 @@ | |||||
T( 2 ) = MB | T( 2 ) = MB | ||||
T( 3 ) = NB | T( 3 ) = NB | ||||
IF( MINW ) THEN | IF( MINW ) THEN | ||||
WORK( 1 ) = MAX( 1, N ) | |||||
WORK( 1 ) = LWMIN | |||||
ELSE | ELSE | ||||
WORK( 1 ) = MAX( 1, MB*M ) | |||||
WORK( 1 ) = LWREQ | |||||
END IF | END IF | ||||
END IF | END IF | ||||
IF( INFO.NE.0 ) THEN | IF( INFO.NE.0 ) THEN | ||||
@@ -308,7 +320,7 @@ | |||||
$ LWORK, INFO ) | $ LWORK, INFO ) | ||||
END IF | END IF | ||||
* | * | ||||
WORK( 1 ) = MAX( 1, MB*M ) | |||||
WORK( 1 ) = LWREQ | |||||
* | * | ||||
RETURN | RETURN | ||||
* | * | ||||
@@ -261,7 +261,7 @@ | |||||
TSZM = INT( TQ( 1 ) ) | TSZM = INT( TQ( 1 ) ) | ||||
LWM = INT( WORKQ( 1 ) ) | LWM = INT( WORKQ( 1 ) ) | ||||
CALL ZGEMLQ( 'L', TRANS, N, NRHS, M, A, LDA, TQ, | CALL ZGEMLQ( 'L', TRANS, N, NRHS, M, A, LDA, TQ, | ||||
$ TSZO, B, LDB, WORKQ, -1, INFO2 ) | |||||
$ TSZM, B, LDB, WORKQ, -1, INFO2 ) | |||||
LWM = MAX( LWM, INT( WORKQ( 1 ) ) ) | LWM = MAX( LWM, INT( WORKQ( 1 ) ) ) | ||||
WSIZEO = TSZO + LWO | WSIZEO = TSZO + LWO | ||||
WSIZEM = TSZM + LWM | WSIZEM = TSZM + LWM | ||||