sstedc(3)
NAME
- SSTEDC - compute all eigenvalues and, optionally, eigen
- vectors of a symmetric tridiagonal matrix using the divide and
- conquer method
SYNOPSIS
SUBROUTINE SSTEDC( COMPZ, N, D, E, Z, LDZ, WORK, LWORK,
IWORK, LIWORK, INFO )
CHARACTER COMPZ
INTEGER INFO, LDZ, LIWORK, LWORK, N
INTEGER IWORK( * )
REAL D( * ), E( * ), WORK( * ), Z( LDZ, * )
PURPOSE
- SSTEDC computes all eigenvalues and, optionally, eigenvec
- tors of a symmetric tridiagonal matrix using the divide and con
- quer method. The eigenvectors of a full or band real symmetric
- matrix can also be found if SSYTRD or SSPTRD or SSBTRD has been
- used to reduce this matrix to tridiagonal form.
- This code makes very mild assumptions about floating point
- arithmetic. It will work on machines with a guard digit in
- add/subtract, or on those binary machines without guard digits
- which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or
- Cray-2. It could conceivably fail on hexadecimal or decimal ma
- chines without guard digits, but we know of none. See SLAED3 for
- details.
ARGUMENTS
- COMPZ (input) CHARACTER*1
- = 'N': Compute eigenvalues only.
= 'I': Compute eigenvectors of tridiagonal matrix
- also.
= 'V': Compute eigenvectors of original dense
- symmetric matrix also. On entry, Z contains the orthogonal ma
- trix used to reduce the original matrix to tridiagonal form.
- N (input) INTEGER
- The dimension of the symmetric tridiagonal matrix.
- N >= 0.
- D (input/output) REAL array, dimension (N)
- On entry, the diagonal elements of the tridiagonal
- matrix. On exit, if INFO = 0, the eigenvalues in ascending or
- der.
- E (input/output) REAL array, dimension (N-1)
- On entry, the subdiagonal elements of the tridiag
- onal matrix. On exit, E has been destroyed.
- Z (input/output) REAL array, dimension (LDZ,N)
- On entry, if COMPZ = 'V', then Z contains the or
- thogonal matrix used in the reduction to tridiagonal form. On
- exit, if INFO = 0, then if COMPZ = 'V', Z contains the orthonor
- mal 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.
- LDZ (input) INTEGER
- The leading dimension of the array Z. LDZ >= 1.
- If eigenvectors are desired, then LDZ >= max(1,N).
- WORK (workspace/output) REAL array,
- dimension (LWORK) On exit, if INFO = 0, WORK(1)
- returns the optimal LWORK.
- LWORK (input) INTEGER
- The dimension of the array WORK. If COMPZ = 'N'
- or N <= 1 then LWORK must be at least 1. If COMPZ = 'V' and N >
- 1 then LWORK must be at least ( 1 + 3*N + 2*N*lg N + 3*N**2 ),
- where lg( N ) = smallest integer k such that 2**k >= N. If COMPZ
- = 'I' and N > 1 then LWORK must be at least ( 1 + 4*N + N**2 ).
- If LWORK = -1, then a workspace query is assumed;
- the routine only calculates the optimal size of the WORK array,
- returns this value as the first entry of the WORK array, and no
- error message related to LWORK is issued by XERBLA.
- IWORK (workspace/output) INTEGER array, dimension (LI
- WORK)
- On exit, if INFO = 0, IWORK(1) returns the optimal
- LIWORK.
- LIWORK (input) INTEGER
- The dimension of the array IWORK. If COMPZ = 'N'
- or N <= 1 then LIWORK must be at least 1. If COMPZ = 'V' and N >
- 1 then LIWORK must be at least ( 6 + 6*N + 5*N*lg N ). If COMPZ
- = 'I' and N > 1 then LIWORK must be at least ( 3 + 5*N ).
- If LIWORK = -1, then a workspace query is assumed;
- the routine only calculates the optimal size of the IWORK array,
- returns this value as the first entry of the IWORK array, and no
- error message related to LIWORK is issued by XERBLA.
- INFO (output) INTEGER
- = 0: successful exit.
< 0: if INFO = -i, the i-th argument had an ille
- gal value.
> 0: The algorithm failed to compute an eigenval
- ue while working on the submatrix lying in rows and columns IN
- FO/(N+1) through mod(INFO,N+1).
FURTHER DETAILS
- Based on contributions by
- Jeff Rutter, Computer Science Division, University of
- California
at Berkeley, USA
- Modified by Francoise Tisseur, University of Tennessee.
- LAPACK version 3.0 15 June 2000