Computes all eigenvalues and, optionally, eigenvectors of a complex generalized Hermitian positive-definite eigenproblem with matrices in packed storage using a divide and conquer method.

Syntax

lapack_int LAPACKE_chpgvd( int matrix_layout, lapack_int itype, char jobz, char uplo, lapack_int n, lapack_complex_float* ap, lapack_complex_float* bp, float* w, lapack_complex_float* z, lapack_int ldz );

lapack_int LAPACKE_zhpgvd( int matrix_layout, lapack_int itype, char jobz, char uplo, lapack_int n, lapack_complex_double* ap, lapack_complex_double* bp, double* w, lapack_complex_double* z, lapack_int ldz );

Include Files

  • mkl.h

Description

The routine computes all the eigenvalues, and optionally, the eigenvectors of a complex generalized Hermitian positive-definite eigenproblem, of the form

A*x = λ*B*x, A*B*x = λ*x, or B*A*x = λ*x.

Here A and B are assumed to be Hermitian, stored in packed format, and B is also positive definite.

If eigenvectors are desired, it uses a divide and conquer algorithm.

Input Parameters

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. Specifies the problem type to be solved:

if itype = 1, the problem type is A*x = lambda*B*x;

if itype = 2, the problem type is A*B*x = lambda*x;

if itype = 3, the problem type is B*A*x = lambda*x.

jobz

Must be 'N' or 'V'.

If jobz = 'N', then compute eigenvalues only.

If jobz = 'V', then compute eigenvalues and eigenvectors.

uplo

Must be 'U' or 'L'.

If uplo = 'U', arrays ap and bp store the upper triangles of A and B;

If uplo = 'L', arrays ap and bp store the lower triangles of A and B.

n

The order of the matrices A and B (n 0).

ap, bp

Arrays:

ap contains the packed upper or lower triangle of the Hermitian matrix A, as specified by uplo.

The dimension of ap must be at least max(1, n*(n+1)/2).

bp contains the packed upper or lower triangle of the Hermitian matrix B, as specified by uplo.

The dimension of bp must be at least max(1, n*(n+1)/2).

ldz

The leading dimension of the output array z; ldz 1. If jobz = 'V', ldz max(1, n).

Output Parameters

ap

On exit, the contents of ap are overwritten.

bp

On exit, contains the triangular factor U or L from the Cholesky factorization B = UH*U or B = L*LH, in the same storage format as B.

w

Array, size at least max(1, n).

If info = 0, contains the eigenvalues in ascending order.

z

Array z (size at least max(1, ldz*n)).

If jobz = 'V', then if info = 0, z contains the matrix Z of eigenvectors. The eigenvectors are normalized as follows:

if itype = 1 or 2, ZH*B*Z = I;

if itype = 3, ZH*inv(B)*Z = I;

If jobz = 'N', then z is not referenced.

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.

If info > 0, cpptrf/zpptrf and chpevd/zhpevd returned an error code:

If info = in, chpevd/zhpevd failed to converge, and i off-diagonal elements of an intermediate tridiagonal did not converge to zero;

If info = n + i, for 1 in, then the leading minor of order i of B is not positive-definite. The factorization of B could not be completed and no eigenvalues or eigenvectors were computed.

Para obtener información más completa sobre las optimizaciones del compilador, consulte nuestro Aviso de optimización.
Seleccione el color del botón adhesivo: 
Orange (only for download buttons)