Diff for /rpl/lapack/lapack/zgetsls.f between versions 1.5 and 1.6

version 1.5, 2020/05/21 21:46:05 version 1.6, 2023/08/07 08:39:20
Line 154 Line 154
 *> \author Univ. of Colorado Denver  *> \author Univ. of Colorado Denver
 *> \author NAG Ltd.  *> \author NAG Ltd.
 *  *
 *> \date June 2017  
 *  
 *> \ingroup complex16GEsolve  *> \ingroup complex16GEsolve
 *  *
 *  =====================================================================  *  =====================================================================
       SUBROUTINE ZGETSLS( TRANS, M, N, NRHS, A, LDA, B, LDB,        SUBROUTINE ZGETSLS( 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 186 Line 183
 *     ..  *     ..
 *     .. 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, DUM( 1 )        DOUBLE PRECISION   ANRM, BIGNUM, BNRM, SMLNUM, DUM( 1 )
       COMPLEX*16         TQ( 5 ), WORKQ( 1 )        COMPLEX*16         TQ( 5 ), WORKQ( 1 )
 *     ..  *     ..
 *     .. External Functions ..  *     .. External Functions ..
       LOGICAL            LSAME        LOGICAL            LSAME
       INTEGER            ILAENV  
       DOUBLE PRECISION   DLAMCH, ZLANGE        DOUBLE PRECISION   DLAMCH, ZLANGE
       EXTERNAL           LSAME, ILAENV, DLABAD, DLAMCH, ZLANGE        EXTERNAL           LSAME, DLABAD, DLAMCH, ZLANGE
 *     ..  *     ..
 *     .. External Subroutines ..  *     .. External Subroutines ..
       EXTERNAL           ZGEQR, ZGEMQR, ZLASCL, ZLASET,        EXTERNAL           ZGEQR, ZGEMQR, ZLASCL, ZLASET,
Line 210 Line 206
 *     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, 'C' )        TRAN  = LSAME( TRANS, 'C' )
 *  *
       LQUERY = ( LWORK.EQ.-1 .OR. LWORK.EQ.-2 )        LQUERY = ( LWORK.EQ.-1 .OR. LWORK.EQ.-2 )
Line 233 Line 227
 *  *
       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 ZGEQR( M, N, A, LDA, TQ, -1, WORKQ, -1, INFO2 )           CALL ZGEQR( M, N, A, LDA, TQ, -1, WORKQ, -1, INFO2 )
Line 261 Line 255
          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
Line 271 Line 265
           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( 'ZGETSLS', -INFO )          CALL XERBLA( 'ZGETSLS', -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.5  
changed lines
  Added in v.1.6


CVSweb interface <joel.bertrand@systella.fr>