Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 3/31/2023
Public

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

Document Table of Contents

?spgst

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

Syntax

lapack_int LAPACKE_sspgst (int matrix_layout, lapack_int itype, char uplo, lapack_int n, float* ap, const float* bp);

lapack_int LAPACKE_dspgst (int matrix_layout, lapack_int itype, char uplo, lapack_int n, double* ap, const double* bp);

Include Files
  • mkl.h
Description

The routine reduces real symmetric-definite generalized eigenproblems

A*x = λ*B*x, A*B*x = λ*x, or B*A*x = λ*x

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

Input Parameters
matrix_layout

Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major (LAPACK_COL_MAJOR).

itype

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

Must be 'U' or 'L'.

If uplo = 'U', ap stores the packed upper triangle of A;

you must supply B in the factored form B = UT*U.

If uplo = 'L', ap stores the packed lower triangle of A;

you must supply B in the factored form B = L*LT.

n

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

ap, bp

Arrays:

ap contains the packed upper or lower triangle of A.

The dimension of ap must be at least max(1, n*(n+1)/2).

bp contains the packed Cholesky factor of B (as returned by ?pptrf with the same uplo value).

The dimension of bp must be at least max(1, n*(n+1)/2).

Output Parameters
ap

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.

Return Values

This function returns a value info.

If info=0, the execution is successful.

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

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.