Next: Wrong Results Up: Failures Detected by LAPACK Previous: Invalid Arguments and XERBLA Contents Index

##
Computational Failures and INFO > 0

A positive value of INFO on return from an LAPACK routine indicates a failure in the course of the algorithm. Common causes are:

- a matrix is singular (to working precision);
- a symmetric matrix is not positive definite;
- an iterative algorithm for computing eigenvalues or eigenvectors fails to converge in the permitted number of iterations.

For example, if SGESVX is called to solve a system of equations with a coefficient matrix that is approximately singular, it may detect exact singularity at the ith stage of the LU factorization, in which case it returns INFO = i; or (more probably) it may compute an estimate of the reciprocal condition number that is less than machine precision, in which case it returns INFO = n+1. Again, the documentation in Part 2 should be consulted for a description of the error.

When a failure with INFO > 0 occurs, control is always returned to the calling program; XERBLA is not called, and no error message is written. It is worth repeating that it is good practice always to check for a non-zero value of INFO on return from an LAPACK routine.

A failure with INFO > 0 may indicate any of the following:

- an inappropriate routine was used: for example, if a routine fails because a symmetric matrix turns out not to be positive definite, consider using a routine for symmetric indefinite matrices.

- a single precision routine was used when double precision was needed: for example, if SGESVX reports approximate singularity (as illustrated above), the corresponding double precision routine DGESVX may be able to solve the problem (but nevertheless the problem is ill-conditioned).

- a programming error occurred in generating the data supplied to a routine: for example, even though theoretically a matrix should be well-conditioned and positive-definite, a programming error in generating the matrix could easily destroy either of those properties.

- a programming error occurred in calling the routine, of the kind listed in Section 7.2.

Next: Wrong Results Up: Failures Detected by LAPACK Previous: Invalid Arguments and XERBLA Contents Index