LASQ2 - 5.2 English - 68552

AOCL API Guide (68552)

Document ID
68552
Release Date
2025-12-29
Version
5.2 English
template<typename T>
void lasq2(integer *n, T *z, integer *info)#

LASQ2 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:

 LASQ2 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[in]

    N is INTEGER

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

  • Z[inout]

    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[out]

    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)