Visible to Intel only — GUID: GUID-53EF3389-3F3B-40ED-A02C-618C98F72A36
Visible to Intel only — GUID: GUID-53EF3389-3F3B-40ED-A02C-618C98F72A36
?gemqr
Multiples a matrix C by a real orthogonal or complex unitary matrix Q, as computed by ?geqr, with best performance for tall and skinny matrices.
call sgemqr(side, trans, m, n, k, a, lda, t, tsize, c, ldc, work, lwork, info)
call dgemqr(side, trans, m, n, k, a, lda, t, tsize, c, ldc, work, lwork, info)
call cgemqr(side, trans, m, n, k, a, lda, t, tsize, c, ldc, work, lwork, info)
call zgemqr(side, trans, m, n, k, a, lda, t, tsize, c, ldc, work, lwork, info)
Description
The ?gemqr routine multiplies an m-by-n matrix C by Op(Q), where matrix Q is the factor from the LQ factorization of matrix A formed by ?geqr, and
Op(Q) = Q, or
Op(Q) = QT, or
Op(Q) = QH.
You must use ?geqr for LQ factorization before calling ?gemqr. ?gemqr is not compatible with QR factorization routines other than ?geqr.
For real flavors, C is real and Q is real orthogonal.
For complex flavors, C is complex and Q is complex unitary.
If matrix A is tall and skinny, a highly scalable algorithm is used to avoid communication overhead. Otherwise, ?ormqr or ?unmqr is used.
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': Conjugate transpose, Op(Q) = QH.
- m
-
INTEGER. The number of rows of the matrix A. m≥ 0.
- n
-
INTEGER. The number of columns of the matrix C. m≥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.
- a
-
REAL for sgemqr
DOUBLE PRECISION for dgemqr
COMPLEX for cgemqr
COMPLEX*16 for zgemqr
Array, size (lda,k).
Part of the data structure to represent Q as returned by ?geqr.
- lda
-
INTEGER. The leading dimension of the array a.
If side = 'L', lda≥max(1,m).
If side = 'R', lda≥max(1,n).
- t
-
REAL for sgemlq
DOUBLE PRECISION for dgemlq
COMPLEX for cgemlq
COMPLEX*16 for zgemlq
Array, size (max(5,tsize)). Part of the data structure to represent Q as returned by ?geqr.
- tsize
-
INTEGER. The size of the array t. tsize≥ 5.
- c
-
REAL for sgemqr
DOUBLE PRECISION for dgemqr
COMPLEX for cgemqr
COMPLEX*16 for zgemqr
Array of size (ldc,n). On entry, contains the m-by-n matrix C.
- ldc
-
INTEGER. The leading dimension of the array c. ldc≥max(1,m).
- lwork
-
INTEGER. The size of the array work.
If lwork = -1, then a workspace query is assumed; the routine only calculates the optimal size of the work array and returns this value as work(1); no error message related to lwork is issued by xerbla.
Output Parameters
- c
-
On exit, c is overwritten by Op(Q)*C or C*Op(Q).
- work
-
REAL for sgemlq
DOUBLE PRECISION for dgemlq
COMPLEX for cgemlq
COMPLEX*16 for zgemlq
Workspace array of size (max(1,lwork)).
- info
-
INTEGER.
info = 0 indicates a successful exit.
info < 0: if info = -i, the i-th argument had an illegal value.