Diff for /rpl/lapack/lapack/zlamtsqr.f between versions 1.1 and 1.6

version 1.1, 2017/06/17 11:02:55 version 1.6, 2023/08/07 08:39:29
Line 1 Line 1
   *> \brief \b ZLAMTSQR
 *  *
 *  Definition:  *  Definition:
 *  ===========  *  ===========
Line 23 Line 24
 *>  *>
 *>                 SIDE = 'L'     SIDE = 'R'  *>                 SIDE = 'L'     SIDE = 'R'
 *> TRANS = 'N':      Q * C          C * Q  *> TRANS = 'N':      Q * C          C * Q
 *> TRANS = 'C':      Q**C * C       C * Q**C  *> TRANS = 'C':      Q**H * C       C * Q**H
 *>      where Q is a real orthogonal matrix defined as the product  *>      where Q is a complex unitary matrix defined as the product
 *>      of blocked elementary reflectors computed by tall skinny  *>      of blocked elementary reflectors computed by tall skinny
 *>      QR factorization (ZLATSQR)  *>      QR factorization (ZLATSQR)
 *> \endverbatim  *> \endverbatim
Line 35 Line 36
 *> \param[in] SIDE  *> \param[in] SIDE
 *> \verbatim  *> \verbatim
 *>          SIDE is CHARACTER*1  *>          SIDE is CHARACTER*1
 *>          = 'L': apply Q or Q**T from the Left;  *>          = 'L': apply Q or Q**H from the Left;
 *>          = 'R': apply Q or Q**T from the Right.  *>          = 'R': apply Q or Q**H from the Right.
 *> \endverbatim  *> \endverbatim
 *>  *>
 *> \param[in] TRANS  *> \param[in] TRANS
 *> \verbatim  *> \verbatim
 *>          TRANS is CHARACTER*1  *>          TRANS is CHARACTER*1
 *>          = 'N':  No transpose, apply Q;  *>          = 'N':  No transpose, apply Q;
 *>          = 'C':  Conjugate Transpose, apply Q**C.  *>          = 'C':  Conjugate Transpose, apply Q**H.
 *> \endverbatim  *> \endverbatim
 *>  *>
 *> \param[in] M  *> \param[in] M
Line 55 Line 56
 *> \param[in] N  *> \param[in] N
 *> \verbatim  *> \verbatim
 *>          N is INTEGER  *>          N is INTEGER
 *>          The number of columns of the matrix C. M >= N >= 0.  *>          The number of columns of the matrix C. N >= 0.
 *> \endverbatim  *> \endverbatim
 *>  *>
 *> \param[in] K  *> \param[in] K
 *> \verbatim  *> \verbatim
 *>          K is INTEGER  *>          K is INTEGER
 *>          The number of elementary reflectors whose product defines  *>          The number of elementary reflectors whose product defines
 *>          the matrix Q.  *>          the matrix Q. M >= K >= 0;
 *>          N >= K >= 0;  
 *>  *>
 *> \endverbatim  *> \endverbatim
 *>  *>
Line 71 Line 71
 *> \verbatim  *> \verbatim
 *>          MB is INTEGER  *>          MB is INTEGER
 *>          The block size to be used in the blocked QR.  *>          The block size to be used in the blocked QR.
 *>          MB > N. (must be the same as DLATSQR)  *>          MB > N. (must be the same as ZLATSQR)
 *> \endverbatim  *> \endverbatim
 *>  *>
 *> \param[in] NB  *> \param[in] NB
Line 81 Line 81
 *>          N >= NB >= 1.  *>          N >= NB >= 1.
 *> \endverbatim  *> \endverbatim
 *>  *>
 *> \param[in,out] A  *> \param[in] A
 *> \verbatim  *> \verbatim
 *>          A is COMPLEX*16 array, dimension (LDA,K)  *>          A is COMPLEX*16 array, dimension (LDA,K)
 *>          The i-th column must contain the vector which defines the  *>          The i-th column must contain the vector which defines the
 *>          blockedelementary reflector H(i), for i = 1,2,...,k, as  *>          blockedelementary reflector H(i), for i = 1,2,...,k, as
 *>          returned by DLATSQR in the first k columns of  *>          returned by ZLATSQR in the first k columns of
 *>          its array argument A.  *>          its array argument A.
 *> \endverbatim  *> \endverbatim
 *>  *>
Line 117 Line 117
 *> \verbatim  *> \verbatim
 *>          C is COMPLEX*16 array, dimension (LDC,N)  *>          C is COMPLEX*16 array, dimension (LDC,N)
 *>          On entry, the M-by-N matrix C.  *>          On entry, the M-by-N matrix C.
 *>          On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q.  *>          On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q.
 *> \endverbatim  *> \endverbatim
 *>  *>
 *> \param[in] LDC  *> \param[in] LDC
Line 163 Line 163
 *  =====================  *  =====================
 *>  *>
 *> \verbatim  *> \verbatim
 *> Tall-Skinny QR (TSQR) performs QR by a sequence of orthogonal transformations,  *> Tall-Skinny QR (TSQR) performs QR by a sequence of unitary transformations,
 *> representing Q as a product of other orthogonal matrices  *> representing Q as a product of other unitary matrices
 *>   Q = Q(1) * Q(2) * . . . * Q(k)  *>   Q = Q(1) * Q(2) * . . . * Q(k)
 *> where each Q(i) zeros out subdiagonal entries of a block of MB rows of A:  *> where each Q(i) zeros out subdiagonal entries of a block of MB rows of A:
 *>   Q(1) zeros out the subdiagonal entries of rows 1:MB of A  *>   Q(1) zeros out the subdiagonal entries of rows 1:MB of A
Line 195 Line 195
       SUBROUTINE ZLAMTSQR( SIDE, TRANS, M, N, K, MB, NB, A, LDA, T,        SUBROUTINE ZLAMTSQR( SIDE, TRANS, M, N, K, MB, NB, A, LDA, T,
      $        LDT, C, LDC, WORK, LWORK, INFO )       $        LDT, C, LDC, WORK, LWORK, 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 ..
       CHARACTER         SIDE, TRANS        CHARACTER         SIDE, TRANS
Line 214 Line 213
 *     ..  *     ..
 *     .. Local Scalars ..  *     .. Local Scalars ..
       LOGICAL    LEFT, RIGHT, TRAN, NOTRAN, LQUERY        LOGICAL    LEFT, RIGHT, TRAN, NOTRAN, LQUERY
       INTEGER    I, II, KK, LW, CTR        INTEGER    I, II, KK, LW, CTR, Q
 *     ..  *     ..
 *     .. External Functions ..  *     .. External Functions ..
       LOGICAL            LSAME        LOGICAL            LSAME
Line 233 Line 232
       RIGHT   = LSAME( SIDE, 'R' )        RIGHT   = LSAME( SIDE, 'R' )
       IF (LEFT) THEN        IF (LEFT) THEN
         LW = N * NB          LW = N * NB
           Q = M
       ELSE        ELSE
         LW = M * NB          LW = M * NB
           Q = N
       END IF        END IF
 *  *
       INFO = 0        INFO = 0
Line 242 Line 243
          INFO = -1           INFO = -1
       ELSE IF( .NOT.TRAN .AND. .NOT.NOTRAN ) THEN        ELSE IF( .NOT.TRAN .AND. .NOT.NOTRAN ) THEN
          INFO = -2           INFO = -2
       ELSE IF( M.LT.0 ) THEN        ELSE IF( M.LT.K ) THEN
         INFO = -3          INFO = -3
       ELSE IF( N.LT.0 ) THEN        ELSE IF( N.LT.0 ) THEN
         INFO = -4          INFO = -4
       ELSE IF( K.LT.0 ) THEN        ELSE IF( K.LT.0 ) THEN
         INFO = -5          INFO = -5
       ELSE IF( LDA.LT.MAX( 1, K ) ) THEN        ELSE IF( K.LT.NB .OR. NB.LT.1 ) THEN
           INFO = -7
         ELSE IF( LDA.LT.MAX( 1, Q ) ) THEN
         INFO = -9          INFO = -9
       ELSE IF( LDT.LT.MAX( 1, NB) ) THEN        ELSE IF( LDT.LT.MAX( 1, NB) ) THEN
         INFO = -11          INFO = -11

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


CVSweb interface <joel.bertrand@systella.fr>