-
template<typename T>
void hegs2(integer *itype, char *uplo, integer *n, T *a, integer *lda, T *b, integer *ldb, integer *info)# Reduction of a Hermitian-definite generalized eigenproblem to standard form (unblocked algorithm)
Purpose:
Reduction of a Hermitian definite generalized eigenproblem to standard form, using the factorization results obtained from cpotrf (unblocked algorithm). If itype = 1, the problem is A*X = lambda*B*X, and A is overwritten by inv(U**H)*A*inv(U) or inv(L)*A*inv(L**H) If itype = 2 or 3, the problem is A*B*X = lambda*X or B*A*X = lambda*X, and A is overwritten by U*A*U**H or L**H *A*L. B must have been previously factorized as U**H *U or L*L**H by CPOTRF.
- Parameters:
itype – [in]
itype is integer*
= 1: compute inv(U**H)*A*inv(U) or inv(L)*A*inv(L**H);
= 2 or 3: compute U*A*U**H or L**H *A*L.uplo – [in]
uplo is char*
Specifies whether the upper or lower triangular part of the Hermitian matrix a is stored, and how b has been factorized.
= ‘U’: Upper triangular
= ‘L’: Lower triangular
n – [in]
n is integer*
The order of the matrices a and b. n >= 0.
a – [inout]
a is COMPLEX/COMPLEX*16 array, dimension (lda,n)
On entry, the symmetric matrix a. If uplo = ‘U’, the leading n by n upper triangular part of a contains the upper triangular part of the matrix a, and the strictly lower triangular part of a is not referenced. If uplo = ‘L’, the leading n by n lower triangular part of a contains the lower triangular part of the matrix a, and the strictly upper triangular part of a is not referenced.
On exit, if info = 0, the transformed matrix, stored in the same format as a.lda – [in]
lda is integer*
The leading dimension of the array a. lda >= fla_max(1,n).
b – [in]
b is COMPLEX/COMPLEX*16 array, dimension (ldb,n)
The triangular factor from the Cholesky factorization of b, as returned by CPOTRF.
ldb – [in]
ldb is integer*
The leading dimension of the array b. ldb >= fla_max(1,n).
INFO – [out]
INFO is INTEGER
= 0: successful exit.
< 0: if INFO = -i, the i-th argument had an illegal value.