96 SUBROUTINE ssvdch( N, S, E, SVD, TOL, INFO )
107 REAL E( * ), S( * ), SVD( * )
114 parameter( one = 1.0e0 )
116 parameter( zero = 0.0e0 )
119 INTEGER BPNT, COUNT, NUML, NUMU, TPNT
120 REAL EPS, LOWER, OVFL, TUPPR, UNFL, UNFLEP, UPPER
139 unfl = slamch(
'Safe minimum' )
140 ovfl = slamch(
'Overflow' )
141 eps = slamch(
'Epsilon' )*slamch(
'Base' )
147 unflep = ( sqrt( sqrt( unfl ) ) / sqrt( ovfl ) )*svd( 1 ) +
152 eps = tol*max( n / 10, 1 )*eps
163 upper = ( one+eps )*svd( tpnt ) + unflep
164 lower = ( one-eps )*svd( bpnt ) - unflep
165 IF( lower.LE.unflep )
173 tuppr = ( one+eps )*svd( bpnt+1 ) + unflep
180 lower = ( one-eps )*svd( bpnt ) - unflep
181 IF( lower.LE.unflep )
188 CALL ssvdct( n, s, e, lower, numl )
189 CALL ssvdct( n, s, e, upper, numu )
193 IF( count.NE.bpnt-tpnt+1 )
THEN
subroutine ssvdch(n, s, e, svd, tol, info)
SSVDCH
subroutine ssvdct(n, s, e, shift, num)
SSVDCT