# ?lasq2

Computes all the eigenvalues of the symmetric positive definite tridiagonal matrix associated with the qd array z to high relative accuracy. Used by ?bdsqr and ?stegr.

## Syntax

call slasq2( n, z, info )

call dlasq2( n, z, info )

## Description

The routine ?lasq2 computes all the eigenvalues of the symmetric positive definite tridiagonal matrix associated with the qd array z 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 LU or, if you prefer, the symmetric tridiagonal to which it is similar.

## Input Parameters

n

  INTEGER. The number of rows and columns in the matrix. `n ≥ 0`.

z

  REAL for slasq2

  DOUBLE PRECISION for dlasq2.

  Array, DIMENSION (4 * n).

  On entry, z holds the qd array.

## Output Parameters

z

  On exit, entries 1 to n hold the eigenvalues in decreasing order, `z(2n+1)` holds the trace, and `z(2n+2)` holds the sum of the eigenvalues. If `n > 2`, then `z(2n+3)` holds the iteration count, `z(2n+4)` holds ndivs/nin2, and `z(2n+5)` holds the percentage of shifts that failed.

info

  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).

## Application Notes

The routine ?lasq2 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 ?lazq3.

Parent topic: Auxiliary Routines