?tpmqrt
?tpmqrt
Applies a real or complex orthogonal matrix obtained from a "triangular-pentagonal" complex block reflector to a general real or complex matrix, which consists of two blocks.
Syntax
lapack_int
LAPACKE_stpmqrt
(
int
matrix_layout
,
char
side
,
char
trans
,
lapack_int
m
,
lapack_int
n
,
lapack_int
k
,
lapack_int
l
,
lapack_int
nb
,
const
float
*
v
,
lapack_int
ldv
,
const
float
*
t
,
lapack_int
ldt
,
float
*
a
,
lapack_int
lda
,
float
*
b
,
lapack_int
ldb
);
lapack_int
LAPACKE_dtpmqrt
(
int
matrix_layout
,
char
side
,
char
trans
,
lapack_int
m
,
lapack_int
n
,
lapack_int
k
,
lapack_int
l
,
lapack_int
nb
,
const
double
*
v
,
lapack_int
ldv
,
const
double
*
t
,
lapack_int
ldt
,
double
*
a
,
lapack_int
lda
,
double
*
b
,
lapack_int
ldb
);
lapack_int
LAPACKE_ctpmqrt
(
int
matrix_layout
,
char
side
,
char
trans
,
lapack_int
m
,
lapack_int
n
,
lapack_int
k
,
lapack_int
l
,
lapack_int
nb
,
const
lapack_complex_float
*
v
,
lapack_int
ldv
,
const
lapack_complex_float
*
t
,
lapack_int
ldt
,
lapack_complex_float
*
a
,
lapack_int
lda
,
lapack_complex_float
*
b
,
lapack_int
ldb
);
lapack_int
LAPACKE_ztpmqrt
(
int
matrix_layout
,
char
side
,
char
trans
,
lapack_int
m
,
lapack_int
n
,
lapack_int
k
,
lapack_int
l
,
lapack_int
nb
,
const
lapack_complex_double
*
v
,
lapack_int
ldv
,
const
lapack_complex_double
*
t
,
lapack_int
ldt
,
lapack_complex_double
*
a
,
lapack_int
lda
,
lapack_complex_double
*
b
,
lapack_int
ldb
);
Include Files
- mkl.h
Description
The columns of the pentagonal matrix
V
contain
the elementary reflectors H
(1), H
(2), ..., H
(k
); V
is composed of a
rectangular block V1
and a trapezoidal block V2
:

The size of the trapezoidal block
V2
is
determined by the parameter l
, where 0 ≤ l
≤ k
. V2
is upper
trapezoidal, consisting of the first l
rows of a k
-by-k
upper triangular matrix.If
l
=k
, V2
is upper triangular; If
l
=0, there is no trapezoidal block, so V
= V1
is rectangular.If
side
= 'L':

where
A
is k
-by-n
, B
is
m
-by-n
and V
is m
-by-k
. If
side
= 'R':

where
A
is m
-by-k
, B
is m
-by-n
and V
is n
-by-k
. The real/complex orthogonal matrix
Q
is formed
from V
and T
. If
trans
='N' and side
='L', c
contains Q
* C
on exit. If
trans
='T' and side
='L', C
contains Q
T
* C
on exit. If
trans
='C' and side
='L', C
contains Q
H
* C
on exit. If
trans
='N' and side
='R', C
contains C
* Q
on exit. If
trans
='T' and side
='R', C
contains C
* Q
T
on exit. If
trans
='C' and side
='R', C
contains C
* Q
H
on exit.Input Parameters
- matrix_layout
- Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major (LAPACK_COL_MAJOR).
- side
- =: apply'L'Q,QT, orQHfrom the left.=: apply'R'Q,QT, orQHfrom the right.
- trans
- =, no transpose, apply'N'Q.=, transpose, apply'T'QT.=, transpose, apply'C'QH.
- m
- The number of rows in the matrixB,(.m≥ 0)
- n
- The number of columns in the matrixB,(.n≥ 0)
- k
- The number of elementary reflectors whose product defines the matrixQ,(.k≥ 0)
- l
- The order of the trapezoidal part ofV(k≥l≥ 0).
- nb
- The block size used for the storage oft,k≥nb≥ 1. This must be the same value ofnbused to generatetintpqrt.
- v
- Sizeldv*kfor column major layout;ldv*mfor row major layout andside= 'L',ldv*nfor row major layout andside= 'R'.Theith column must contain the vector which defines the elementary reflectorH(i), fori= 1,2,...,k, as returned bytpqrtin array argumentb.
- ldv
- The leading dimension of the arrayv.Ifside= 'L',ldvmust be at least max(1,m)for column major layout and max(1,;kfor row major layoutIfside= 'R',ldvmust be at least max(1,n)for column major layout and max(1,.kfor row major layout
- t
- Array, size.ldt*kfor column major layout andldt*nbfor row major layoutThe upper triangular factors of the block reflectors as returned bytpqrt
- ldt
- The leading dimension of the arrayt.ldtmust be at leastnbfor column major layout and max(1,.kfor row major layout
- a
- Ifside= 'L', size.lda*nfor column major layout andlda*kfor row major layout .Ifside= 'R', size.lda*kfor column major layout andlda*mfor row major layout .Thek-by-norm-by-kmatrixA.
- lda
- The leading dimension of the arraya.Ifside= 'L',ldamust be at least max(1,k)for column major layout and max(1,.nfor row major layoutIfside= 'R',ldamust be at least max(1,m)for column major layout and max(1,.kfor row major layout
- b
- Size.ldb*nfor column major layout andldb*mfor row major layoutThem-by-nmatrixB.
- ldb
- The leading dimension of the arrayb.ldbmust be at least max(1,m)for column major layout and max(1,.nfor row major layout
Output Parameters
- a
- Overwritten by the corresponding block of the productQ*C,C*Q,QT*C,C*QT,QH*C, orC*QH.
- b
- Overwritten by the corresponding block of the productQ*C,C*Q,QT*C,C*QT,QH*C, orC*QH.
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.