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.