?unmbr
?unmbr
Multiplies an arbitrary complex matrix by the unitary matrix
Q
or P
determined by ?gebrd
.Syntax
lapack_int
LAPACKE_cunmbr
(
int
matrix_layout
,
char
vect
,
char
side
,
char
trans
,
lapack_int
m
,
lapack_int
n
,
lapack_int
k
,
const
lapack_complex_float
*
a
,
lapack_int
lda
,
const
lapack_complex_float
*
tau
,
lapack_complex_float
*
c
,
lapack_int
ldc
);
lapack_int
LAPACKE_zunmbr
(
int
matrix_layout
,
char
vect
,
char
side
,
char
trans
,
lapack_int
m
,
lapack_int
n
,
lapack_int
k
,
const
lapack_complex_double
*
a
,
lapack_int
lda
,
const
lapack_complex_double
*
tau
,
lapack_complex_double
*
c
,
lapack_int
ldc
);
Include Files
- mkl.h
Input Parameters
In the descriptions below, :
r
denotes the order of Q
or P
H
If , ; if , .
side
= 'L'
r
= m
side
= 'R'
r
= n
- matrix_layout
- Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major (LAPACK_COL_MAJOR).
- vect
- Must be'Q'or'P'.If, thenvect='Q'QorQis applied toHC.If, thenvect='P'PorPis applied toHC.
- side
- Must be'L'or'R'.If, multipliers are applied toside='L'Cfrom the left.If, they are applied toside='R'Cfrom the right.
- trans
- Must be'N'or'C'.If, thentrans='N'QorPis applied toC.If, thentrans='C'QorHPis applied toHC.
- m
- The number of rows inC.
- n
- The number of columns inC.
- k
- One of the dimensions ofAin?gebrd:If, the number of columns invect='Q'A;If, the number of rows invect='P'A.Constraints:,m≥0,n≥0.k≥0
- a,c
- Arrays:ais the arrayaas returned by?gebrd.The size ofadepends on the value of thematrix_layout,vect, andsideparameters:matrix_layoutvectsidesizecolumn major'Q'-max(1,lda*k)column major'P''L'max(1,lda*m)column major'P''R'max(1,lda*n)row major'Q''L'max(1,lda*m)row major'Q''R'max(1,lda*n)row major'P'-max(1,lda*k)c(size max(1,holds the matrixldc*n) for column major layout and max(1,ldc*mfor row major layout)C.
- lda
- The leading dimension ofa. Constraints:lda≥max(1,r)for column major layout and at least max(1,ifk) for row major layout;vect='Q'lda≥max(1, min(r,k))for column major layout and at least max(1,ifr) for row major layout.vect='P'
- ldc
- The leading dimension ofc;.ldc≥max(1,m)
- tau
- Array, size at least max (1, min(r,k)).For, the arrayvect='Q'tauqas returned by?gebrd. For, the arrayvect='P'taupas returned by?gebrd.
Output Parameters
- c
- Overwritten by the productQ*C,QH*C,C*Q,C*Q,HP*C,PH*C,C*P, orC*P, as specified byHvect,side, andtrans.
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.Application Notes
The computed product differs from the exact product by a matrix
E
such that ||
.E
||2
= O
(ε
)*||C
||2
The total number of floating-point operations is approximately
8*
if n
*k
(2*m
- k
)side
= 'L'
m
≥
k
8*
if m
*k
(2*n
- k
)side
= 'R'
n
≥
k
8*
if m
2
*n
side
= 'L'
m
< k
8*
if n
2
*m
side
= 'R'
n
< k
The real counterpart of this routine is ormbr.