Multiplies a complex matrix by the unitary matrix Q of the RQ factorization formed by ?gerqf.

Syntax

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

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

Include Files

  • mkl.h

Description

The routine multiplies a complex m-by-n matrix C by Q or QH, where Q is the complex unitary matrix defined as a product of k elementary reflectors H(i) of order n: Q = H(1)H* H(2)H*...*H(k)Has 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, QH*C, C*Q, or C*QH (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 QH is applied to C from the left.

If side = 'R', Q or QH is applied to C from the right.

trans

Must be either 'N' or 'C'.

If trans = 'N', the routine multiplies C by Q.

If trans = 'C', the routine multiplies C by QH.

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 H(i), for i = 1,2,...,k, as returned by cgerqf/zgerqf 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 cgerqf/zgerqf.

The size of tau must be at least max(1, k).

c(size max(1, ldc*n) for column major layout and max(1, ldc*m for row major layout) 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, QH*C, C*Q, 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.

Application Notes

The real counterpart of this routine is ormrq.

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)