98 SUBROUTINE ssvdch( N, S, E, SVD, TOL, INFO )
110 REAL E( * ), S( * ), SVD( * )
117 parameter ( one = 1.0e0 )
119 parameter ( zero = 0.0e0 )
122 INTEGER BPNT, COUNT, NUML, NUMU, TPNT
123 REAL EPS, LOWER, OVFL, TUPPR, UNFL, UNFLEP, UPPER
142 unfl = slamch(
'Safe minimum' )
143 ovfl = slamch(
'Overflow' )
144 eps = slamch(
'Epsilon' )*slamch(
'Base' )
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 ssvdct( n, s, e, lower, numl )
192 CALL ssvdct( n, s, e, upper, numu )
196 IF( count.NE.bpnt-tpnt+1 )
THEN
subroutine ssvdct(N, S, E, SHIFT, NUM)
SSVDCT
subroutine ssvdch(N, S, E, SVD, TOL, INFO)
SSVDCH