version 1.5, 2020/05/21 21:46:07
|
version 1.6, 2023/08/07 08:39:29
|
Line 25
|
Line 25
|
*> SIDE = 'L' SIDE = 'R' |
*> SIDE = 'L' SIDE = 'R' |
*> TRANS = 'N': Q * C C * Q |
*> TRANS = 'N': Q * C C * Q |
*> TRANS = 'C': Q**H * C C * Q**H |
*> 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 56
|
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 72
|
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 87
|
Line 86
|
*> 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 164
|
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 196
|
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.1) -- |
* -- 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..-- |
* June 2017 |
|
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
CHARACTER SIDE, TRANS |
CHARACTER SIDE, TRANS |
Line 215
|
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 234
|
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 243
|
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 |