slasq2(3S)

SLASQ2 - compute 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

As shipped in IRIX 6.5.22. Added in IRIX 6.5.15.

NAME
     SLASQ2 - compute 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

SYNOPSIS
     SUBROUTINE SLASQ2( N, Z, INFO )

         INTEGER        INFO, N

         REAL           Z( * )

IMPLEMENTATION
     These routines are part of the SCSL Scientific Library and can be loaded
     using either the -lscs or the -lscs_mp option.  The -lscs_mp option
     directs the linker to use the multi-processor version of the library.

     When linking to SCSL with -lscs or -lscs_mp, the default integer size is
     4 bytes (32 bits). Another version of SCSL is available in which integers
     are 8 bytes (64 bits).  This version allows the user access to larger
     memory sizes and helps when porting legacy Cray codes.  It can be loaded
     by using the -lscs_i8 option or the -lscs_i8_mp option. A program may use
     only one of the two versions; 4-byte integer and 8-byte integer library
     calls cannot be mixed.

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.


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

     Z     (workspace) 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  (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,
           current 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).


SEE ALSO
     INTRO_LAPACK(3S), INTRO_SCSL(3S)

     This man page is available only online.