![]() |
LAPACK 3.12.1
LAPACK: Linear Algebra PACKage
|
subroutine dsvdch | ( | integer | n, |
double precision, dimension( * ) | s, | ||
double precision, dimension( * ) | e, | ||
double precision, dimension( * ) | svd, | ||
double precision | tol, | ||
integer | info ) |
DSVDCH
!> !> DSVDCH checks to see if SVD(1) ,..., SVD(N) are accurate singular !> values of the bidiagonal matrix B with diagonal entries !> S(1) ,..., S(N) and superdiagonal entries E(1) ,..., E(N-1)). !> It does this by expanding each SVD(I) into an interval !> [SVD(I) * (1-EPS) , SVD(I) * (1+EPS)], merging overlapping intervals !> if any, and using Sturm sequences to count and verify whether each !> resulting interval has the correct number of singular values (using !> DSVDCT). Here EPS=TOL*MAX(N/10,1)*MAZHEP, where MACHEP is the !> machine precision. The routine assumes the singular values are sorted !> with SVD(1) the largest and SVD(N) smallest. If each interval !> contains the correct number of singular values, INFO = 0 is returned, !> otherwise INFO is the index of the first singular value in the first !> bad interval. !>
[in] | N | !> N is INTEGER !> The dimension of the bidiagonal matrix B. !> |
[in] | S | !> S is DOUBLE PRECISION array, dimension (N) !> The diagonal entries of the bidiagonal matrix B. !> |
[in] | E | !> E is DOUBLE PRECISION array, dimension (N-1) !> The superdiagonal entries of the bidiagonal matrix B. !> |
[in] | SVD | !> SVD is DOUBLE PRECISION array, dimension (N) !> The computed singular values to be checked. !> |
[in] | TOL | !> TOL is DOUBLE PRECISION !> Error tolerance for checking, a multiplier of the !> machine precision. !> |
[out] | INFO | !> INFO is INTEGER !> =0 if the singular values are all correct (to within !> 1 +- TOL*MAZHEPS) !> >0 if the interval containing the INFO-th singular value !> contains the incorrect number of singular values. !> |
Definition at line 96 of file dsvdch.f.