version 1.3, 2018/05/29 06:55:16
|
version 1.6, 2023/08/07 08:38:50
|
Line 1
|
Line 1
|
|
*> \brief \b DGETSLS |
|
* |
* Definition: |
* Definition: |
* =========== |
* =========== |
* |
* |
Line 152
|
Line 154
|
*> \author Univ. of Colorado Denver |
*> \author Univ. of Colorado Denver |
*> \author NAG Ltd. |
*> \author NAG Ltd. |
* |
* |
*> \date June 2017 |
|
* |
|
*> \ingroup doubleGEsolve |
*> \ingroup doubleGEsolve |
* |
* |
* ===================================================================== |
* ===================================================================== |
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.1) -- |
* -- LAPACK driver routine -- |
* -- 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..-- |
* June 2017 |
|
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
CHARACTER TRANS |
CHARACTER TRANS |
Line 182
|
Line 181
|
* .. |
* .. |
* .. Local Scalars .. |
* .. Local Scalars .. |
LOGICAL LQUERY, TRAN |
LOGICAL LQUERY, TRAN |
INTEGER I, IASCL, IBSCL, J, MINMN, MAXMN, BROW, |
INTEGER I, IASCL, IBSCL, J, MAXMN, BROW, |
$ SCLLEN, MNK, TSZO, TSZM, LWO, LWM, LW1, LW2, |
$ SCLLEN, TSZO, TSZM, LWO, LWM, LW1, LW2, |
$ WSIZEO, WSIZEM, INFO2 |
$ WSIZEO, WSIZEM, INFO2 |
DOUBLE PRECISION ANRM, BIGNUM, BNRM, SMLNUM, TQ( 5 ), WORKQ( 1 ) |
DOUBLE PRECISION ANRM, BIGNUM, BNRM, SMLNUM, TQ( 5 ), WORKQ( 1 ) |
* .. |
* .. |
* .. External Functions .. |
* .. External Functions .. |
LOGICAL LSAME |
LOGICAL LSAME |
INTEGER ILAENV |
|
DOUBLE PRECISION DLAMCH, DLANGE |
DOUBLE PRECISION DLAMCH, DLANGE |
EXTERNAL LSAME, ILAENV, DLABAD, DLAMCH, DLANGE |
EXTERNAL LSAME, DLABAD, DLAMCH, DLANGE |
* .. |
* .. |
* .. External Subroutines .. |
* .. External Subroutines .. |
EXTERNAL DGEQR, DGEMQR, DLASCL, DLASET, |
EXTERNAL DGEQR, DGEMQR, DLASCL, DLASET, |
Line 205
|
Line 203
|
* Test the input arguments. |
* Test the input arguments. |
* |
* |
INFO = 0 |
INFO = 0 |
MINMN = MIN( M, N ) |
|
MAXMN = MAX( M, N ) |
MAXMN = MAX( M, N ) |
MNK = MAX( MINMN, NRHS ) |
|
TRAN = LSAME( TRANS, 'T' ) |
TRAN = LSAME( TRANS, 'T' ) |
* |
* |
LQUERY = ( LWORK.EQ.-1 .OR. LWORK.EQ.-2 ) |
LQUERY = ( LWORK.EQ.-1 .OR. LWORK.EQ.-2 ) |
Line 228
|
Line 224
|
* |
* |
IF( INFO.EQ.0 ) THEN |
IF( INFO.EQ.0 ) THEN |
* |
* |
* Determine the block size and minimum LWORK |
* Determine the optimum and minimum LWORK |
* |
* |
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 ) |
Line 256
|
Line 252
|
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 |
Line 266
|
Line 262
|
INFO = -10 |
INFO = -10 |
END IF |
END IF |
* |
* |
|
WORK( 1 ) = DBLE( WSIZEO ) |
|
* |
END IF |
END IF |
* |
* |
IF( INFO.NE.0 ) THEN |
IF( INFO.NE.0 ) THEN |
CALL XERBLA( 'DGETSLS', -INFO ) |
CALL XERBLA( 'DGETSLS', -INFO ) |
WORK( 1 ) = DBLE( WSIZEO ) |
|
RETURN |
RETURN |
END IF |
END IF |
IF( LQUERY ) THEN |
IF( LQUERY ) THEN |
IF( LWORK.EQ.-1 ) WORK( 1 ) = REAL( WSIZEO ) |
IF( LWORK.EQ.-2 ) WORK( 1 ) = DBLE( WSIZEM ) |
IF( LWORK.EQ.-2 ) WORK( 1 ) = REAL( WSIZEM ) |
|
RETURN |
RETURN |
END IF |
END IF |
IF( LWORK.LT.WSIZEO ) THEN |
IF( LWORK.LT.WSIZEO ) THEN |