version 1.2, 2017/06/17 11:06:18
|
version 1.3, 2018/05/29 06:55:16
|
Line 152
|
Line 152
|
*> \author Univ. of Colorado Denver |
*> \author Univ. of Colorado Denver |
*> \author NAG Ltd. |
*> \author NAG Ltd. |
* |
* |
*> \date December 2016 |
*> \date June 2017 |
* |
* |
*> \ingroup doubleGEsolve |
*> \ingroup doubleGEsolve |
* |
* |
Line 160
|
Line 160
|
SUBROUTINE DGETSLS( TRANS, M, N, NRHS, A, LDA, B, LDB, |
SUBROUTINE DGETSLS( TRANS, M, N, NRHS, A, LDA, B, LDB, |
$ WORK, LWORK, INFO ) |
$ WORK, LWORK, INFO ) |
* |
* |
* -- LAPACK driver routine (version 3.7.0) -- |
* -- LAPACK driver routine (version 3.7.1) -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* December 2016 |
* June 2017 |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
CHARACTER TRANS |
CHARACTER TRANS |
Line 185
|
Line 185
|
INTEGER I, IASCL, IBSCL, J, MINMN, MAXMN, BROW, |
INTEGER I, IASCL, IBSCL, J, MINMN, MAXMN, BROW, |
$ SCLLEN, MNK, TSZO, TSZM, LWO, LWM, LW1, LW2, |
$ SCLLEN, MNK, TSZO, TSZM, LWO, LWM, LW1, LW2, |
$ WSIZEO, WSIZEM, INFO2 |
$ WSIZEO, WSIZEM, INFO2 |
DOUBLE PRECISION ANRM, BIGNUM, BNRM, SMLNUM, TQ( 5 ), WORKQ |
DOUBLE PRECISION ANRM, BIGNUM, BNRM, SMLNUM, TQ( 5 ), WORKQ( 1 ) |
* .. |
* .. |
* .. External Functions .. |
* .. External Functions .. |
LOGICAL LSAME |
LOGICAL LSAME |
Line 233
|
Line 233
|
IF( M.GE.N ) THEN |
IF( M.GE.N ) THEN |
CALL DGEQR( M, N, A, LDA, TQ, -1, WORKQ, -1, INFO2 ) |
CALL DGEQR( M, N, A, LDA, TQ, -1, WORKQ, -1, INFO2 ) |
TSZO = INT( TQ( 1 ) ) |
TSZO = INT( TQ( 1 ) ) |
LWO = INT( WORKQ ) |
LWO = INT( WORKQ( 1 ) ) |
CALL DGEMQR( 'L', TRANS, M, NRHS, N, A, LDA, TQ, |
CALL DGEMQR( 'L', TRANS, M, NRHS, N, A, LDA, TQ, |
$ TSZO, B, LDB, WORKQ, -1, INFO2 ) |
$ TSZO, B, LDB, WORKQ, -1, INFO2 ) |
LWO = MAX( LWO, INT( WORKQ ) ) |
LWO = MAX( LWO, INT( WORKQ( 1 ) ) ) |
CALL DGEQR( M, N, A, LDA, TQ, -2, WORKQ, -2, INFO2 ) |
CALL DGEQR( M, N, A, LDA, TQ, -2, WORKQ, -2, INFO2 ) |
TSZM = INT( TQ( 1 ) ) |
TSZM = INT( TQ( 1 ) ) |
LWM = INT( WORKQ ) |
LWM = INT( WORKQ( 1 ) ) |
CALL DGEMQR( 'L', TRANS, M, NRHS, N, A, LDA, TQ, |
CALL DGEMQR( 'L', TRANS, M, NRHS, N, A, LDA, TQ, |
$ TSZM, B, LDB, WORKQ, -1, INFO2 ) |
$ TSZM, B, LDB, WORKQ, -1, INFO2 ) |
LWM = MAX( LWM, INT( WORKQ ) ) |
LWM = MAX( LWM, INT( WORKQ( 1 ) ) ) |
WSIZEO = TSZO + LWO |
WSIZEO = TSZO + LWO |
WSIZEM = TSZM + LWM |
WSIZEM = TSZM + LWM |
ELSE |
ELSE |
CALL DGELQ( M, N, A, LDA, TQ, -1, WORKQ, -1, INFO2 ) |
CALL DGELQ( M, N, A, LDA, TQ, -1, WORKQ, -1, INFO2 ) |
TSZO = INT( TQ( 1 ) ) |
TSZO = INT( TQ( 1 ) ) |
LWO = INT( WORKQ ) |
LWO = 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 ) |
$ TSZO, B, LDB, WORKQ, -1, INFO2 ) |
LWO = MAX( LWO, INT( WORKQ ) ) |
LWO = MAX( LWO, INT( WORKQ( 1 ) ) ) |
CALL DGELQ( M, N, A, LDA, TQ, -2, WORKQ, -2, INFO2 ) |
CALL DGELQ( M, N, A, LDA, TQ, -2, WORKQ, -2, INFO2 ) |
TSZM = INT( TQ( 1 ) ) |
TSZM = INT( TQ( 1 ) ) |
LWM = INT( WORKQ ) |
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 ) |
$ TSZO, B, LDB, WORKQ, -1, INFO2 ) |
LWM = MAX( LWM, INT( WORKQ ) ) |
LWM = MAX( LWM, INT( WORKQ( 1 ) ) ) |
WSIZEO = TSZO + LWO |
WSIZEO = TSZO + LWO |
WSIZEM = TSZM + LWM |
WSIZEM = TSZM + LWM |
END IF |
END IF |