98 SUBROUTINE dsvdch( N, S, E, SVD, TOL, INFO )
110 DOUBLE PRECISION e( * ), s( * ), svd( * )
117 parameter( one = 1.0d0 )
118 DOUBLE PRECISION zero
119 parameter( zero = 0.0d0 )
122 INTEGER bpnt, count, numl, numu, tpnt
123 DOUBLE PRECISION eps, lower, ovfl, tuppr, unfl, unflep, upper
142 unfl =
dlamch(
'Safe minimum' )
143 ovfl =
dlamch(
'Overflow' )
150 unflep = ( sqrt( sqrt( unfl ) ) / sqrt( ovfl ) )*svd( 1 ) +
155 eps = tol*max( n / 10, 1 )*eps
166 upper = ( one+eps )*svd( tpnt ) + unflep
167 lower = ( one-eps )*svd( bpnt ) - unflep
168 IF( lower.LE.unflep )
176 tuppr = ( one+eps )*svd( bpnt+1 ) + unflep
183 lower = ( one-eps )*svd( bpnt ) - unflep
184 IF( lower.LE.unflep )
191 CALL
dsvdct( n, s, e, lower, numl )
192 CALL
dsvdct( n, s, e, upper, numu )
196 IF( count.NE.bpnt-tpnt+1 )
THEN