88 SUBROUTINE dsvdct( N, S, E, SHIFT, NUM )
97 DOUBLE PRECISION shift
100 DOUBLE PRECISION e( * ), s( * )
107 parameter( one = 1.0d0 )
108 DOUBLE PRECISION zero
109 parameter( zero = 0.0d0 )
113 DOUBLE PRECISION m1, m2, mx, ovfl, sov, sshift, ssun, sun, tmp,
121 INTRINSIC abs, max, sqrt
127 unfl = 2*
dlamch(
'Safe minimum' )
134 mx = max( mx, abs( s( i+1 ) ), abs( e( i ) ) )
137 IF( mx.EQ.zero )
THEN
138 IF( shift.LT.zero )
THEN
164 sshift = ( shift*m1 )*m2
175 tmp = ( s( 1 )*m1 )*m2
176 u = -tmp*( tmp / u ) - sshift
187 tmp = ( e( i )*m1 )*m2
188 u = -tmp*( tmp / u ) - sshift
198 tmp = ( s( i+1 )*m1 )*m2
199 u = -tmp*( tmp / u ) - sshift