Developer Reference

  • 2021.1
  • 12/04/2020
  • Public Content
Contents

?gemqrt

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

Syntax

lapack_int
LAPACKE_sgemqrt
(
int
matrix_layout
,
char
side
,
char
trans
,
lapack_int
m
,
lapack_int
n
,
lapack_int
k
,
lapack_int
nb
,
const
float
*
v
,
lapack_int
ldv
,
const
float
*
t
,
lapack_int
ldt
,
float
*
c
,
lapack_int
ldc
);
lapack_int
LAPACKE_dgemqrt
(
int
matrix_layout
,
char
side
,
char
trans
,
lapack_int
m
,
lapack_int
n
,
lapack_int
k
,
lapack_int
nb
,
const
double
*
v
,
lapack_int
ldv
,
const
double
*
t
,
lapack_int
ldt
,
double
*
c
,
lapack_int
ldc
);
lapack_int
LAPACKE_cgemqrt
(
int
matrix_layout
,
char
side
,
char
trans
,
lapack_int
m
,
lapack_int
n
,
lapack_int
k
,
lapack_int
nb
,
const
lapack_complex_float
*
v
,
lapack_int
ldv
,
const
lapack_complex_float
*
t
,
lapack_int
ldt
,
lapack_complex_float
*
c
,
lapack_int
ldc
);
lapack_int
LAPACKE_zgemqrt
(
int
matrix_layout
,
char
side
,
char
trans
,
lapack_int
m
,
lapack_int
n
,
lapack_int
k
,
lapack_int
nb
,
const
lapack_complex_double
*
v
,
lapack_int
ldv
,
const
lapack_complex_double
*
t
,
lapack_int
ldt
,
lapack_complex_double
*
c
,
lapack_int
ldc
);
Include Files
  • mkl.h
Description
The
?gemqrt
routine overwrites the general real or complex
m
-by-
n
matrix
C
with
side
='L'
side
='R'
trans
= 'N':
Q
*
C
C
*
Q
trans
= 'T':
Q
T
*
C
C
*
Q
T
trans
= 'C':
Q
H
*
C
C
*
Q
H
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
*
V
T
for real flavors, and
Q
=
H
(1)
H
(2)...
H
(
k
) =
I
-
V
*
T
*
V
H
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
matrix_layout
Specifies whether matrix storage layout is row major (
LAPACK_ROW_MAJOR
) or column major (
LAPACK_COL_MAJOR
).
side
='L': apply
Q
,
Q
T
, or
Q
H
from the left.
='R': apply
Q
,
Q
T
, or
Q
H
from the right.
trans
='N', no transpose, apply
Q
.
='T', transpose, apply
Q
T
.
='C', transpose, apply
Q
H
.
m
The number of rows in the matrix
C
,
(
m
≥ 0)
.
n
The number of columns in the matrix
C
, (
n
≥ 0).
k
The number of elementary reflectors whose product defines the matrix
Q
. Constraints:
If
side
= 'L',
m
k
≥0
If
side
= 'R',
n
k
≥0.
nb
The block size used for the storage of
t
,
k
nb
≥ 1. This must be the same value of
nb
used to generate
t
in geqrt.
v
Array of size max(1,
ldv
*
k
) for column major layout, max(1,
ldv
*
m
) for row major layout and
side
= 'L', and max(1,
ldv
*
n
) for row major layout and
side
= 'R'.
The
i
th 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
The leading dimension of the array
v
.
if
side
= 'L',
ldv
must be at least max(1,
m
)
for column major layout and max(1,
k
) for row major layout
;
if
side
= 'R',
ldv
must be at least max(1,
n
)
for column major layout and max(1,
k
) for row major layout
.
t
Array, size max(1,
ldt
*min(
m
,
n
)) for column major layout and max(1,
ldt
*
nb
) for row major layout.
The upper triangular factors of the block reflectors as returned by geqrt.
ldt
The leading dimension of the array
t
.
ldt
must be at least
nb
for column major layout and max(1,
k
) for row major layout
.
c
The
m
-by-
n
matrix
C
.
ldc
The leadi
n
ng dimension of the array
c
.
ldc
must be at least max(1,
m
)
for column major layout and max(1,
n
) for row major layout
.
Output Parameters
c
Overwritten by the product
Q
*
C
,
C
*
Q
,
Q
T
*
C
,
C
*
Q
T
,
Q
H
*
C
, or
C
*
Q
H
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.

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.