Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
?gemlqt
Multiplies a general matrix by the orthogonal/unitary matrix Q of the LQ factorization formed by ?gelqt .
Syntax
call sgemlqt ( side , trans , m , n , k , mb , v , ldv , t , ldt , c , ldc , work , info )
call dgemlqt ( side , trans , m , n , k , mb , v , ldv , t , ldt , c , ldc , work , info )
call cgemlqt ( side , trans , m , n , k , mb , v , ldv , t , ldt , c , ldc , work , info )
call zgemlqt ( side , trans , m , n , k , mb , v , ldv , t , ldt , c , ldc , work , info )
Description
?gemlqt overwrites the general real m -by- n matrix C 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 or complex orthogonal matrix defined as the product of k elementary reflectors:
Q = H ( k ) H ( k - 1) … H (1) = I - VTVT for real flavors
or
Q = H ( k ) HH ( k - 1) H … H (1) H = I - VTVH for complex flavors
generated using the compact WY representation as returned by ?gelqt .
Q is of order m if side = ‘L’ and of order n if side = ‘R’.
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’: Transpose, op( Q ) = QH .
m
INTEGER . The number of rows of the matrix C . 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.
mb
INTEGER . The block size used for the storage of T . k ≥ mb ≥ 1. This must be the same value of mb used to generate T in ?gelqt .
- v
-
REAL for sgemlqt DOUBLE PRECISION for dgemlqt COMPLEX for cgemlqt COMPLEX*16 for zgemlqt Array of size ( ldv , m ) if side = ‘L’ or ( ldv , n ) if side = ‘R’. The i -th row must contain the vector which defines the elementary reflector H ( i ), for i = 1,2,…, k , as returned by ?gelqt in the first k rows of its array argument a .
ldv
INTEGER . The leading dimension of the array v . ldv ≥ max(1, k ).
- t
-
REAL for sgemlqt DOUBLE PRECISION for dgemlqt COMPLEX for cgemlqt COMPLEX*16 for zgemlqt Array of size ( ldt , k ). The upper triangular factors of the block reflectors as returned by ?gelqt , stored as a mb -by- k matrix.
ldt
INTEGER . The leading dimension of the array t . ldt ≥ mb .
- c
-
REAL for sgemlqt DOUBLE PRECISION for dgemlqt COMPLEX for cgemlqt COMPLEX*16 for zgemlqt Array of size ( ldc , n ). On entry, the m -by- n matrix C .
ldc
INTEGER . The leading dimension of the array c . ldc ≥ max(1, m ).
Output Parameters
- c
-
On exit, c is overwritten by op( Q )* C or C *op( Q ).
- work
-
REAL for sgemlqt DOUBLE PRECISION for dgemlqt COMPLEX for cgemlqt COMPLEX*16 for zgemlqt Array. The size of work is n * mb if side = ‘L’, or m * mb if side = ‘R’.
- info
-
info = 0: successful exit. info < 0: if info = - i , the i -th argument had an illegal value.