?gemqrt
?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 with
?gemqrt
routine overwrites the general real or complex m
-by-n
matrixC
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 reflectorsQ
= H
(1) H
(2)... H
(k
) = I
- V
*T
*V
T
for real flavors, andQ
= 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': applyQ,QT, orQHfrom the left.='R': applyQ,QT, orQHfrom the right.
- trans
- ='N', no transpose, applyQ.='T', transpose, applyQT.='C', transpose, applyQH.
- m
- The number of rows in the matrixC,(.m≥ 0)
- n
- The number of columns in the matrixC, (n≥ 0).
- k
- The number of elementary reflectors whose product defines the matrixQ. Constraints:Ifside= 'L',m≥k≥0Ifside= 'R',n≥k≥0.
- nb
- The block size used for the storage oft,k≥nb≥ 1. This must be the same value ofnbused to generatetin geqrt.
- v
- Array of size max(1,ldv*k) for column major layout, max(1,ldv*m) for row major layout andside= 'L', and max(1,ldv*n) for row major layout andside= 'R'.Theith column must contain the vector which defines the elementary reflectorH(i), fori= 1,2,...,k, as returned by geqrt in the firstkcolumns of its array argumenta.
- ldv
- The leading dimension of the arrayv.ifside= 'L',ldvmust be at least max(1,m)for column major layout and max(1,;k) for row major layoutifside= 'R',ldvmust 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 arrayt.ldtmust be at leastnbfor column major layout and max(1,.k) for row major layout
- c
- Them-by-nmatrixC.
- ldc
- The leadinng dimension of the arrayc.ldcmust be at least max(1,m)for column major layout and max(1,.n) for row major layout
Output Parameters
- c
- Overwritten by the productQ*C,C*Q,QT*C,C*QT,QH*C, orC*QHas specified bysideandtrans.
Return Values
This function returns a value
info
.If , the execution is successful.
info
=0If , the
info
= -i
i
-th parameter had an illegal value.