HP MLIB User's Guide Vol. 2 7th Ed.

1010 HP MLIB User’s Guide
What you need to know to use these subprograms
The eigenvalue location counts derived from the inertias may differ from what
has been computed. In such cases, a warning is issued. The algorithm attempts
to avoid such situations when creating trust regions but often must use
user-specified interval bounds for its final trust region. Specifying eigenvalues
in an interval where the endpoints are very close to eigenvalues is likely to
cause warnings.
Convention for returning eigenvalues and eigenvectors
The number of eigenvalues and vectors that will be computed by the sparse
eigenanalysis package is often not known before the computation. This is
obviously the case when all of the eigenvalues in an interval are requested, but
it may also occur when an interval contains fewer than the number of
eigenvalues requested. The eigenvector matrix is presumed to be dense, so it
would occupy a large amount of memory if the number of eigenvalues computed
is large. In some contexts, it may not be necessary or desirable to hold the
entire eigenvector matrix in main memory. Thus, rather than request that the
user supply the space for the eigenvector matrix, the eigenvectors are returned
to the user through a two-pass process.
The user first calls one or more subprograms to compute the eigenvalues and
eigenvectors. These inform the user of the number computed. In the second
pass, the user can request that either specified single or groups of eigenvectors
be returned, permitting more flexible use of storage.
This convention, requiring a second subroutine to retrieve the eigenvectors,
also permits the user to have selective access to additional data that would
otherwise be discarded by the algorithm. It is common for the package to
compute a few more eigenvectors than the user requested. For example, the
user may request the lowest 10 eigenvalues. However, if the values of the tenth,
eleventh and twelfth eigenvalues are very close to one another, the package
must compute all twelve eigenvalues to establish a reliable trust region
containing the first 10 eigenvalues. There are other contexts, for example when
the heuristic shifting strategy used is not perfect, or when some failure of the
algorithm causes the computation to be cut short, where the package will
compute more or different eigenvalues and vectors than requested.