Visible to Intel only — GUID: GUID-47D21D57-A20E-4619-8D5E-DF19FE0CE8F9
Visible to Intel only — GUID: GUID-47D21D57-A20E-4619-8D5E-DF19FE0CE8F9
?gemlq
Multiples a matrix C by a real orthogonal or complex unitary matrix Q, as computed by ?gelq.
call sgemlq(side, trans, m, n, k, a, lda, t, tsize, c, ldc, work, lwork, info)
call dgemlq(side, trans, m, n, k, a, lda, t, tsize, c, ldc, work, lwork, info)
call cgemlq(side, trans, m, n, k, a, lda, t, tsize, c, ldc, work, lwork, info)
call zgemlq(side, trans, m, n, k, a, lda, t, tsize, c, ldc, work, lwork, info)
Description
The ?gemlq 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 ?gelq, and
Op(Q) = Q, or
Op(Q) = QT, or
Op(Q) = QH.
You must use ?gelq for LQ factorization before calling ?gemlq. ?gemlq is not compatible with LQ factorization routines other than ?gelq.
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 short and wide, a highly scalable algorithm is used to avoid communication overhead. Otherwise, ?ormlq or ?unmlq is used.
An optimized version of ?gemlq is not available.
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. 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 sgemlq
DOUBLE PRECISION for dgemlq
COMPLEX for cgemlq
COMPLEX*16 for zgemlq
Array of size (lda,m) if side = 'L', or (lda,n) if side = 'R'.
Part of the data structure to represent Q as returned by ?gelq.
- lda
-
INTEGER . The leading dimension of the array a. lda≥ max(1,k).
- 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 ?gelq.
- tsize
-
INTEGER. The size of the array t. tsize≥ 5.
- c
-
REAL for sgemlq
DOUBLE PRECISION for dgemlq
COMPLEX for cgemlq
COMPLEX*16 for zgemlq
Array, size (ldc,n). On entry, a 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.