# ?steqr2

Computes all eigenvalues and, optionally, eigenvectors of a symmetric tridiagonal matrix using the implicit QL or QR method.

## Syntax

call ssteqr2(compz, n, d, e, z, ldz, nr, work, info)

call dsteqr2(compz, n, d, e, z, ldz, nr, work, info)

## Description

This routine is a modified version of LAPACK routine ?steqr. The routine ?steqr2 computes all eigenvalues and, optionally, eigenvectors of a symmetric tridiagonal matrix using the implicit QL or QR method. ?steqr2 is modified from ?steqr to allow each ScaLAPACK process running ?steqr2 to perform updates on a distributed matrix Q. Proper usage of ?steqr2 can be gleaned from examination of ScaLAPACK routine p?syev.

## Input Parameters

compz

  CHARACTER*1. Must be 'N' or 'I'.

  If `compz = 'N'`, the routine computes eigenvalues only. If `compz = 'I'`, the routine computes the eigenvalues and eigenvectors of the tridiagonal matrix T.

  z must be initialized to the identity matrix by p?laset or ?laset prior to entering this subroutine.

n

  INTEGER. The order of the matrix T`(n ≥ 0)`.

d, e, work

  REAL for single-precision flavors

  DOUBLE PRECISION for double-precision flavors.

  Arrays: d contains the diagonal elements of T. The dimension of d must be at least `max(1, n)`.

  e contains the `(n-1)` subdiagonal elements of T. The dimension of e must be at least `max(1, n-1)`.

  work is a workspace array. The dimension of work is `max(1, 2*n-2)`. If `compz = 'N'`, then work is not referenced.

z

  (local)

  REAL for ssteqr2

  DOUBLE PRECISION for dsteqr2

  Array, global DIMENSION (n, n), local DIMENSION (ldz, nr).

  If `compz = 'V'`, then z contains the orthogonal matrix used in the reduction to tridiagonal form.

ldz

  INTEGER. The leading dimension of the array z. Constraints:

  `ldz ≥ 1`,

  `ldz ≥ max(1, n)`, if eigenvectors are desired.

nr

  INTEGER. nr = `max(1, numroc(n, nb, myprow, 0, nprocs))`.

  If `compz = 'N'`, then nr is not referenced.

## Output Parameters

d

  REAL array, DIMENSION (n), for ssteqr2.

  DOUBLE PRECISION array, DIMENSION (n), for dsteqr2.

  On exit, the eigenvalues in ascending order, if `info = 0`.

  See also info.

e

  REAL array, DIMENSION (n-1), for ssteqr2.

  DOUBLE PRECISION array, DIMENSION (n-1), for dsteqr2.

  On exit, e has been destroyed.

z

  (local)

  REAL for ssteqr2

  DOUBLE PRECISION for dsteqr2

  Array, global DIMENSION (n, n), local DIMENSION (ldz, nr).

  On exit, if `info = 0`, then,

  if `compz = 'V'`, z contains the orthonormal eigenvectors of the original symmetric matrix, and if `compz = 'I'`, z contains the orthonormal eigenvectors of the symmetric tridiagonal matrix. If `compz = 'N'`, then z is not referenced.

info

  INTEGER.

  `info = 0`, the exit is successful.

  `info < 0`: if `info = -i`, the i-th had an illegal value.

  `info > 0`: the algorithm has failed to find all the eigenvalues in a total of 30n iterations;

  if `info = i`, then i elements of e have not converged to zero; on exit, d and e contain the elements of a symmetric tridiagonal matrix, which is orthogonally similar to the original matrix.

Parent topic: Auxiliary Routines