SRC/slasq2.f(3)

NAME
SRC/slasq2.f

SYNOPSIS

  Functions/Subroutines
subroutine slasq2 (n, z, info)
SLASQ2 computes all the eigenvalues of the symmetric positive definite tridiagonal matrix associated with the qd Array Z to high relative accuracy. Used by sbdsqr and sstegr.

Function/Subroutine Documentation

  subroutine slasq2 (integer n, real, dimension( * ) z, integer info)

SLASQ2 computes all the eigenvalues of the symmetric positive definite tridiagonal matrix associated with the qd Array Z to high relative accuracy. Used by sbdsqr and sstegr.

Purpose:

     SLASQ2 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 : SLASQ2 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 SLASQ3.

Parameters
    N

              N is INTEGER
            The number of rows and columns in the matrix. N >= 0.

    Z

              Z is REAL 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

              INFO is 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, current block of Z not diagonalized after 100*N
                       iterations (in inner while loop).  On exit Z holds
                       a qd array with the same eigenvalues as the given Z.
                  = 3, termination criterion of outer while loop not met
                       (program created more than N unreduced blocks)

Author
    Univ. of Tennessee

    Univ. of California Berkeley

    Univ. of Colorado Denver

    NAG Ltd.

Further Details:

      Local Variables: I0:N0 defines a current unreduced segment of Z.
      The shifts are accumulated in SIGMA. Iteration count is in ITER.
      Ping-pong is controlled by PP (alternates between 0 and 1).

Definition at line 111 of file slasq2.f.

Author

Generated automatically by Doxygen for LAPACK from the source code.