Computes all eigenvalues and, optionally, eigenvectors of a symmetric tridiagonal matrix using the implicit QL or QR method.
call ssteqr2(compz, n, d, e, z, ldz, nr, work, info)
call dsteqr2(compz, n, d, e, z, ldz, nr, work, info)
The ?steqr2 routine is a modified version of LAPACK routine ?steqr. The ?steqr2 routine 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.
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.
INTEGER. The order of the matrix T(n ≥ 0).
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.
(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.
INTEGER. The leading dimension of the array z. Constraints:
ldz ≥ 1,
ldz ≥ max(1, n), if eigenvectors are desired.
INTEGER. nr = max(1, numroc(n, nb, myprow, 0, nprocs)).
If compz = 'N', then nr is not referenced.
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.
REAL array, DIMENSION (n-1), for ssteqr2.
DOUBLE PRECISION array, DIMENSION (n-1), for dsteqr2.
On exit, e has been destroyed.
(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.
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.