
 
 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(<wp>), INTENT(INOUT) :: D(:), E(:)
         REAL(<wp>), INTENT(OUT), OPTIONAL :: Z(:,:)
         INTEGER, INTENT(OUT), OPTIONAL :: INFO
      where
         <wp> ::= 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.

