Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 3/31/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

?ormqr

Multiplies a real matrix by the orthogonal matrix Q of the QR factorization formed by ?geqrf or ?geqpf.

Syntax

lapack_int LAPACKE_sormqr (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_dormqr (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 matrix C by Q or QT, where Q is the orthogonal matrix Q of the QR factorization formed by the routine ?geqrf or ?geqpf.

Depending on the parameters sideleft_right and trans, the routine can form one of the matrix products Q*C, QT*C, C*Q, or C*QT (overwriting the result on 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 and tau are the arrays returned by sgeqrf / dgeqrf or sgeqpf / dgeqpf.

The size of a is max(1, lda*k) for column major layout, max(1, lda*m) for row major layout and side = 'L', and max(1, lda*n) for row major layout and side = 'R'.

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

Array c of 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. Constraints:

if side = 'L', lda max(1, m)for column major layout and max(1, k) for row major layout ;

if side = 'R', lda max(1, n)for column major layout and max(1, k) for row major layout.

ldc

The leading dimension of c. Constraint:

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