Multiplies a real matrix by the orthogonal matrix Q of the RQ factorization formed by ?gerqf.

Syntax

lapack_int LAPACKE_sormrq (int matrix_layout, char side, char trans, lapack_int m, lapack_int n, lapack_int k, const float* a, lapack_int lda, const float* tau, float* c, lapack_int ldc);

lapack_int LAPACKE_dormrq (int matrix_layout, char side, char trans, lapack_int m, lapack_int n, lapack_int k, const double* a, lapack_int lda, const double* tau, double* c, lapack_int ldc);

Include Files

  • mkl.h

Description

The 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 Hi : Q = H1H2 ... Hk as returned by the RQ factorization routine gerqf.

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).

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 km, if side = 'L';

0 kn, 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*n) 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 Hi, for i = 1,2,...,k, as returned by sgerqf/dgerqf in the last k rows of its array argument a.

tau[i - 1] must contain the scalar factor of the elementary reflector Hi, as returned by sgerqf/dgerqf.

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 unmrq.

Para obtener información más completa sobre las optimizaciones del compilador, consulte nuestro Aviso de optimización.
Seleccione el color del botón adhesivo: 
Orange (only for download buttons)