---
name: "slasq2"
section: "3lapack"
platform: "linux"
package: "liblapack-doc"
version: "3.2.1-8"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/slasq2/3lapack"
---

# slasq2(3lapack)

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

## NAME

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

## SYNOPSIS

- SUBROUTINE SLASQ2(

  N, Z, INFO )

- INTEGER

  INFO, N

- REAL

  Z( \* )

## 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 (input/output) 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).
