dsvdch3
Part of dsvdch.f(3).
Usage
Functions/Subroutines
DSVDCH
Function/Subroutine Documentation
subroutine dsvdch (integer n, double precision, dimension( * ) s, double precision, dimension( * ) e, double precision, dimension( * ) svd, double precision tol, integer info)
DSVDCH
Purpose:
!> !> 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. !>
Parameters
N
!> N is INTEGER !> The dimension of the bidiagonal matrix B. !>
S
!> S is DOUBLE PRECISION array, dimension (N) !> The diagonal entries of the bidiagonal matrix B. !>
E
!> E is DOUBLE PRECISION array, dimension (N-1) !> The superdiagonal entries of the bidiagonal matrix B. !>
SVD
!> SVD is DOUBLE PRECISION array, dimension (N) !> The computed singular values to be checked. !>
TOL
!> TOL is DOUBLE PRECISION !> Error tolerance for checking, a multiplier of the !> machine precision. !>
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. !>
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Definition at line 96 of file dsvdch.f.