Visible to Intel only — GUID: GUID-417A645A-CF05-4998-AC62-3A99DA520723
Visible to Intel only — GUID: GUID-417A645A-CF05-4998-AC62-3A99DA520723
?hpgst
Reduces a generalized eigenvalue problem with a Hermitian matrix to a standard eigenvalue problem using packed storage.
lapack_int LAPACKE_chpgst (int matrix_layout, lapack_int itype, char uplo, lapack_int n, lapack_complex_float* ap, const lapack_complex_float* bp);
lapack_int LAPACKE_zhpgst (int matrix_layout, lapack_int itype, char uplo, lapack_int n, lapack_complex_double* ap, const lapack_complex_double* bp);
- mkl.h
The routine reduces generalized eigenproblems with Hermitian matrices
A*z = λ*B*z, A*B*z = λ*z, or B*A*z = λ*z.
to standard eigenproblems C*y = λ*y, using packed matrix storage. Here A is a complex Hermitian matrix, and B is a complex Hermitian positive-definite matrix. Before calling this routine, you must call ?pptrf to compute the Cholesky factorization: B = UH*U or B = L*LH.
- matrix_layout
-
Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major (LAPACK_COL_MAJOR).
- itype
-
Must be 1 or 2 or 3.
If itype = 1, the generalized eigenproblem is A*z = lambda*B*z
for uplo = 'U': C = inv(UH)*A*inv(U), z = inv(U)*y;
for uplo = 'L': C = inv(L)*A*inv(LH), z = inv(LH)*y.
If itype = 2, the generalized eigenproblem is A*B*z = lambda*z
for uplo = 'U': C = U*A*UH, z = inv(U)*y;
for uplo = 'L': C = LH*A*L, z = inv(LH)*y.
If itype = 3, the generalized eigenproblem is B*A*z = lambda*z
for uplo = 'U': C = U*A*UH, z = UH*y;
for uplo = 'L': C = LH*A*L, z = L*y.
- uplo
-
Must be 'U' or 'L'.
If uplo = 'U', ap stores the packed upper triangle of A; you must supply B in the factored form B = UH*U.
If uplo = 'L', ap stores the packed lower triangle of A; you must supply B in the factored form B = L*LH.
- n
-
The order of the matrices A and B (n≥ 0).
- ap, bp
-
Arrays:
ap contains the packed upper or lower triangle of A.
The dimension of a must be at least max(1, n*(n+1)/2).
bp contains the packed Cholesky factor of B (as returned by ?pptrf with the same uplo value).
The dimension of b must be at least max(1, n*(n+1)/2).
- ap
-
The upper or lower triangle of A is overwritten by the upper or lower triangle of C, as specified by the arguments itype and uplo.
This function returns a value info.
If info=0, the execution is successful.
If info = -i, the i-th parameter had an illegal value.
Forming the reduced matrix C is a stable procedure. However, it involves implicit multiplication by inv(B) (if itype = 1) or B (if itype = 2 or 3). When the routine is used as a step in the computation of eigenvalues and eigenvectors of the original problem, there may be a significant loss of accuracy if B is ill-conditioned with respect to inversion.
The approximate number of floating-point operations is n3.