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 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.