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 | ||||