Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
?gemlq
Multiples a matrix C by a real orthogonal or complex unitary matrix Q , as computed by ?gelq .
Syntax
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.
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 in the matrix A. The value of m must be at least zero.
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.