Visible to Intel only — GUID: GUID-2FF7F017-2BFD-4EFB-AB80-F84801DE7F19
Visible to Intel only — GUID: GUID-2FF7F017-2BFD-4EFB-AB80-F84801DE7F19
?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 A to symmetric tridiagonal form T by a unitary similarity transformation: A = Q*T*QH. The unitary matrix 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', ap stores the packed upper triangle of A.
If uplo = 'L', ap stores the packed lower triangle of A.
- n
-
The order of the matrix A (n≥ 0).
- ap
-
Array, size at least max(1, n(n+1)/2). Contains either upper or lower triangle of A (as specified by uplo) in the packed form described in "Matrix Storage Schemes.
Output Parameters
- ap
-
Overwritten by the tridiagonal matrix T and details of the unitary matrix Q, as specified by uplo.
- d, e
-
Arrays:
d contains the diagonal elements of the matrix T.
The size of d must be at least max(1, n).
e contains the off-diagonal elements of T.
The size of e must 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 matrix Q in a product of reflectors.
Return Values
This function returns a value info.
If info=0, the execution is successful.
If info = -i, the i-th parameter had an illegal value.
Application Notes
The computed matrix T is exactly similar to a matrix A + E, where ||E||2 = c(n)*ε*||A||2, c(n) is a modestly increasing function of n, and ε is the machine precision.
The approximate number of floating-point operations is (16/3)n3.
After calling this routine, you can call the following:
The real counterpart of this routine is sptrd.