The error analysis of the driver routine xSYGV, or xHEGV in the complex case
(see subsection 2.2.5.1),
goes as follows.
In all cases
is
the **absolute gap**
between and the nearest other eigenvalue.

- .
The computed eigenvalues can differ
from true eigenvalues by at most about
The angular difference between the computed eigenvector and a true eigenvector is

- or .
The computed eigenvalues can differ
from true eigenvalues by at most about
The angular difference between the computed eigenvector and a true eigenvector is

The code fragments above replace `p`(`n`) by 1, and makes sure
neither `RCONDB` nor `RCONDZ` is so small as to cause
overflow when used as divisors in the expressions for error bounds.

These error bounds are large when `B` is ill-conditioned with respect to
inversion ( is large). It is often the case that the eigenvalues
and eigenvectors are much better conditioned than indicated here.
We mention three ways to get tighter bounds.
The first way is effective when the diagonal entries of `B` differ
widely in magnitude:

- . Let
be a diagonal matrix.
Then replace
`B`by`DBD`and`A`by`DAD`in the above bounds. - or .
Let
be a diagonal matrix.
Then replace
`B`by`DBD`and`A`by in the above bounds.

The second way to get tighter bounds does not actually supply guaranteed
bounds, but its estimates are often better in practice.
It is not guaranteed because it assumes the algorithm is backward stable,
which is not necessarily true when `B` is ill-conditioned.
It estimates the **chordal distance** between a
true eigenvalue and a computed eigenvalue :

To interpret this measure we write
and . Then
.
In other words, if represents the one-dimensional subspace
consisting of the line through the origin with slope ,
and represents the analogous subspace `S`, then
is the sine of the acute angle between these
subspaces.
Thus `X` is bounded by one, and is small when both arguments are
large.
It applies only to the first problem, :

Suppose a computed eigenvalue of is the exact eigenvalue of a perturbed problem . Let be the unit eigenvector () for the exact eigenvalue . Then if||E||is small compared to|A|, and if||F||is small compared to||B||, we have

The third way applies only to the first problem , and only
when `A` is positive definite. We use a different algorithm:

- Compute the Cholesky factorization of , using xPOTRF.
- Compute the Cholesky factorization of , using xPOTRF.
- Compute the generalized singular value decomposition of the pair , using xTGSJA. The squares of the generalized singular values are the desired eigenvalues.

Other yet more refined algorithms and error bounds are discussed in [78][73][13], and will be available in future releases.

Tue Nov 29 14:03:33 EST 1994