?hptrd
?hptrd
Reduces a complex Hermitian matrix to tridiagonal form using packed storage.
Syntax
lapack_int LAPACKE_chptrd
(
int
matrix_layout
,
char
uplo
,
lapack_int
n
,
lapack_complex_float*
ap
,
float*
d
,
float*
e
,
lapack_complex_float*
tau
);
lapack_int LAPACKE_zhptrd
(
int
matrix_layout
,
char
uplo
,
lapack_int
n
,
lapack_complex_double*
ap
,
double*
d
,
double*
e
,
lapack_complex_double*
tau
);
Include Files
- mkl.h
Description
The routine reduces a packed complex Hermitian matrix . The unitary matrix
A
to symmetric tridiagonal form T
by a unitary similarity transformation: A
= Q*T*Q
H
Q
is not formed explicitly but is represented as a product of n
-1 elementary reflectors. Routines are provided for working with Q
in this representation (see Application Notes
below).Input Parameters
- matrix_layout
- Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major (LAPACK_COL_MAJOR).
- uplo
- Must be'U'or'L'.If,uplo='U'apstores the packed upper triangle ofA.If,uplo='L'apstores the packed lower triangle ofA.
- n
- The order of the matrixA().n≥0
- ap
- Array, size at least max(1,n(n+1)/2). Contains either upper or lower triangle ofA(as specified byuplo) in the packed form described in "Matrix Storage Schemes.
Output Parameters
- ap
- Overwritten by the tridiagonal matrixTand details of the unitary matrixQ, as specified byuplo.
- d,e
- Arrays:dcontains the diagonal elements of the matrixT.The size ofdmust be at least max(1,n).econtains the off-diagonal elements ofT.The size ofemust be at least max(1,n-1).
- tau
- Array, size at least max(1,n-1). Stores (n-1) scalars that define elementary reflectors in decomposition of the unitary matrixQin a product of reflectors.
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 matrix is a modestly increasing function of
T
is exactly similar to a matrix A
+ E
, where ||
, E
||2
= c
(n
)*ε
*||A
||2
c
(n
)n
, and ε
is the machine precision. The approximate number of floating-point operations is
(16/3)
.n
3
After calling this routine, you can call the following:
The real counterpart of this routine is sptrd.