====================================================================
dlasq2 examples
====================================================================

====================================================================
Man Page Details
====================================================================

NAME
       DLASQ2  - all the eigenvalues of the symmetric positive definite tridi-
       agonal matrix associated with the qd array Z to high relative  accuracy
       are  computed to high relative accuracy, in the absence of denormaliza-
       tion, underflow and overflow

SYNOPSIS
       SUBROUTINE DLASQ2( N, Z, INFO )

           INTEGER        INFO, N

           DOUBLE         PRECISION Z( * )

PURPOSE
       DLASQ2 computes all the eigenvalues of the symmetric positive  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  han-
       dling  of  infinities  and  NaNs, and false otherwise. This variable is
       passed to DLAZQ3.


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, cur-
             rent block of Z not diagonalized after 30*N iterations (in  inner
             while  loop)  =  3, termination criterion 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).

