Visible to Intel only — GUID: GUID-3DB41E56-9761-4986-A92C-6D6E6A434F90
Visible to Intel only — GUID: GUID-3DB41E56-9761-4986-A92C-6D6E6A434F90
?gemlqt
Multiplies a general matrix by the orthogonal/unitary matrix Q of the LQ factorization formed by ?gelqt.
call sgemlqt(side, trans, m, n, k, mb, v, ldv, t, ldt, c, ldc, work, info)
call dgemlqt(side, trans, m, n, k, mb, v, ldv, t, ldt, c, ldc, work, info)
call cgemlqt(side, trans, m, n, k, mb, v, ldv, t, ldt, c, ldc, work, info)
call zgemlqt(side, trans, m, n, k, mb, v, ldv, t, ldt, c, ldc, work, info)
Description
?gemlqt overwrites the general real m-by-n matrix C with
side = 'L' | side = 'R' | |
---|---|---|
trans = 'N' | Q*C | C*Q |
trans = 'T' | QT*C | C*QT |
trans = 'C' | QH*C | C*QH |
where Q is a real or complex orthogonal matrix defined as the product of k elementary reflectors:
Q = H(k) H(k - 1) . . . H(1) = I - VTVT for real flavors
or
Q = H(k)HH(k - 1)H . . . H(1)H = I - VTVH for complex flavors
generated using the compact WY representation as returned by ?gelqt.
Q is of order m if side = 'L' and of order n if side = 'R'.
Input Parameters
- side
-
CHARACTER*1.
If side= 'L': apply op(Q) from the left;
if side= 'R': apply op(Q) from the right.
- trans
-
CHARACTER*1.
If trans = 'N': No transpose, op(Q) = Q;
if trans = 'T': Transpose, op(Q) = QT;
if trans= 'C': Transpose, op(Q) = QH.
- m
-
INTEGER. The number of rows of the matrix C. m≥ 0.
- n
-
INTEGER. The number of columns of the matrix C. n≥ 0.
- k
-
INTEGER. The number of elementary reflectors whose product defines the matrix Q.
If side = 'L', m≥k≥ 0;
if side = 'R', n≥k≥ 0.
- mb
-
INTEGER. The block size used for the storage of T. k≥mb≥ 1. This must be the same value of mb used to generate T in ?gelqt.
- v
-
REAL for sgemlqt
DOUBLE PRECISION for dgemlqt
COMPLEX for cgemlqt
COMPLEX*16 for zgemlqt
Array of size (ldv,m) if side = 'L' or (ldv,n) if side = 'R'. The i-th row must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by ?gelqt in the first k rows of its array argument a.
- ldv
-
INTEGER. The leading dimension of the array v. ldv≥ max(1,k).
- t
-
REAL for sgemlqt
DOUBLE PRECISION for dgemlqt
COMPLEX for cgemlqt
COMPLEX*16 for zgemlqt
Array of size (ldt,k). The upper triangular factors of the block reflectors as returned by ?gelqt, stored as a mb-by-k matrix.
- ldt
-
INTEGER. The leading dimension of the array t. ldt≥mb.
- c
-
REAL for sgemlqt
DOUBLE PRECISION for dgemlqt
COMPLEX for cgemlqt
COMPLEX*16 for zgemlqt
Array of size (ldc,n). On entry, the m-by-n matrix C.
- ldc
-
INTEGER. The leading dimension of the array c. ldc≥ max(1,m).
Output Parameters
- c
-
On exit, c is overwritten by op(Q)*C or C*op(Q).
- work
-
REAL for sgemlqt
DOUBLE PRECISION for dgemlqt
COMPLEX for cgemlqt
COMPLEX*16 for zgemlqt
Array. The size of work is n*mb if side = 'L', or m*mb if side = 'R'.
- info
-
info = 0: successful exit.
info < 0: if info = -i, the i-th argument had an illegal value.