![]() |
LAPACK 3.12.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 100 of file dstech.f.