# ?spgst

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

## Syntax

FORTRAN 77:

call sspgst(itype, uplo, n, ap, bp, info)

call dspgst(itype, uplo, n, ap, bp, info)

Fortran 95:

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

## Description

This 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

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'`, 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

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

ap, bp

  REAL for sspgst

  DOUBLE PRECISION for dspgst.

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

b

  p(*) 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.

info

  INTEGER.

  If `info = 0`, the execution is successful.

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

## Fortran 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 Fortran 95 Interface Conventions.

Specific details for the routine spgst interface are the following:

a

  Stands for argument ap in Fortan 77 interface. Holds the array A of size (n*(n+1)/2).

b

  Stands for argument bp in Fortan 77 interface. Holds the array B of size (n*(n+1)/2).

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.

Parent topic: Generalized Symmetric-Definite Eigenvalue Problems