Purpose
=======
LA_GEEV computes for a real or complex square matrix A, the
eigenvalues and, optionally, the left and/or right eigenvectors. A
right eigenvector v(j) of A satisfies
A * v(j) = lambda(j) * v(j)
where lambda(j) is its eigenvalue. A left eigenvector u(j) of A
satisffies
u(j)^H * A = lambda(j) * u(j)^H
where u(j)^H denotes the conjugate-transpose of u(j).
=========
SUBROUTINE LA_GEEV( A, , VL=vl, VR=vr, INFO=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 or COMPLEX square array, shape (:,:).
On entry, the matrix A.
On exit, the contents of A are destroyed.
(output) REAL or COMPLEX array, shape (:) with size(w) =
size(A,1).
The computed eigenvalues.
::= WR(:), WI(:) | W(:),
where
WR(:), WI(:) are of REAL type (for the real and imaginary
parts) and W(:) is of COMPLEX type.
Note: If A is real, then a complex-conjugate pair appear
consecutively, with the eigenvalue having the positive
imaginary part appearing first.
VL Optional (output) REAL or COMPLEX square array, shape (:,:)
with size(VL,1) = size(A,1).
The left eigenvectors u(j) are stored in the columns of VL in
the order of their eigenvalues. Each eigenvector is scaled so
that the Euclidean norm is 1 and the largest component is real.
Note: If A is real then complex eigenvectors, like their
eigenvalues, occur in complex conjugate pairs. The real and
imaginary parts of the first eigenvector of the pair are
stored in VL(:,j) and VL(:,j+1). Thus a complex conjugate pair
is given by
u(j) = VL(:,j) + i*VL(:,j+1), u(j+1) = VL(:,j) - i*VL(:,j+1)
VR Optional (output) REAL or COMPLEX square array, shape (:,:)
with size(VR,1) = size(A,1).
The right eigenvectors v(j) are stored in the columns of VR in
the order of their eigenvalues.
Each eigenvector is scaled so that the Euclidean norm is 1 and
the largest component is real.
Note: If A is real then complex eigenvectors, like their
eigenvalues, occur in complex conjugate pairs. The real and
imaginary parts of the first eigenvector of the pair are stored
in VR(:,j) and VR(:,j+1). Thus a complex conjugate pair is
given by
v(j) = VR(:,j) + i*VR(:,j+1), v(j+1) = VR(:,j) - i*VR(:,j+1)
INFO Optional (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 were computed. Elements
i+1 : n of contain eigenvalues which have converged.
n is the order of A
If INFO is not present and an error occurs, then the program
is terminated with an error message.