Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 11/07/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

?sygst

Reduces a real symmetric-definite generalized eigenvalue problem to the standard form.

Syntax

call ssygst(itype, uplo, n, a, lda, b, ldb, info)

call dsygst(itype, uplo, n, a, lda, b, ldb, info)

call sygst(a, b [,itype] [,uplo] [,info])

Include Files

  • mkl.fi, lapack.f90

Description

The routine reduces real symmetric-definite generalized eigenproblems

A*z = λ*B*z, A*B*z = λ*z, or B*A*z = λ*z

to the standard form C*y = λ*y. Here A is a real symmetric matrix, and B is a real symmetric positive-definite matrix. Before calling this routine, call ?potrf to compute the Cholesky factorization: B = UT*U or B = L*LT.

Input Parameters

itype

INTEGER. Must be 1 or 2 or 3.

If itype = 1, the generalized eigenproblem is A*z = lambda*B*z

for uplo = 'U': C = inv(UT)*A*inv(U), z = inv(U)*y;

for uplo = 'L': C = inv(L)*A*inv(LT), z = inv(LT)*y.

If itype = 2, the generalized eigenproblem is A*B*z = lambda*z

for uplo = 'U': C = U*A*UT, z = inv(U)*y;

for uplo = 'L': C = LT*A*L, z = inv(LT)*y.

If itype = 3, the generalized eigenproblem is B*A*z = lambda*z

for uplo = 'U': C = U*A*UT, z = UT*y;

for uplo = 'L': C = LT*A*L, z = L*y.

uplo

CHARACTER*1. Must be 'U' or 'L'.

If uplo = 'U', the array a stores the upper triangle of A; you must supply B in the factored form B = UT*U.

If uplo = 'L', the array a stores the lower triangle of A; you must supply B in the factored form B = L*LT.

n

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

a, b

REAL for ssygst

DOUBLE PRECISION for dsygst.

Arrays:

a(lda,*) contains the upper or lower triangle of A.

The second dimension of a must be at least max(1, n).

b(ldb,*) contains the Cholesky-factored matrix B:

B = UT*U or B = L*LT (as returned by ?potrf).

The second dimension of b must be at least max(1, n).

lda

INTEGER. The leading dimension of a; at least max(1, n).

ldb

INTEGER. The leading dimension of b; at least max(1, n).

Output Parameters

a

The upper or lower triangle of A is overwritten by the upper or lower triangle of C, as specified by the arguments itype and uplo.

info

INTEGER.

If info = 0, the execution is successful.

If info = -i, the i-th parameter had an illegal value.

LAPACK 95 Interface Notes

Routines in Fortran 95 interface have fewer arguments in the calling sequence than their FORTRAN 77 counterparts. For general conventions applied to skip redundant or restorable arguments, see LAPACK 95 Interface Conventions.

Specific details for the routine sygst interface are the following:

a

Holds the matrix A of size (n,n).

b

Holds the matrix B of size (n,n).

itype

Must be 1, 2, or 3. The default value is 1.

uplo

Must be 'U' or 'L'. The default value is 'U'.

Application Notes

Forming the reduced matrix C is a stable procedure. However, it involves implicit multiplication by inv(B) (if itype = 1) or B (if itype = 2 or 3). When the routine is used as a step in the computation of eigenvalues and eigenvectors of the original problem, there may be a significant loss of accuracy if B is ill-conditioned with respect to inversion.

The approximate number of floating-point operations is n3.