137      SUBROUTINE slaed6( KNITER, ORGATI, RHO, D, Z, FINIT, TAU,
 
  157      parameter( maxit = 40 )
 
  158      REAL               ZERO, ONE, TWO, THREE, FOUR, EIGHT
 
  159      parameter( zero = 0.0e0, one = 1.0e0, two = 2.0e0,
 
  160     $                   three = 3.0e0, four = 4.0e0, eight = 8.0e0 )
 
  167      REAL               DSCALE( 3 ), ZSCALE( 3 )
 
  171      INTEGER            I, ITER, NITER
 
  172      REAL               A, B, BASE, C, DDF, DF, EPS, ERRETM, ETA, F,
 
  173     $                   fc, sclfac, sclinv, small1, small2, sminv1,
 
  174     $                   sminv2, temp, temp1, temp2, temp3, temp4,
 
  178      INTRINSIC          abs, int, log, max, min, sqrt
 
  191      IF( finit .LT. zero )
THEN 
  199      IF( kniter.EQ.2 ) 
THEN 
  201            temp = ( d( 3 )-d( 2 ) ) / two
 
  202            c = rho + z( 1 ) / ( ( d( 1 )-d( 2 ) )-temp )
 
  203            a = c*( d( 2 )+d( 3 ) ) + z( 2 ) + z( 3 )
 
  204            b = c*d( 2 )*d( 3 ) + z( 2 )*d( 3 ) + z( 3 )*d( 2 )
 
  206            temp = ( d( 1 )-d( 2 ) ) / two
 
  207            c = rho + z( 3 ) / ( ( d( 3 )-d( 2 ) )-temp )
 
  208            a = c*( d( 1 )+d( 2 ) ) + z( 1 ) + z( 2 )
 
  209            b = c*d( 1 )*d( 2 ) + z( 1 )*d( 2 ) + z( 2 )*d( 1 )
 
  211         temp = max( abs( a ), abs( b ), abs( c ) )
 
  217         ELSE IF( a.LE.zero ) 
THEN 
  218            tau = ( a-sqrt( abs( a*a-four*b*c ) ) ) / ( two*c )
 
  220            tau = two*b / ( a+sqrt( abs( a*a-four*b*c ) ) )
 
  222         IF( tau .LT. lbd .OR. tau .GT. ubd )
 
  223     $      tau = ( lbd+ubd )/two
 
  224         IF( d(1).EQ.tau .OR. d(2).EQ.tau .OR. d(3).EQ.tau ) 
THEN 
  227            temp = finit + tau*z(1)/( d(1)*( d( 1 )-tau ) ) +
 
  228     $                     tau*z(2)/( d(2)*( d( 2 )-tau ) ) +
 
  229     $                     tau*z(3)/( d(3)*( d( 3 )-tau ) )
 
  230            IF( temp .LE. zero )
THEN 
  235            IF( abs( finit ).LE.abs( temp ) )
 
  246      eps = slamch( 
'Epsilon' )
 
  247      base = slamch( 
'Base' )
 
  248      small1 = base**( int( log( slamch( 
'SafMin' ) ) / log( base ) /
 
  250      sminv1 = one / small1
 
  251      small2 = small1*small1
 
  252      sminv2 = sminv1*sminv1
 
  258         temp = min( abs( d( 2 )-tau ), abs( d( 3 )-tau ) )
 
  260         temp = min( abs( d( 1 )-tau ), abs( d( 2 )-tau ) )
 
  263      IF( temp.LE.small1 ) 
THEN 
  265         IF( temp.LE.small2 ) 
THEN 
  282            dscale( i ) = d( i )*sclfac
 
  283            zscale( i ) = z( i )*sclfac
 
  302         temp = one / ( dscale( i )-tau )
 
  303         temp1 = zscale( i )*temp
 
  306         fc = fc + temp1 / dscale( i )
 
  312      IF( abs( f ).LE.zero )
 
  314      IF( f .LE. zero )
THEN 
  333      DO 50 niter = iter, maxit
 
  336            temp1 = dscale( 2 ) - tau
 
  337            temp2 = dscale( 3 ) - tau
 
  339            temp1 = dscale( 1 ) - tau
 
  340            temp2 = dscale( 2 ) - tau
 
  342         a = ( temp1+temp2 )*f - temp1*temp2*df
 
  344         c = f - ( temp1+temp2 )*df + temp1*temp2*ddf
 
  345         temp = max( abs( a ), abs( b ), abs( c ) )
 
  351         ELSE IF( a.LE.zero ) 
THEN 
  352            eta = ( a-sqrt( abs( a*a-four*b*c ) ) ) / ( two*c )
 
  354            eta = two*b / ( a+sqrt( abs( a*a-four*b*c ) ) )
 
  356         IF( f*eta.GE.zero ) 
THEN 
  361         IF( tau .LT. lbd .OR. tau .GT. ubd )
 
  362     $      tau = ( lbd + ubd )/two
 
  369            IF ( ( dscale( i )-tau ).NE.zero ) 
THEN 
  370               temp = one / ( dscale( i )-tau )
 
  371               temp1 = zscale( i )*temp
 
  374               temp4 = temp1 / dscale( i )
 
  376               erretm = erretm + abs( temp4 )
 
  384         erretm = eight*( abs( finit )+abs( tau )*erretm ) +
 
  386         IF( ( abs( f ).LE.four*eps*erretm ) .OR.
 
  387     $      ( (ubd-lbd).LE.four*eps*abs(tau) )  )
 
  389         IF( f .LE. zero )
THEN