Diff for /rpl/lapack/lapack/dgetsls.f between versions 1.3 and 1.6

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

Removed from v.1.3  
changed lines
  Added in v.1.6


CVSweb interface <joel.bertrand@systella.fr>