Visible to Intel only — GUID: GUID-3DA73EE8-A2CB-445A-AF71-A5CE403017CB
Visible to Intel only — GUID: GUID-3DA73EE8-A2CB-445A-AF71-A5CE403017CB
?gemqrt
Multiplies a general matrix by the orthogonal/unitary matrix Q of the QR factorization formed by ?geqrt.
Syntax
lapack_int LAPACKE_sgemqrt (int matrix_layout, char side, char trans, lapack_int m, lapack_int n, lapack_int k, lapack_int nb, const float* v, lapack_int ldv, const float* t, lapack_int ldt, float* c, lapack_int ldc);
lapack_int LAPACKE_dgemqrt (int matrix_layout, char side, char trans, lapack_int m, lapack_int n, lapack_int k, lapack_int nb, const double* v, lapack_int ldv, const double* t, lapack_int ldt, double* c, lapack_int ldc);
lapack_int LAPACKE_cgemqrt (int matrix_layout, char side, char trans, lapack_int m, lapack_int n, lapack_int k, lapack_int nb, const lapack_complex_float* v, lapack_int ldv, const lapack_complex_float* t, lapack_int ldt, lapack_complex_float* c, lapack_int ldc);
lapack_int LAPACKE_zgemqrt (int matrix_layout, char side, char trans, lapack_int m, lapack_int n, lapack_int k, lapack_int nb, const lapack_complex_double* v, lapack_int ldv, const lapack_complex_double* t, lapack_int ldt, lapack_complex_double* c, lapack_int ldc);
Include Files
- mkl.h
Description
The ?gemqrt routine overwrites the general real or complex m-by-n matrixC 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
-
='L': apply Q, QT, or QH from the left.
='R': apply Q, QT, or QH from the right.
- trans
-
='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
-
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 ith 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
-
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
-
The m-by-n matrix C.
- ldc
-
The leadinng 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.
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.