-
template<typename T>
void sygst(integer *itype, char *uplo, integer *n, T *a, integer *lda, T *b, integer *ldb, integer *info)# Reduction of a real symmetric-definite generalized eigenproblem to standard form.
Purpose:
Reduction of a real symmetric-definite generalized eigenproblem to standard form. If itype = 1, the problem is A*X = lambda*B*X, and A is overwritten by inv(U**T)*A*inv(U) or inv(L)*A*inv(L**T) 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**T or L**T*A*L. B must have been previously factorized as U**T*U or L*L**T by SPOTRF.
- Parameters:
itype – [in]
itype is integer*
= 1: compute inv(U**T)*A*inv(U) or inv(L)*A*inv(L**T);
= 2 or 3: compute U*A*U**T or L**T*A*L.uplo – [in]
uplo is char*
= ‘U’: Upper triangle of a is stored and b is factored as U**T*U;
= ‘L’: Lower triangle of a is stored and b is factored as L*L**T.n – [in]
n is integer*
The order of the matrices a and b. n >= 0.
a – [inout]
a is float/double 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 float/double array, dimension (ldb,n)
The triangular factor from the Cholesky factorization of b, as returned by SPOTRF.
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