Visible to Intel only — GUID: GUID-A9BF410C-6F63-4EEA-BDDA-0C96D36C74EC
Visible to Intel only — GUID: GUID-A9BF410C-6F63-4EEA-BDDA-0C96D36C74EC
?ormrz
Multiplies a real matrix by the orthogonal matrix defined from the factorization formed by ?tzrzf.
Syntax
lapack_int LAPACKE_sormrz (int matrix_layout, char side, char trans, lapack_int m, lapack_int n, lapack_int k, lapack_int l, const float* a, lapack_int lda, const float* tau, float* c, lapack_int ldc);
lapack_int LAPACKE_dormrz (int matrix_layout, char side, char trans, lapack_int m, lapack_int n, lapack_int k, lapack_int l, const double* a, lapack_int lda, const double* tau, double* c, lapack_int ldc);
Include Files
- mkl.h
Description
The ?ormrz routine multiplies a real m-by-n matrix C by Q or QT, where Q is the real orthogonal matrix defined as a product of k elementary reflectors H(i) of order n: Q = H(1)* H(2)*...*H(k) as returned by the factorization routine tzrzf .
Depending on the parameters side and trans, the routine can form one of the matrix products Q*C, QT*C, C*Q, or C*QT (overwriting the result over C).
The matrix Q is of order m if side = 'L' and of order n if side = 'R'.
The ?ormrz routine replaces the deprecated ?latzm routine.
Input Parameters
- matrix_layout
-
Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major (LAPACK_COL_MAJOR).
- side
-
Must be either 'L' or 'R'.
If side = 'L', Q or QT is applied to C from the left.
If side = 'R', Q or QT is applied to C from the right.
- trans
-
Must be either 'N' or 'T'.
If trans = 'N', the routine multiplies C by Q.
If trans = 'T', the routine multiplies C by QT.
- m
-
The number of rows in the matrix C (m≥ 0).
- n
-
The number of columns in C (n≥ 0).
- k
-
The number of elementary reflectors whose product defines the matrix Q. Constraints:
0 ≤k≤m, if side = 'L';
0 ≤k≤n, if side = 'R'.
- l
-
The number of columns of the matrix A containing the meaningful part of the Householder reflectors. Constraints:
0 ≤l≤m, if side = 'L';
0 ≤l≤n, if side = 'R'.
- a, tau, c
-
Arrays: a(size for side = 'L': max(1, lda*m) for column major layout and max(1, lda*k) for row major layout; for side = 'R': max(1, lda*b) for column major layout and max(1, lda*k) for row major layout), tau, c (size max(1, ldc*n) for column major layout and max(1, ldc*m) for row major layout).
On entry, the ith row of a must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by stzrzf/dtzrzf in the last k rows of its array argument a.
tau[i - 1] must contain the scalar factor of the elementary reflector H(i), as returned by stzrzf/dtzrzf.
The size of tau must be at least max(1, k).
c contains the m-by-n matrix C.
- lda
-
The leading dimension of a; lda≥ max(1, k)for column major layout. For row major layout, lda≥ max(1, m) if side = 'L', and lda≥ max(1, n) if side = 'R' .
- ldc
-
The leading dimension of c; ldc≥ max(1, m)for column major layout and max(1, n) for row major layout.
Output Parameters
- c
-
Overwritten by the product Q*C, QT*C, C*Q, or C*QT (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.
Application Notes
The complex counterpart of this routine is unmrz.