SYGST - 5.2 English - 68552

AOCL API Guide (68552)

Document ID
68552
Release Date
2025-12-29
Version
5.2 English
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