DLASQ2 - compute all the eigenvalues of the symmetric pos­
       itive definite tridiagonal matrix associated with  the  qd
       array  Z  to  high  relative accuracy are computed to high
       relative accuracy,  in  the  absence  of  denormalization,
       underflow and overflow


SYNOPSIS

       SUBROUTINE DLASQ2( N, Z, INFO )

           INTEGER        INFO, N

           DOUBLE         PRECISION Z( * )


PURPOSE

       DLASQ2 computes all the eigenvalues of the symmetric posi­
       tive definite tridiagonal matrix associated  with  the  qd
       array  Z  to  high  relative accuracy are computed to high
       relative accuracy,  in  the  absence  of  denormalization,
       underflow  and  overflow.  To see the relation of Z to the
       tridiagonal matrix, let  L  be  a  unit  lower  bidiagonal
       matrix  with  subdiagonals  Z(2,4,6,,..)  and  let U be an
       upper  bidiagonal  matrix  with  1's  above  and  diagonal
       Z(1,3,5,,..).  The  tridiagonal  is L*U or, if you prefer,
       the symmetric tridiagonal to which it is similar.

       Note : DLASQ2 defines a logical variable, IEEE,  which  is
       true  on  machines  which  follow  ieee-754 floating-point
       standard in their handling of  infinities  and  NaNs,  and
       false otherwise. This variable is passed to DLASQ3.


ARGUMENTS

       N     (input) INTEGER
             The  number  of rows and columns in the matrix. N >=
             0.

       Z     (workspace) DOUBLE PRECISION array, dimension ( 4*N
             )
             On entry Z holds the qd array. On exit, entries 1 to
             N hold the eigenvalues in decreasing order, Z( 2*N+1
             )  holds  the trace, and Z( 2*N+2 ) holds the sum of
             the eigenvalues. If N > 2, then Z( 2*N+3 ) holds the
             iteration  count,  Z( 2*N+4 ) holds NDIVS/NIN^2, and
             Z( 2*N+5 )  holds  the  percentage  of  shifts  that
             failed.

       INFO  (output) INTEGER
             = 0: successful exit
             <  0:  if  the  i-th argument is a scalar and had an
             illegal value, then INFO = -i, if the i-th  argument
             is  an  array  and the j-entry had an illegal value,
             then INFO = -(i*100+j) > 0: the algorithm  failed  =
             1,  a split was marked by a positive value in E = 2,

             ations (in inner while loop) = 3, termination crite­
             rion of outer while loop not  met  (program  created
             more than N unreduced blocks)


FURTHER DETAILS

       The shifts are accumulated in SIGMA. Iteration count is in
       ITER.  Ping-pong is controlled by PP (alternates between 0
       and 1).


Man(1) output converted with man2html