Diff for /rpl/lapack/lapack/dgelq.f between versions 1.4 and 1.5

version 1.4, 2020/05/21 21:45:56 version 1.5, 2023/08/07 08:38:48
Line 26 Line 26
 *> 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
Line 170 Line 170
       SUBROUTINE DGELQ( M, N, A, LDA, T, TSIZE, WORK, LWORK,        SUBROUTINE DGELQ( M, N, A, LDA, T, TSIZE, WORK, LWORK,
      $                  INFO )       $                  INFO )
 *  *
 *  -- LAPACK computational routine (version 3.9.0) --  *  -- LAPACK computational 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. --
 *     November 2019  
 *  *
 *     .. Scalar Arguments ..  *     .. Scalar Arguments ..
       INTEGER            INFO, LDA, M, N, TSIZE, LWORK        INTEGER            INFO, LDA, M, N, TSIZE, LWORK
Line 187 Line 186
 *     ..  *     ..
 *     .. 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
Line 243 Line 242
 *  *
 *     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 )        IF( ( TSIZE.LT.MAX( 1, MB*M*NBLCKS + 5 ) .OR. LWORK.LT.LWOPT )
      $    .AND. ( LWORK.GE.M ) .AND. ( TSIZE.GE.MINTSZ )       $    .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
Line 267 Line 278
       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
Line 281 Line 292
         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
Line 308 Line 319
      $                LWORK, INFO )       $                LWORK, INFO )
       END IF        END IF
 *  *
       WORK( 1 ) = MAX( 1, MB*M )        WORK( 1 ) = LWREQ
 *  *
       RETURN        RETURN
 *  *

Removed from v.1.4  
changed lines
  Added in v.1.5


CVSweb interface <joel.bertrand@systella.fr>