Purpose
=======
LA_SYEV and LA_SYEVD compute all eigenvalues and, optionally, all
eigenvectors of a real symmetric matrix A.
LA_HEEV and LA_HEEVD compute all eigenvalues and, optionally, all
eigenvectors of a complex Hermitian matrix A.
LA_SYEVD and LA_HEEVD use a divide and conquer algorithm. If
eigenvectors are desired, they can be much faster than LA_SYEV and
LA_HEEV for large matrices but use more workspace.
=========
SUBROUTINE LA_SYEV / LA_HEEV / LA_SYEVD / LA_HEEVD( A, W, &
JOBZ=jobz, UPLO=uplo, INFO=info )
(), INTENT(INOUT) :: A(:,:)
REAL(), INTENT(OUT) :: W(:)
CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: JOBZ, UPLO
INTEGER, INTENT(OUT), OPTIONAL :: INFO
where
::= REAL | COMPLEX
::= KIND(1.0) | KIND(1.0D0)
Arguments
=========
A (input/output) REAL or COMPLEX square array, shape (:,:).
On entry, the matrix A.
If UPLO = 'U', the upper triangular part of A contains the upper
triangular part of the matrix A. If UPLO = 'L', the lower
triangular part of A contains the lower triangular part of the
matrix A.
On exit:
If JOBZ = 'V', then the columns of A contain the orthonormal
eigenvectors of the matrix A in the order of the eigenvalues.
If JOBZ = 'N', then the upper triangle (if UPLO = 'U') or the
lower triangle (if UPLO = 'L') of A, including the diagonal, is
destroyed.
W (output) REAL array, shape (:) with size(W) = size(A,1).
The eigenvalues in ascending order.
JOBZ Optional (input) CHARACTER(LEN=1).
= 'N': Computes eigenvalues only;
= 'V': Computes eigenvalues and eigenvectors.
Default value: 'N'.
UPLO Optional (input) CHARACTER(LEN=1).
= 'U': Upper triangle of A is stored;
= 'L': Lower triangle of A is stored.
Default value: 'U'.
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 off-diagonal elements of an
intermediate tridiagonal form did not converge to zero.
If INFO is not present and an error occurs, then the program is
terminated with an error message.