314      SUBROUTINE dlaebz( IJOB, NITMAX, N, MMAX, MINP, NBMIN, ABSTOL,
 
  315     $                   RELTOL, PIVMIN, D, E, E2, NVAL, AB, C, MOUT,
 
  316     $                   NAB, WORK, IWORK, INFO )
 
  323      INTEGER            IJOB, INFO, MINP, MMAX, MOUT, N, NBMIN, NITMAX
 
  324      DOUBLE PRECISION   ABSTOL, PIVMIN, RELTOL
 
  327      INTEGER            IWORK( * ), NAB( MMAX, * ), NVAL( * )
 
  328      DOUBLE PRECISION   AB( MMAX, * ), C( * ), D( * ), E( * ), E2( * ),
 
  335      DOUBLE PRECISION   ZERO, TWO, HALF
 
  336      PARAMETER          ( ZERO = 0.0d0, two = 2.0d0,
 
  337     $                   half = 1.0d0 / two )
 
  340      INTEGER            ITMP1, ITMP2, J, JI, JIT, JP, KF, KFNEW, KL,
 
  342      DOUBLE PRECISION   TMP1, TMP2
 
  345      INTRINSIC          abs, max, min
 
  352      IF( ijob.LT.1 .OR. ijob.GT.3 ) 
THEN 
  366               tmp1 = d( 1 ) - ab( ji, jp )
 
  367               IF( abs( tmp1 ).LT.pivmin )
 
  374                  tmp1 = d( j ) - e2( j-1 ) / tmp1 - ab( ji, jp )
 
  375                  IF( abs( tmp1 ).LT.pivmin )
 
  378     $               nab( ji, jp ) = nab( ji, jp ) + 1
 
  381            mout = mout + nab( ji, 2 ) - nab( ji, 1 )
 
  400            c( ji ) = half*( ab( ji, 1 )+ab( ji, 2 ) )
 
  406      DO 130 jit = 1, nitmax
 
  410         IF( kl-kf+1.GE.nbmin .AND. nbmin.GT.0 ) 
THEN 
  418               work( ji ) = d( 1 ) - c( ji )
 
  420               IF( work( ji ).LE.pivmin ) 
THEN 
  422                  work( ji ) = min( work( ji ), -pivmin )
 
  426                  work( ji ) = d( j ) - e2( j-1 ) / work( ji ) - c( ji )
 
  427                  IF( work( ji ).LE.pivmin ) 
THEN 
  428                     iwork( ji ) = iwork( ji ) + 1
 
  429                     work( ji ) = min( work( ji ), -pivmin )
 
  443                  iwork( ji ) = min( nab( ji, 2 ),
 
  444     $                          max( nab( ji, 1 ), iwork( ji ) ) )
 
  449                  IF( iwork( ji ).EQ.nab( ji, 2 ) ) 
THEN 
  454                     ab( ji, 2 ) = c( ji )
 
  456                  ELSE IF( iwork( ji ).EQ.nab( ji, 1 ) ) 
THEN 
  461                     ab( ji, 1 ) = c( ji )
 
  464                     IF( klnew.LE.mmax ) 
THEN 
  469                        ab( klnew, 2 ) = ab( ji, 2 )
 
  470                        nab( klnew, 2 ) = nab( ji, 2 )
 
  471                        ab( klnew, 1 ) = c( ji )
 
  472                        nab( klnew, 1 ) = iwork( ji )
 
  473                        ab( ji, 2 ) = c( ji )
 
  474                        nab( ji, 2 ) = iwork( ji )
 
  489                  IF( iwork( ji ).LE.nval( ji ) ) 
THEN 
  490                     ab( ji, 1 ) = c( ji )
 
  491                     nab( ji, 1 ) = iwork( ji )
 
  493                  IF( iwork( ji ).GE.nval( ji ) ) 
THEN 
  494                     ab( ji, 2 ) = c( ji )
 
  495                     nab( ji, 2 ) = iwork( ji )
 
  514               IF( tmp2.LE.pivmin ) 
THEN 
  516                  tmp2 = min( tmp2, -pivmin )
 
  520                  tmp2 = d( j ) - e2( j-1 ) / tmp2 - tmp1
 
  521                  IF( tmp2.LE.pivmin ) 
THEN 
  523                     tmp2 = min( tmp2, -pivmin )
 
  533                  itmp1 = min( nab( ji, 2 ),
 
  534     $                    max( nab( ji, 1 ), itmp1 ) )
 
  539                  IF( itmp1.EQ.nab( ji, 2 ) ) 
THEN 
  546                  ELSE IF( itmp1.EQ.nab( ji, 1 ) ) 
THEN 
  552                  ELSE IF( klnew.LT.mmax ) 
THEN 
  557                     ab( klnew, 2 ) = ab( ji, 2 )
 
  558                     nab( klnew, 2 ) = nab( ji, 2 )
 
  559                     ab( klnew, 1 ) = tmp1
 
  560                     nab( klnew, 1 ) = itmp1
 
  572                  IF( itmp1.LE.nval( ji ) ) 
THEN 
  576                  IF( itmp1.GE.nval( ji ) ) 
THEN 
  590            tmp1 = abs( ab( ji, 2 )-ab( ji, 1 ) )
 
  591            tmp2 = max( abs( ab( ji, 2 ) ), abs( ab( ji, 1 ) ) )
 
  592            IF( tmp1.LT.max( abstol, pivmin, reltol*tmp2 ) .OR.
 
  593     $          nab( ji, 1 ).GE.nab( ji, 2 ) ) 
THEN 
  598               IF( ji.GT.kfnew ) 
THEN 
  603                  ab( ji, 1 ) = ab( kfnew, 1 )
 
  604                  ab( ji, 2 ) = ab( kfnew, 2 )
 
  605                  nab( ji, 1 ) = nab( kfnew, 1 )
 
  606                  nab( ji, 2 ) = nab( kfnew, 2 )
 
  607                  ab( kfnew, 1 ) = tmp1
 
  608                  ab( kfnew, 2 ) = tmp2
 
  609                  nab( kfnew, 1 ) = itmp1
 
  610                  nab( kfnew, 2 ) = itmp2
 
  613                     nval( ji ) = nval( kfnew )
 
  614                     nval( kfnew ) = itmp1
 
  625            c( ji ) = half*( ab( ji, 1 )+ab( ji, 2 ) )
 
  637      info = max( kl+1-kf, 0 )
 
 
subroutine dlaebz(ijob, nitmax, n, mmax, minp, nbmin, abstol, reltol, pivmin, d, e, e2, nval, ab, c, mout, nab, work, iwork, info)
DLAEBZ computes the number of eigenvalues of a real symmetric tridiagonal matrix which are less than ...