Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
?gemqrt
Multiplies a general matrix by the orthogonal/unitary matrix Q of the QR factorization formed by ?geqrt .
Syntax
call sgemqrt ( side , trans , m , n , k , nb , v , ldv , t , ldt , c , ldc , work , info )
call dgemqrt ( side , trans , m , n , k , nb , v , ldv , t , ldt , c , ldc , work , info )
call cgemqrt ( side , trans , m , n , k , nb , v , ldv , t , ldt , c , ldc , work , info )
call zgemqrt ( side , trans , m , n , k , nb , v , ldv , t , ldt , c , ldc , work , info )
call gemqrt ( v , t , c , k , nb [ , trans ] [ , side ] [ , info ] )
Include Files
mkl.fi , mkl_lapack.f90
Description
sgemqrt dgemqrt cgemqrt zgemqrt The ?gemqrt routine overwrites the general real or complex 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 orthogonal (complex unitary) matrix defined as the product of k elementary reflectors
Q = H (1) H (2)… H ( k ) = I - V * T * VT for real flavors, and
Q = H (1) H (2)… H ( k ) = I - V * T * VH for complex flavors,
generated using the compact WY representation as returned by geqrt . Q is of order m if side = ‘L’ and of order n if side = ‘R’.
Input Parameters
- side
-
CHARACTER =’L’: apply Q , QT , or QH from the left. =’R’: apply Q , QT , or QH from the right.
- trans
-
CHARACTER =’N’, no transpose, apply Q . =’T’, transpose, apply QT . =’C’, transpose, apply QH .
m
INTEGER . The number of rows in the matrix C , (m ≥ 0) .
n
INTEGER . The number of columns in the matrix C , ( n ≥ 0).
k
INTEGER . The number of elementary reflectors whose product defines the matrix Q . Constraints:
If side = ‘L’, m ≥ k ≥0 If side = ‘R’, n ≥ k ≥0.
nb
INTEGER .
The block size used for the storage of t , k ≥ nb ≥ 1. This must be the same value of nb used to generate t in geqrt .
- v
-
REAL for sgemqrt DOUBLE PRECISION for dgemqrt COMPLEX for cgemqrt COMPLEX*16 for zgemqrt . Array, DIMENSION ( ldv , k ). Array of size max(1, ldv * k ) for column major layout, max(1, ldv * m ) for row major layout and side = ‘L’, and max(1, ldv * n ) for row major layout and side = ‘R’. The i th column must contain the vector which defines the elementary reflector H ( i ), for i = 1,2,…, k , as returned by geqrt in the first k columns of its array argument a .
ldv
INTEGER . The leading dimension of the array v .
if side = ‘L’, ldv must be at least max(1, m ) ;
if side = ‘R’, ldv must be at least max(1, n ) .
- t
-
REAL for sgemqrt DOUBLE PRECISION for dgemqrt COMPLEX for cgemqrt COMPLEX*16 for zgemqrt . Array, DIMENSION ( ldt , k ). Array, size max(1, ldt *min( m , n )) for column major layout and max(1, ldt * nb ) for row major layout. The upper triangular factors of the block reflectors as returned by geqrt .
ldt
INTEGER . The leading dimension of the array t . ldt must be at least nb .
- c
-
REAL for sgemqrt DOUBLE PRECISION for dgemqrt COMPLEX for cgemqrt COMPLEX*16 for zgemqrt . The m -by- n matrix C .
ldc
INTEGER . The leadi n ng dimension of the array c . ldc must be at least max(1, m ) .
- work
-
REAL for sgemqrt DOUBLE PRECISION for dgemqrt COMPLEX for cgemqrt COMPLEX*16 for zgemqrt . Workspace array. If side = ‘L’ DIMENSION n * nb . If side = ‘R’ DIMENSION m * nb .
Output Parameters
- c
-
Overwritten by the product Q * C , C * Q , QT * C , C * QT , QH * C , or C * QH as specified by side and trans .
info
INTEGER .
= 0 : the execution is successful.
< 0 : if info = - i , the i th argument had an illegal value.
Return Values
No return value, info is an Output Parameter.