Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 10/31/2024
Public
Document Table of Contents

?gemqrt

Multiplies a general matrix by the orthogonal/unitary matrix Q of the QR factorization formed by ?geqrt.

Syntax

call sgemqrt(side, trans, m, n, k, nb, v, ldv, t, ldt, c, ldc, work, info)

call dgemqrt(side, trans, m, n, k, nb, v, ldv, t, ldt, c, ldc, work, info)

call cgemqrt(side, trans, m, n, k, nb, v, ldv, t, ldt, c, ldc, work, info)

call zgemqrt(side, trans, m, n, k, nb, v, ldv, t, ldt, c, ldc, work, info)

call gemqrt( v, t, c, k, nb[, trans][, side][, info])

Include Files

  • mkl.fi, mkl_lapack.f90

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

side

CHARACTER

='L': apply Q, QT, or QH from the left.

='R': apply Q, QT, or QH from the right.

trans

CHARACTER

='N', no transpose, apply Q.

='T', transpose, apply QT.

='C', transpose, apply QH.

m

INTEGER. The number of rows in the matrix C, (m ≥ 0).

n

INTEGER. The number of columns in the matrix C, (n ≥ 0).

k

INTEGER. The number of elementary reflectors whose product defines the matrix Q. Constraints:

If side = 'L', mk≥0

If side = 'R', nk≥0.

nb

INTEGER.

The block size used for the storage of t, knb ≥ 1. This must be the same value of nb used to generate t in geqrt.

v

REAL for sgemqrt

DOUBLE PRECISION for dgemqrt

COMPLEX for cgemqrt

COMPLEX*16 for zgemqrt.

Array, DIMENSION (ldv, k).

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

INTEGER. The leading dimension of the array v.

if side = 'L', ldv must be at least max(1,m);

if side = 'R', ldv must be at least max(1,n).

t

REAL for sgemqrt

DOUBLE PRECISION for dgemqrt

COMPLEX for cgemqrt

COMPLEX*16 for zgemqrt.

Array, DIMENSION (ldt, k).

The upper triangular factors of the block reflectors as returned by geqrt.

ldt

INTEGER. The leading dimension of the array t. ldt must be at least nb.

c

REAL for sgemqrt

DOUBLE PRECISION for dgemqrt

COMPLEX for cgemqrt

COMPLEX*16 for zgemqrt.

The m-by-n matrix C.

ldc

INTEGER. The leadinng dimension of the array c. ldc must be at least max(1, m).

work

REAL for sgemqrt

DOUBLE PRECISION for dgemqrt

COMPLEX for cgemqrt

COMPLEX*16 for zgemqrt.

Workspace array.

If side = 'L' DIMENSION n*nb.

If side = 'R' DIMENSION m*nb.

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.

info

INTEGER.

= 0: the execution is successful.

< 0: if info = -i, the ith argument had an illegal value.