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.