Visible to Intel only — GUID: GUID-3DA73EE8-A2CB-445A-AF71-A5CE403017CB
Visible to Intel only — GUID: GUID-3DA73EE8-A2CB-445A-AF71-A5CE403017CB
?gemqrt
Multiplies a general matrix by the orthogonal/unitary matrix Q of the QR factorization formed by ?geqrt.
Syntax
call sgemqrt(side, trans, m, n, k, nb, v, ldv, t, ldt, c, ldc, work, info)
call dgemqrt(side, trans, m, n, k, nb, v, ldv, t, ldt, c, ldc, work, info)
call cgemqrt(side, trans, m, n, k, nb, v, ldv, t, ldt, c, ldc, work, info)
call zgemqrt(side, trans, m, n, k, nb, v, ldv, t, ldt, c, ldc, work, info)
call gemqrt( v, t, c, k, nb[, trans][, side][, info])
Include Files
- mkl.fi, lapack.f90
Description
The ?gemqrt routine overwrites the general real or complex m-by-n matrixC 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 orthogonal (complex unitary) matrix defined as the product of k elementary reflectors
Q = H(1) H(2)... H(k) = I - V*T*VT for real flavors, and
Q = H(1) H(2)... H(k) = I - V*T*VH for complex flavors,
generated using the compact WY representation as returned by geqrt. Q is of order m if side = 'L' and of order n if side = 'R'.
Input Parameters
- side
-
CHARACTER
='L': apply Q, QT, or QH from the left.
='R': apply Q, QT, or QH from the right.
- trans
-
CHARACTER
='N', no transpose, apply Q.
='T', transpose, apply QT.
='C', transpose, apply QH.
- m
-
INTEGER. The number of rows in the matrix C, (m ≥ 0).
- n
-
INTEGER. The number of columns in the matrix C, (n ≥ 0).
- k
-
INTEGER. The number of elementary reflectors whose product defines the matrix Q. Constraints:
If side = 'L', m ≥ k≥0
If side = 'R', n ≥ k≥0.
- nb
-
INTEGER.
The block size used for the storage of t, k ≥ nb ≥ 1. This must be the same value of nb used to generate t in geqrt.
- v
-
REAL for sgemqrt
DOUBLE PRECISION for dgemqrt
COMPLEX for cgemqrt
COMPLEX*16 for zgemqrt.
Array, DIMENSION (ldv, k).
The ith column must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by geqrt in the first k columns of its array argument a.
- ldv
-
INTEGER. The leading dimension of the array v.
if side = 'L', ldv must be at least max(1,m);
if side = 'R', ldv must be at least max(1,n).
- t
-
REAL for sgemqrt
DOUBLE PRECISION for dgemqrt
COMPLEX for cgemqrt
COMPLEX*16 for zgemqrt.
Array, DIMENSION (ldt, k).
The upper triangular factors of the block reflectors as returned by geqrt.
- ldt
-
INTEGER. The leading dimension of the array t. ldt must be at least nb.
- c
-
REAL for sgemqrt
DOUBLE PRECISION for dgemqrt
COMPLEX for cgemqrt
COMPLEX*16 for zgemqrt.
The m-by-n matrix C.
- ldc
-
INTEGER. The leadinng dimension of the array c. ldc must be at least max(1, m).
- work
-
REAL for sgemqrt
DOUBLE PRECISION for dgemqrt
COMPLEX for cgemqrt
COMPLEX*16 for zgemqrt.
Workspace array.
If side = 'L' DIMENSION n*nb.
If side = 'R' DIMENSION m*nb.
Output Parameters
- c
-
Overwritten by the product Q*C, C*Q, QT*C, C*QT, QH*C, or C*QH as specified by side and trans.
- info
-
INTEGER.
= 0: the execution is successful.
< 0: if info = -i, the ith argument had an illegal value.