?tprfb
?tprfb
Applies a real or complex "triangular-pentagonal" blocked reflector to a real or complex matrix, which is composed of two blocks.
Syntax
lapack_int
LAPACKE_stprfb
(
int
matrix_layout
,
char
side
,
char
trans
,
char
direct
,
char
storev
,
lapack_int
m
,
lapack_int
n
,
lapack_int
k
,
lapack_int
l
,
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_dtprfb
(
int
matrix_layout
,
char
side
,
char
trans
,
char
direct
,
char
storev
,
lapack_int
m
,
lapack_int
n
,
lapack_int
k
,
lapack_int
l
,
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_ctprfb
(
int
matrix_layout
,
char
side
,
char
trans
,
char
direct
,
char
storev
,
lapack_int
m
,
lapack_int
n
,
lapack_int
k
,
lapack_int
l
,
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_ztprfb
(
int
matrix_layout
,
char
side
,
char
trans
,
char
direct
,
char
storev
,
lapack_int
m
,
lapack_int
n
,
lapack_int
k
,
lapack_int
l
,
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
?tprfb
routine applies a real or complex
"triangular-pentagonal" block reflector H
, H
T
, or H
H
from either the left or the right to a
real or complex matrix C
, which is composed of two blocks A
and B
. The block
B
is m
-by-n
. If side
= 'R', A
is m
-by-k
, and if side
= 'L', A
is of size
k
-by-n
.
The pentagonal matrix
V
is composed of a
rectangular block V1
and a trapezoidal block V2
. The size of the
trapezoidal block is determined by the parameter l
, where 0≤l
≤k
. if l
=k
,
the V2
block of V
is triangular; if l
=0, there is no trapezoidal block, thus V
=
V1
is rectangular.direct ='F' | direct ='B' | |
storev ='C' | ![]() V2 is upper trapezoidal (first l rows of k -by-k upper triangular) | ![]() V2 is lower trapezoidal (last l rows of k -by-k lower triangular matrix) |
storev ='R' | ![]() V2 is lower trapezoidal (first l columns of k -by-k lower triangular matrix) | ![]() V2 is upper trapezoidal (last l columns of k -by-k upper triangular matrix) |
side ='L' | side ='R' | |
storev ='C' | V is m -by-k V2 is l -by-k | V is n -by-k V2 is l -by-k |
storev ='R' | V is k -by-m V2 is k -by-l | V is k -by-n V2 is k -by-l |
Input Parameters
- matrix_layout
- Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major (LAPACK_COL_MAJOR).
- side
- = 'L': applyH,HT, orHHfrom the left,= 'R': applyH,HT, orHHfrom the right.
- trans
- = 'N': applyH(no transpose),= 'T': applyHT(transpose),= 'C': applyHH(conjugate transpose).
- direct
- Indicates howHis formed from a product of elementary reflectors:= 'F':H=H(1)H(2) . . .H(k) (Forward),= 'B':H=H(k) . . .H(2)H(1) (Backward).
- storev
- Indicates how the vectors that define the elementary reflectors are stored:= 'C': Columns,= 'R': Rows.
- m
- The total number of rows in the matrixB(m≥ 0).
- n
- The number of columns inB(n≥ 0).
- k
- The order of the matrixT, which is the number of elementary reflectors whose product defines the block reflector. (k≥ 0)
- l
- The order of the trapezoidal part ofV. (k≥l≥ 0).
- v
- An array containing the pentagonal matrixV(the elementary reflectors. The size limitations depend on values of parametersH(1),H(2), …,H(k)storevandsideas described in the following tablestorev=Cstorev=Rside=Lside=Rside=Lside=RColumn majormax(1,ldv*k)max(1,ldv*k)max(1,ldv*m)max(1,ldv*n)Row majormax(1,ldv*m)max(1,ldv*n)max(1,ldv*k)max(1,ldv*k)
- ldv
- The leading dimension of the arrayv.It should satisfy the following conditions:storev=Cstorev=Rside=Lside=Rside=Lside=RColumn majormax(1,m)max(1,n)max(1,k)max(1,k)Row majormax(1,k)max(1,k)max(1,m)max(1,n)
- t
- Array sizemax(1,. The triangularldt*k)k-by-kmatrixTin the representation of the block reflector.
- ldt
- The leading dimension of the arrayt(ldt≥k).
- a
- size should satisfy the following conditions:kifside= 'R'.side=Lside=RColumn majormax(1,lda*n)max(1,lda*k)Row majormax(1,lda*k)max(1,lda*m)Thek-by-norm-by-kmatrixA.
- lda
- The leading dimension of the arrayashould satisfy the following conditions:side=Lside=RColumn majormax(1,k)max(1,m)Row majormax(1,n)max(1,k)
- b
- Array sizeat least max(1,, theldb*n) for column major layout and max(1,ldb*m) for row major layoutm-by-nmatrixB.
- ldb
- The leading dimension of the arrayb(ldb≥ max(1,m)for column major layout and).ldb≥ max(1,n) for row major layout
Output Parameters
- a
- Contains the corresponding block ofH*C,HT*C,HH*C,C*H,C*HT, orC*HH.
- b
- Contains the corresponding block ofH*C,HT*C,HH*C,C*H,C*HT, orC*HH.
Return Values
This function returns a value
info
.If , the execution is successful.
info
= 0If , the
info
< 0i
-th parameter had an illegal value.If , memory allocation error occurred.
info
= -1011