LAPACK
3.6.1
LAPACK: Linear Algebra PACKage
|
subroutine dstech | ( | integer | N, |
double precision, dimension( * ) | A, | ||
double precision, dimension( * ) | B, | ||
double precision, dimension( * ) | EIG, | ||
double precision | TOL, | ||
double precision, dimension( * ) | WORK, | ||
integer | INFO | ||
) |
DSTECH
Let T be the tridiagonal matrix with diagonal entries A(1) ,..., A(N) and offdiagonal entries B(1) ,..., B(N-1)). DSTECH checks to see if EIG(1) ,..., EIG(N) are indeed accurate eigenvalues of T. It does this by expanding each EIG(I) into an interval [SVD(I) - EPS, SVD(I) + EPS], merging overlapping intervals if any, and using Sturm sequences to count and verify whether each resulting interval has the correct number of eigenvalues (using DSTECT). Here EPS = TOL*MAZHEPS*MAXEIG, where MACHEPS is the machine precision and MAXEIG is the absolute value of the largest eigenvalue. If each interval contains the correct number of eigenvalues, INFO = 0 is returned, otherwise INFO is the index of the first eigenvalue in the first bad interval.
[in] | N | N is INTEGER The dimension of the tridiagonal matrix T. |
[in] | A | A is DOUBLE PRECISION array, dimension (N) The diagonal entries of the tridiagonal matrix T. |
[in] | B | B is DOUBLE PRECISION array, dimension (N-1) The offdiagonal entries of the tridiagonal matrix T. |
[in] | EIG | EIG is DOUBLE PRECISION array, dimension (N) The purported eigenvalues to be checked. |
[in] | TOL | TOL is DOUBLE PRECISION Error tolerance for checking, a multiple of the machine precision. |
[out] | WORK | WORK is DOUBLE PRECISION array, dimension (N) |
[out] | INFO | INFO is INTEGER 0 if the eigenvalues are all correct (to within 1 +- TOL*MAZHEPS*MAXEIG) >0 if the interval containing the INFO-th eigenvalue contains the incorrect number of eigenvalues. |
Definition at line 103 of file dstech.f.