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
126 DOUBLE PRECISION DLAMCH
142 unfl = dlamch(
'Safe minimum' )
143 ovfl = dlamch(
'Overflow' )
144 eps = dlamch(
'Epsilon' )*dlamch(
'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 dsvdct( n, s, e, lower, numl )
192 CALL dsvdct( n, s, e, upper, numu )
196 IF( count.NE.bpnt-tpnt+1 )
THEN
subroutine dsvdch(N, S, E, SVD, TOL, INFO)
DSVDCH
subroutine dsvdct(N, S, E, SHIFT, NUM)
DSVDCT