!----------------------------------------------------------------- ! ! Purpose ! ======= ! ! LA_GEEV computes for an N-by-N real nonsymmetric matrix A, the ! eigenvalues and, optionally, the left and/or right eigenvectors. ! ! The right eigenvector v(j) of A satisfies ! A * v(j) = lambda(j) * v(j) ! where lambda(j) is its eigenvalue. ! The left eigenvector u(j) of A satisfies ! u(j)**H * A = lambda(j) * u(j)**H ! where u(j)**H denotes the conjugate transpose of u(j). ! ! The computed eigenvectors are normalized to have Euclidean norm ! equal to 1 and largest component real. ! ! ======= ! ! SUBROUTINE LA_GEEV( A, , VL, VR, INFO ) ! (), INTENT(INOUT) :: A(:,:) ! (), INTENT(OUT) :: ! (), INTENT(OUT), OPTIONAL :: VL(:,:), VR(:,:) ! INTEGER, INTENT(OUT), OPTIONAL :: INFO ! where ! ::= REAL | COMPLEX ! ::= KIND(1.0) | KIND(1.0D0) ! ::= WR, WI | W ! ::= WR(:), WI(:) | W(:) ! ! Arguments ! ========= ! ! A (input/output) REAL | COMPLEX array, shape (:,:), ! SIZE(A,1) == SIZE(A,2) == n. ! On entry, the n-by-n matrix A. ! On exit, A has been overwritten. ! ! WR, WI Only real case, (output) REAL arrays, shape (:), ! SIZE(WR) == SIZE(WI) == n (real and imaginary parts). ! W Only complex case, (output) COMPLEX array, shape (:), ! SIZE(W) == n. ! WR, WI | W contain(s) the computed eigenvalues (WR and ! WI real and imaginary parts). Complex conjugate pairs ! of eigenvalues appear consecutively with the eigenvalue ! having the positive imaginary part first. ! ! VL Optional (output) REAL | COMPLEX array, shape (:,:), ! SIZE(VL,1) == SIZE(VL,2) == n. ! The left eigenvectors u(j) are stored one after another ! in the columns of VL, in the same order as their ! eigenvalues. u(j) = VL(:,j), the j-th column of VL. ! ! VR Optional (output) REAL | COMPLEX array, shape (:,:), ! SIZE(VL,1) == SIZE(VL,2) == n. ! The right eigenvectors v(j) are stored one after another ! in the columns of VR, in the same order as their ! eigenvalues. v(j) = VR(:,j), the j-th column of VR. ! ! INFO (output) INTEGER ! = 0: successful exit ! < 0: if INFO = -i, the i-th argument had an illegal value. ! > 0: if INFO = i, the QR algorithm failed to compute all the ! eigenvalues, and no eigenvectors have been computed; ! elements and i+1:N of W contain eigenvalues which have ! converged. ! If INFO is not present and an error occurs, then the program is ! terminated with an error message. !----------------------------------------------------------------------- .