!----------------------------------------------------------------- ! ! Purpose ! ======= ! ! LA_SBGV | LA_HBSV computes all the eigenvalues, and optionally, ! the eigenvectors of a real generalized symmetric-definite banded ! eigenproblem, of the form A*x=(lambda)*B*x. Here A and B are ! assumed to be symmetric and banded, and B is also positive definite. ! ! ========= ! ! SUBROUTINE LA_SBGV / LA_HBGV( AB, BB, W, UPLO, Z, INFO ) ! (), INTENT(INOUT) :: AB(:,:), BB(:,:) ! REAL(), INTENT(OUT) :: W(:) ! CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: UPLO ! (), INTENT(OUT), OPTIONAL :: Z(:,:) ! INTEGER, INTENT(OUT), OPTIONAL :: INFO ! where ! ::= REAL | COMPLEX ! ::= KIND(1.0) | KIND(1.0D0) ! ! Arguments ! ========= ! ! AB (input/output) REAL / COMPLEX array, shape (:,:), ! SIZE(AB,1) == ka+1, SIZE(AB,2) == n. ! On entry, the upper or lower triangle of the symmetric band ! matrix A, stored in the first ka+1 rows of the array. The ! j-th column of A is stored in the j-th column of the array AB ! as follows: ! if UPLO = 'U', AB(ka+1+i-j,j) = A(i,j) for max(1,j-ka)<=i<=j; ! if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+ka). ! On exit, the contents of AB are destroyed. ! ! BB (input/output) REAL / COMPLEX array, shape (:,:), ! SIZE(BB,1) == kb+1, SIZE(BB,2) == n. ! On entry, the upper or lower triangle of the symmetric band ! matrix B, stored in the first kb+1 rows of the array. The ! j-th column of B is stored in the j-th column of the array BB ! as follows: ! if UPLO = 'U', BB(kb+1+i-j,j) = B(i,j) for max(1,j-kb)<=i<=j; ! if UPLO = 'L', BB(1+i-j,j) = B(i,j) for j<=i<=min(n,j+kb). ! On exit, the factor S from the split Cholesky factorization ! B = S**T*S. ! ! W (output) REAL array, hape (:), SIZE(W) == n. ! If INFO = 0, the eigenvalues in ascending order. ! ! UPLO Optional (input) CHARACTER*1 ! = 'U': Upper triangles of A and B are stored; ! = 'L': Lower triangles of A and B are stored. ! If UPLO is not present UPLU = 'U' is assumed. ! ! Z Optional (output) REAL / COMPLEX array, shape (:,:), ! SIZE(Z,1) == SIZE(Z,2) == n. ! If INFO = 0, Z contains the matrix Z of eigenvectors, ! with the i-th column of Z holding the eigenvector ! associated with W(i). The eigenvectors are normalized ! so that Z**T*B*Z = I. ! ! INFO Optional (output) INTEGER ! = 0: successful exit ! < 0: if INFO = -i, the i-th argument had an illegal value ! > 0: if INFO = i, and i is: ! <= n: the algorithm failed to converge: ! i off-diagonal elements of an intermediate ! tridiagonal form did not converge to zero; ! > n: if INFO = N + i, for 1 <= i <= N, then SPBSTF ! returned INFO = i: B is not positive definite. ! The factorization of B could not be completed and ! no eigenvalues or eigenvectors were computed. ! If INFO is not present and an error occurs, then the program is ! terminated with an error message. !------------------------------------------------------------------- .