Purpose
=======
LA_STEV and LA_STEVD compute all eigenvalues and, optionally, all
eigenvectors of a real symmetric tridiagonal matrix A.
LA_STEVD uses a divide and conquer algorithm. If eigenvectors are
desired, they can be much faster than LA_STEV for large matrices but
uses more workspace.
=========
SUBROUTINE LA_STEV / LA_STEVD( D, E, Z=z, INFO=info )
REAL(), INTENT(INOUT) :: D(:), E(:)
REAL(), INTENT(OUT), OPTIONAL :: Z(:,:)
INTEGER, INTENT(OUT), OPTIONAL :: INFO
where
::= KIND(1.0) | KIND(1.0D0)
Arguments
=========
D (input/output) REAL array shape (:) with size(D) = n, where n is
the order of A.
On entry, the diagonal elements of the matrix A.
On exit, the eigenvalues in ascending order.
E (input/output) REAL array, shape (:) with size(E) = n.
On entry, the n - 1 subdiagonal elements of A in E(1) to E(n-1).
E(n) need not be set but is used by the routine.
On exit, the contents of E are destroyed.
Z Optional (output) REAL square array, shape(:,:) with size(Z,1)=n.
The columns of Z contain the orthonormal eigenvectors of A in the
order of the eigenvalues.
INFO Optional (output) INTEGER.
= 0: successful exit.
< 0: if INFO = -i, the i-th argument had an illegal value.
> 0: if INFO = i, then i elements of E did not converge to zero.
If INFO is not present and an error occurs, then the program is
terminated with an error message.