145 SUBROUTINE slarrk( N, IW, GL, GU,
146 $ D, E2, PIVMIN, RELTOL, W, WERR, INFO)
155 REAL PIVMIN, RELTOL, GL, GU, W, WERR
164 REAL FUDGE, HALF, TWO, ZERO
165 parameter( half = 0.5e0, two = 2.0e0,
166 $ fudge = two, zero = 0.0e0 )
169 INTEGER I, IT, ITMAX, NEGCNT
170 REAL ATOLI, EPS, LEFT, MID, RIGHT, RTOLI, TMP1,
178 INTRINSIC abs, int, log, max
192 tnorm = max( abs( gl ), abs( gu ) )
194 atoli = fudge*two*pivmin
196 itmax = int( ( log( tnorm+pivmin )-log( pivmin ) ) /
201 left = gl - fudge*tnorm*eps*n - fudge*two*pivmin
202 right = gu + fudge*tnorm*eps*n + fudge*two*pivmin
209 tmp1 = abs( right - left )
210 tmp2 = max( abs(right), abs(left) )
211 IF( tmp1.LT.max( atoli, pivmin, rtoli*tmp2 ) )
THEN
222 mid = half * (left + right)
225 IF( abs( tmp1 ).LT.pivmin )
228 $ negcnt = negcnt + 1
231 tmp1 = d( i ) - e2( i-1 ) / tmp1 - mid
232 IF( abs( tmp1 ).LT.pivmin )
235 $ negcnt = negcnt + 1
238 IF(negcnt.GE.iw)
THEN
249 w = half * (left + right)
250 werr = half * abs( right - left )