Developer Reference for Intel® oneAPI Math Kernel Library for C
?gemqrt
Multiplies a general matrix by the orthogonal/unitary matrix Q of the QR factorization formed by ?geqrt .
Syntax
lapack_intLAPACKE_sgemqrt ( intmatrix_layout , charside , chartrans , lapack_intm , lapack_intn , lapack_intk , lapack_intnb , constfloat*v , lapack_intldv , constfloat*t , lapack_intldt , float*c , lapack_intldc );
lapack_intLAPACKE_dgemqrt ( intmatrix_layout , charside , chartrans , lapack_intm , lapack_intn , lapack_intk , lapack_intnb , constdouble*v , lapack_intldv , constdouble*t , lapack_intldt , double*c , lapack_intldc );
lapack_intLAPACKE_cgemqrt ( intmatrix_layout , charside , chartrans , lapack_intm , lapack_intn , lapack_intk , lapack_intnb , constlapack_complex_float*v , lapack_intldv , constlapack_complex_float*t , lapack_intldt , lapack_complex_float*c , lapack_intldc );
lapack_intLAPACKE_zgemqrt ( intmatrix_layout , charside , chartrans , lapack_intm , lapack_intn , lapack_intk , lapack_intnb , constlapack_complex_double*v , lapack_intldv , constlapack_complex_double*t , lapack_intldt , lapack_complex_double*c , lapack_intldc );
Include Files
mkl.h
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
- matrix_layout
-
Specifies whether matrix storage layout is row major ( LAPACK_ROW_MAJOR ) or column major ( LAPACK_COL_MAJOR ).
- 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
The number of rows in the matrix C , (m ≥ 0) .
n
The number of columns in the matrix C , ( n ≥ 0).
k
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
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
The leading dimension of the array v .
if side = ‘L’, ldv must be at least max(1, m ) for column major layout and max(1, k ) for row major layout ;
if side = ‘R’, ldv must be at least max(1, n ) for column major layout and max(1, k ) for row major layout .
- 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
The leading dimension of the array t . ldt must be at least nb for column major layout and max(1, k ) for row major layout .
- c
-
REAL for sgemqrt DOUBLE PRECISION for dgemqrt COMPLEX for cgemqrt COMPLEX*16 for zgemqrt . The m -by- n matrix C .
ldc
The leadi n ng dimension of the array c . ldc must be at least max(1, m ) for column major layout and max(1, n ) for row major layout .
- 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 .
Return Values
This function returns a value info .
If info=0 , the execution is successful.
If info = -i , the i -th parameter had an illegal value.