hegst#

Functions

void chegst(
    const INT            itype,
    const char*          uplo,
    const INT            n,
          c64*  restrict A,
    const INT            lda,
          c64*  restrict B,
    const INT            ldb,
          INT*           info
);
void chegst(const INT itype, const char *uplo, const INT n, c64 *restrict A, const INT lda, c64 *restrict B, const INT ldb, INT *info)#

CHEGST reduces a complex Hermitian-definite generalized eigenproblem to standard form.

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

in
itype

= 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.

in
uplo

= ‘U’: Upper triangle stored, B = U**H*U; = ‘L’: Lower triangle stored, B = L*L**H.

in
n

The order of the matrices A and B. n >= 0.

inout
A

On entry, the Hermitian matrix A. On exit, the transformed matrix.

in
lda

The leading dimension of A. lda >= max(1, n).

inout
B

The triangular factor from Cholesky factorization of B. B is modified by the routine but restored on exit.

in
ldb

The leading dimension of B. ldb >= max(1, n).

out
info

  • = 0: successful exit; < 0: if -i, the i-th argument was illegal.

Functions

void zhegst(
    const INT            itype,
    const char*          uplo,
    const INT            n,
          c128* restrict A,
    const INT            lda,
          c128* restrict B,
    const INT            ldb,
          INT*           info
);
void zhegst(const INT itype, const char *uplo, const INT n, c128 *restrict A, const INT lda, c128 *restrict B, const INT ldb, INT *info)#

ZHEGST reduces a complex Hermitian-definite generalized eigenproblem to standard form.

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 ZPOTRF.

Parameters

in
itype

= 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.

in
uplo

= ‘U’: Upper triangle stored, B = U**H*U; = ‘L’: Lower triangle stored, B = L*L**H.

in
n

The order of the matrices A and B. n >= 0.

inout
A

On entry, the Hermitian matrix A. On exit, the transformed matrix.

in
lda

The leading dimension of A. lda >= max(1, n).

inout
B

The triangular factor from Cholesky factorization of B. B is modified by the routine but restored on exit.

in
ldb

The leading dimension of B. ldb >= max(1, n).

out
info

  • = 0: successful exit; < 0: if -i, the i-th argument was illegal.