public interface trevc3
TREVC3 computes some or all of the right and/or left eigenvectors of
a complex upper triangular matrix T.
Matrices of this type are produced by the Schur factorization of
a complex general matrix: A = QTQH, as computed by CHSEQR.
The right eigenvector x and the left eigenvector y of T corresponding
to an eigenvalue w are defined by:
Tx = wx, (yH)T = w(yH)
where yH denotes the conjugate transpose of the vector y.
The eigenvalues are not input to this routine, but are read directly
from the diagonal of T.
This routine returns the matrices X and/or Y of right and left
eigenvectors of T, or the products QX and/or QY, where Q is an
input matrix. If Q is the unitary factor that reduces a matrix A to
Schur form T, then QX and QY are the matrices of right and left
eigenvectors of A.
This uses a Level 3 BLAS version of the back transformation.
Subroutines
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
character(len=1),
|
intent(in) |
|
|
:: |
side |
|
|
character(len=1),
|
intent(in) |
|
|
:: |
howmny |
|
|
logical(kind=lk),
|
intent(in) |
|
|
:: |
select(*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
n |
|
|
complex(kind=sp),
|
intent(inout) |
|
|
:: |
t(ldt,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldt |
|
|
complex(kind=sp),
|
intent(inout) |
|
|
:: |
vl(ldvl,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldvl |
|
|
complex(kind=sp),
|
intent(inout) |
|
|
:: |
vr(ldvr,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldvr |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
mm |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
m |
|
|
complex(kind=sp),
|
intent(out) |
|
|
:: |
work(*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
lwork |
|
|
real(kind=sp),
|
intent(out) |
|
|
:: |
rwork(*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
lrwork |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
info |
|
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
character(len=1),
|
intent(in) |
|
|
:: |
side |
|
|
character(len=1),
|
intent(in) |
|
|
:: |
howmny |
|
|
logical(kind=lk),
|
intent(inout) |
|
|
:: |
select(*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
n |
|
|
real(kind=dp),
|
intent(in) |
|
|
:: |
t(ldt,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldt |
|
|
real(kind=dp),
|
intent(inout) |
|
|
:: |
vl(ldvl,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldvl |
|
|
real(kind=dp),
|
intent(inout) |
|
|
:: |
vr(ldvr,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldvr |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
mm |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
m |
|
|
real(kind=dp),
|
intent(out) |
|
|
:: |
work(*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
lwork |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
info |
|
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
character(len=1),
|
intent(in) |
|
|
:: |
side |
|
|
character(len=1),
|
intent(in) |
|
|
:: |
howmny |
|
|
logical(kind=lk),
|
intent(inout) |
|
|
:: |
select(*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
n |
|
|
real(kind=sp),
|
intent(in) |
|
|
:: |
t(ldt,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldt |
|
|
real(kind=sp),
|
intent(inout) |
|
|
:: |
vl(ldvl,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldvl |
|
|
real(kind=sp),
|
intent(inout) |
|
|
:: |
vr(ldvr,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldvr |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
mm |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
m |
|
|
real(kind=sp),
|
intent(out) |
|
|
:: |
work(*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
lwork |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
info |
|
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
character(len=1),
|
intent(in) |
|
|
:: |
side |
|
|
character(len=1),
|
intent(in) |
|
|
:: |
howmny |
|
|
logical(kind=lk),
|
intent(in) |
|
|
:: |
select(*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
n |
|
|
complex(kind=dp),
|
intent(inout) |
|
|
:: |
t(ldt,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldt |
|
|
complex(kind=dp),
|
intent(inout) |
|
|
:: |
vl(ldvl,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldvl |
|
|
complex(kind=dp),
|
intent(inout) |
|
|
:: |
vr(ldvr,*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
ldvr |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
mm |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
m |
|
|
complex(kind=dp),
|
intent(out) |
|
|
:: |
work(*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
lwork |
|
|
real(kind=dp),
|
intent(out) |
|
|
:: |
rwork(*) |
|
|
integer(kind=ilp),
|
intent(in) |
|
|
:: |
lrwork |
|
|
integer(kind=ilp),
|
intent(out) |
|
|
:: |
info |
|
Module Procedures