86 SUBROUTINE dsvdct( N, S, E, SHIFT, NUM )
94 DOUBLE PRECISION SHIFT
97 DOUBLE PRECISION E( * ), S( * )
104 parameter( one = 1.0d0 )
105 DOUBLE PRECISION ZERO
106 parameter( zero = 0.0d0 )
110 DOUBLE PRECISION M1, M2, MX, OVFL, SOV, SSHIFT, SSUN, SUN, TMP,
114 DOUBLE PRECISION DLAMCH
118 INTRINSIC abs, max, sqrt
124 unfl = 2*dlamch(
'Safe minimum' )
131 mx = max( mx, abs( s( i+1 ) ), abs( e( i ) ) )
134 IF( mx.EQ.zero )
THEN
135 IF( shift.LT.zero )
THEN
161 sshift = ( shift*m1 )*m2
172 tmp = ( s( 1 )*m1 )*m2
173 u = -tmp*( tmp / u ) - sshift
184 tmp = ( e( i )*m1 )*m2
185 u = -tmp*( tmp / u ) - sshift
195 tmp = ( s( i+1 )*m1 )*m2
196 u = -tmp*( tmp / u ) - sshift
subroutine dsvdct(n, s, e, shift, num)
DSVDCT