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.