Diff for /rpl/lapack/lapack/zgelq.f between versions 1.3 and 1.5

version 1.3, 2018/05/29 07:18:14 version 1.5, 2023/08/07 08:39:17
Line 1 Line 1
   *> \brief \b ZGELQ
 *  *
 *  Definition:  *  Definition:
 *  ===========  *  ===========
Line 17 Line 18
 *  =============  *  =============
 *>  *>
 *> \verbatim  *> \verbatim
 *> ZGELQ computes a LQ factorization of an M-by-N matrix A.  *>
   *> ZGELQ computes an LQ factorization of a complex M-by-N matrix A:
   *>
   *>    A = ( L 0 ) *  Q
   *>
   *> where:
   *>
   *>    Q is a N-by-N orthogonal matrix;
   *>    L is a lower-triangular M-by-M matrix;
   *>    0 is a M-by-(N-M) zero matrix, if M < N.
   *>
 *> \endverbatim  *> \endverbatim
 *  *
 *  Arguments:  *  Arguments:
Line 138 Line 149
 *> \verbatim  *> \verbatim
 *>  *>
 *> These details are particular for this LAPACK implementation. Users should not   *> These details are particular for this LAPACK implementation. Users should not 
 *> take them for granted. These details may change in the future, and are unlikely not  *> take them for granted. These details may change in the future, and are not likely
 *> true for another LAPACK implementation. These details are relevant if one wants  *> true for another LAPACK implementation. These details are relevant if one wants
 *> to try to understand the code. They are not part of the interface.  *> to try to understand the code. They are not part of the interface.
 *>  *>
Line 159 Line 170
       SUBROUTINE ZGELQ( M, N, A, LDA, T, TSIZE, WORK, LWORK,        SUBROUTINE ZGELQ( M, N, A, LDA, T, TSIZE, WORK, LWORK,
      $                  INFO )       $                  INFO )
 *  *
 *  -- LAPACK computational routine (version 3.7.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. --
 *     December 2016  
 *  *
 *     .. Scalar Arguments ..  *     .. Scalar Arguments ..
       INTEGER            INFO, LDA, M, N, TSIZE, LWORK        INTEGER            INFO, LDA, M, N, TSIZE, LWORK
Line 176 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 232 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 256 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 270 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 297 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.3  
changed lines
  Added in v.1.5


CVSweb interface <joel.bertrand@systella.fr>