?upmtr
?upmtr
Multiplies a complex matrix by the unitary matrix Q determined by
?hptrd
.Syntax
lapack_int
LAPACKE_cupmtr
(
int
matrix_layout
,
char
side
,
char
uplo
,
char
trans
,
lapack_int
m
,
lapack_int
n
,
const
lapack_complex_float
*
ap
,
const
lapack_complex_float
*
tau
,
lapack_complex_float
*
c
,
lapack_int
ldc
);
lapack_int
LAPACKE_zupmtr
(
int
matrix_layout
,
char
side
,
char
uplo
,
char
trans
,
lapack_int
m
,
lapack_int
n
,
const
lapack_complex_double
*
ap
,
const
lapack_complex_double
*
tau
,
lapack_complex_double
*
c
,
lapack_int
ldc
);
Include Files
- mkl.h
Description
The routine multiplies a complex matrix , where . Use this routine after a call to
C
by Q
or Q
H
Q
is the unitary matrix formed by hptrd when reducing a packed complex Hermitian matrix A
to tridiagonal form: A
= Q*T*Q
H
?hptrd
.Depending on the parameters (overwriting the result on
side
and trans
, the routine can form one of the matrix products Q*C
, Q
H
*C
, C*Q
, or C*Q
H
C
).Input Parameters
In the descriptions below,
r
denotes the order of Q
: 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).
- side
- Must be either'L'or'R'.If,side='L'QorQis applied toHCfrom the left.If,side='R'QorQis applied toHCfrom the right.
- uplo
- Must be'U'or'L'.Use the sameuploas supplied to?hptrd.
- trans
- Must be either'N'or'T'.If, the routine multipliestrans='N'CbyQ.If, the routine multipliestrans='T'CbyQ.H
- m
- The number of rows in the matrixC().m≥0
- n
- The number of columns inC().n≥0
- ap,tau,c,
- apandtauare the arrays returned by?hptrd.The size ofapmust be at least max(1,r(r+1)/2).The size oftaumust be at least max(1,r-1).c(size max(1,contains the matrixldc*n) for column major layout and max(1,ldc*m) for row major layout)C.
- ldc
- The leading dimension ofc;ldc≥max(1,m)for column major layout and.ldc≥max(1,n) for row major layout
Output Parameters
- c
- Overwritten by the productQ*C,QH*C,C*Q, orC*Q(as specified byHsideandtrans).
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 ||
, where ε is the machine precision.E
||2
= O
(ε
)*||C
||2
The total number of floating-point operations is approximately or .
8*
if m
2
*n
side
= 'L'
8*
if n
2
*m
side
= 'R'
The real counterpart of this routine is opmtr.