83 SUBROUTINE dstect( N, A, B, SHIFT, NUM )
92 DOUBLE PRECISION shift
95 DOUBLE PRECISION a( * ), b( * )
101 DOUBLE PRECISION zero, one, three
102 parameter( zero = 0.0d0, one = 1.0d0, three = 3.0d0 )
106 DOUBLE PRECISION m1, m2, mx, ovfl, sov, sshift, ssun, sun, tmp,
114 INTRINSIC abs, max, sqrt
120 unfl =
dlamch(
'Safe minimum' )
121 ovfl =
dlamch(
'Overflow' )
127 mx = max( mx, abs( a( i+1 ) ), abs( b( i ) ) )
132 IF( shift.GE.three*mx )
THEN
136 IF( shift.LT.-three*mx )
THEN
159 sshift = ( shift*m1 )*m2
160 u = ( a( 1 )*m1 )*m2 - sshift
171 tmp = ( b( i-1 )*m1 )*m2
172 u = ( ( a( i )*m1 )*m2-tmp*( tmp / u ) ) - sshift