next up previous contents index
Next: Computational Routines for the Up: Computational Routines Previous: Computational Routines for the   Contents   Index


Computational Routines for the Generalized Nonsymmetric Eigenproblem

LA_GGHRD
Real and complex versions.


SUBROUTINE LA_GGHRD( COMPQ, COMPZ, & 

N, ILO, IHI, A, LDA, B, LDB, Q, LDQ, Z, &
LDZ, INFO )
CHARACTER(LEN=1), INTENT(IN) :: &
COMPQ, COMPZ
INTEGER, INTENT(IN) :: IHI, ILO, LDA, &
LDB, LDQ, LDZ, N
INTEGER, INTENT(OUT) :: INFO
type(wp), INTENT(INOUT) :: A(LDA,*), &
B(LDB,*), Q(LDQ,*), Z(LDZ,*)
where
type ::= REAL $\mid$ COMPLEX
wp ::= KIND(1.0) $\mid$ KIND(1.0D0)


LA_GGHRD reduces a pair of real / complex matrices $( A, B )$ to generalized upper Hessenberg form using orthogonal / unitary transformations.
References: See  [1] and [9,20].
-----------------------------------

LA_GGBAL
Real and complex versions.


SUBROUTINE LA_GGBAL( JOB, N, A, LDA, B, & 

LDB, ILO, IHI, LSCALE, RSCALE, WORK, &
INFO )
CHARACTER(LEN=1), INTENT(IN) :: JOB
INTEGER, INTENT(IN) :: LDA, LDB, N
INTEGER, INTENT(OUT) :: IHI, ILO, INFO
REAL(wp), INTENT(OUT) :: LSCALE(*), &
RSCALE(*), WORK(*)
type(wp), INTENT(INOUT) :: A(LDA,*), B(LDB,*)
where
type ::= REAL $\mid$ COMPLEX
wp ::= KIND(1.0) $\mid$ KIND(1.0D0)


LA_GGBAL balances a pair of general real / complex matrices $( A, B )$.
References: See  [1] and [9,20,42].
-----------------------------------

LA_GGBAK
Real and complex versions.


SUBROUTINE LA_GGBAK( JOB, SIDE, N, ILO, & 

IHI, LSCALE, RSCALE, M, V, LDV, INFO )
CHARACTER(LEN=1), INTENT(IN) :: JOB, &
SIDE
INTEGER, INTENT(IN) :: IHI, ILO, LDV, M, N
INTEGER, INTENT(OUT) :: INFO
REAL(wp), INTENT(IN) :: LSCALE(*), &
RSCALE(*)
type(wp), INTENT(INOUT) :: V(LDV,*)
where
type ::= REAL $\mid$ COMPLEX
wp ::= KIND(1.0) $\mid$ KIND(1.0D0)


LA_GGBAK forms the right or left eigenvectors of a real / complex generalized eigenvalue problem $A x = \lambda B x$, by backward transformation on the computed eigenvectors of the balanced pair of matrices output by LA_GGBAL.
References: See  [1] and [9,20,42].
-----------------------------------

LA_HGEQZ
Real version.


SUBROUTINE LA_HGEQZ( JOB, COMPQ, & 

COMPZ, N, ILO, IHI, A, LDA, B, LDB, &
ALPHAR, ALPHAI, BETA, Q, LDQ, Z, LDZ, &
WORK, LWORK, INFO )
CHARACTER(LEN=1), INTENT(IN) :: COMPQ, &
COMPZ, JOB
INTEGER, INTENT(IN) :: IHI, ILO, LDA, LDB, &
LDQ, LDZ, LWORK, N
INTEGER, INTENT(OUT) :: INFO
REAL(wp), INTENT(INOUT) :: A(LDA,*), &
B(LDB,*), Q(LDQ,*), Z(LDZ,*)
REAL(wp), INTENT(OUT) :: ALPHAR(*), &
ALPHAI(*), BETA(*), WORK(LWORK)
where
wp ::= KIND(1.0) $\mid$ KIND(1.0D0)


Complex version.


 SUBROUTINE LA_HGEQZ( JOB, COMPQ, & 

COMPZ, N, ILO, IHI, A, LDA, B, LDB, &
ALPHA, BETA, Q, LDQ, Z, LDZ, WORK, &
LWORK, RWORK, INFO )
CHARACTER(LEN=1), INTENT(IN) :: COMPQ, &
COMPZ, JOB
INTEGER, INTENT(IN) :: IHI, ILO, LDA, LDB, &
LDQ, LDZ, LWORK, N
INTEGER, INTENT(OUT) :: INFO
REAL(wp), INTENT(OUT) :: RWORK( * )
COMPLEX(wp), INTENT(INOUT) :: A(LDA,*), &
B(LDB,*), Q(LDQ,*), Z(LDZ,*)
COMPLEX(wp), INTENT(OUT) :: ALPHA(*), &
BETA(*), WORK(LWORK)
where
wp ::= KIND(1.0) $\mid$ KIND(1.0D0)


LA_HGEQZ implements a single-shift version of the $QZ$ method for finding the generalized eigenvalues $w_i=\alpha_i/\beta_i$ of the equation $ det( A - w_i B ) = 0 $
References: See  [1] and [9,20,32].
-----------------------------------

LA_TGEVC
Real version.


SUBROUTINE LA_TGEVC( SIDE, HOWMNY, & 

SELECT, N, A, LDA, B, LDB, VL, LDVL, &
VR, LDVR, MM, M, WORK, INFO )
CHARACTER(LEN=1), INTENT(IN) ::
HOWMNY, SIDE
INTEGER, INTENT(IN) :: LDA, LDB, LDVL,
LDVR, MM, N
INTEGER, INTENT(OUT) :: INFO, M
LOGICAL, INTENT(IN) :: SELECT(*)
REAL(wp), INTENT(IN) :: A(LDA,*), B(LDB,*)
REAL(wp), INTENT(INOUT) :: VL(LDVL,*), &
VR(LDVR,*)
REAL(wp), INTENT(OUT) :: WORK(*)
where
wp ::= KIND(1.0) $\mid$ KIND(1.0D0)


Complex version.


 SUBROUTINE LA_TGEVC( SIDE, HOWMNY, & 

SELECT, N, A, LDA, B, LDB, VL, LDVL, &
VR, LDVR, MM, M, WORK, RWORK, INFO )
CHARACTER(LEN=1), INTENT(IN) :: &
HOWMNY, SIDE
INTEGER, INTENT(IN) :: LDA, LDB, LDVL, &
LDVR, MM, N
INTEGER, INTENT(OUT) :: INFO, M
LOGICAL, INTENT(IN) :: SELECT(*)
REAL(wp), INTENT(OUT) :: RWORK(*)
COMPLEX(wp), INTENT(IN) :: A(LDA,*), &
B(LDB,*)
COMPLEX(wp), INTENT(INOUT) :: &
VL(LDVL,*), VR(LDVR,*)
COMPLEX(wp), INTENT(OUT) :: WORK(*)
where
wp ::= KIND(1.0) $\mid$ KIND(1.0D0)


LA_TGEVC computes some or all of the right and/or left generalized eigenvectors of a pair of real / complex upper triangular matrices $( A, B )$.
References: See  [1] and [9,20].
-----------------------------------

LA_TGEXC
Real version.


SUBROUTINE LA_TGEXC( WANTQ, WANTZ, & 

N, A, LDA, B, LDB, Q, LDQ, Z, LDZ, IFST, &
ILST, WORK, LWORK, INFO )
LOGICAL, INTENT(IN) :: WANTQ, WANTZ
INTEGER, INTENT(IN) :: LDA, LDB, LDQ, &
LDZ, LWORK, N
INTEGER, INTENT(INOUT) :: IFST, ILST
INTEGER, INTENT(OUT) :: INFO
REAL(wp), INTENT(INOUT) :: A(LDA,*), &
B(LDB,*), Q(LDQ,*), Z(LDZ,*)
REAL(wp), INTENT(OUT) :: WORK(LWORK)
where
wp ::= KIND(1.0) $\mid$ KIND(1.0D0)


Complex version.


 SUBROUTINE LA_TGEXC( WANTQ, WANTZ, & 

N, A, LDA, B, LDB, Q, LDQ, Z, LDZ, IFST, &
ILST, INFO )
LOGICAL, INTENT(IN) :: WANTQ, WANTZ
INTEGER, INTENT(IN) :: LDA, LDB, LDQ, &
LDZ, N
INTEGER, INTENT(INOUT) :: IFST, ILST
INTEGER, INTENT(OUT) :: INFO
COMPLEX(wp), INTENT(INOUT) :: A(LDA,*), &
B(LDB,*), Q(LDQ,*), Z(LDZ,*)
where
wp ::= KIND(1.0) $\mid$ KIND(1.0D0)


LA_TGEXC reorders the generalized Schur decomposition of a complex matrix pair $( A, B )$, using an orthogonal / unitary equivalence transformation $(A, B) := Q (A, B) Z^H$, so that the diagonal block of $( A, B )$ with row index IFST is moved to row ILST.
References: See [1] and [9,20,28].
-----------------------------------

LA_TGSYL
Real and complex versions.


SUBROUTINE LA_TGSYL( TRANS, IJOB, M, N, & 

A, LDA, B, LDB, C, LDC, D, LDD, E, LDE, &
F, LDF, SCALE, DIF, WORK, LWORK, &
IWORK, INFO )
CHARACTER, INTENT(IN) :: TRANS
INTEGER, INTENT(IN) :: IJOB, LDA, LDB, &
LDC, LDD, LDE, LDF, LWORK, M, N
INTEGER, INTENT(OUT) :: INFO, IWORK(*)
REAL(wp), INTENT(OUT) :: DIF, SCALE
type(wp), INTENT(IN) :: A(LDA,*), B(LDB,*), &
D(LDD,*), E(LDF,*)
type(wp), INTENT(INOUT) :: C(LDC,*), &
F(LDF,*)
type(wp), INTENT(OUT) :: WORK(LWORK)
where
type ::= REAL $\mid$ COMPLEX
wp ::= KIND(1.0) $\mid$ KIND(1.0D0)


LA_TGSYL solves the generalized Sylvester equation.
References: See  [1] and [9,20,26,24,27].
-----------------------------------

LA_TGSNA
Real and complex versions.


SUBROUTINE LA_TGSNA( JOB, HOWMNY, & 

SELECT, N, A, LDA, B, LDB, VL, LDVL, &
VR, LDVR, S, DIF, MM, M, WORK, &
LWORK, IWORK, INFO )
CHARACTER(LEN=1), INTENT(IN) :: &
HOWMNY, JOB
INTEGER, INTENT(IN) :: LDA, LDB, LDVL, &
LDVR, LWORK, MM, N
INTEGER, INTENT(OUT) :: INFO, M, IWORK(*)
LOGICAL, INTENT(IN) :: SELECT(*)
REAL(wp), INTENT(OUT) :: DIF(*), S(*)
type(wp), INTENT(IN) :: A(LDA,*), &
B(LDB,*), VL(LDVL,*), VR(LDVR,*)
type(wp), INTENT(OUT) :: WORK(LWORK)
where
type ::= REAL $\mid$ COMPLEX
wp ::= KIND(1.0) $\mid$ KIND(1.0D0)


LA_TGSNA estimates reciprocal condition numbers for specified eigenvalues and/or eigenvectors of a matrix pair $( A, B )$.
References: See  [1] and [9,20,25,28,26].
-----------------------------------

LA_TGSEN
Real version.


SUBROUTINE LA_TGSEN( IJOB, WANTQ, & 

WANTZ, SELECT, N, A, LDA, B, LDB, &
ALPHAR, ALPHAI, BETA, Q, LDQ, Z, LDZ, &
M, PL, PR, DIF, WORK, LWORK, IWORK, &
LIWORK, INFO )
LOGICAL, INTENT(IN) :: WANTQ, WANTZ
INTEGER, INTENT(IN) :: IJOB, LDA, LDB, &
LDQ, LDZ, LIWORK, LWORK, N
INTEGER, INTENT(OUT) :: INFO, M,&
IWORK(LIWORK)
REAL(wp), INTENT(OUT) :: PL, PR
LOGICAL, INTENT(IN) :: SELECT(*)
REAL(wp), INTENT(INOUT) :: A(LDA,*), &
B(LDB,*), Q(LDQ,*), Z(LDZ,*)
REAL(wp), INTENT(OUT) :: ALPHAI(*), &
ALPHAR(*), BETA(*), DIF(2), &
WORK(LWORK)
where
wp ::= KIND(1.0) $\mid$ KIND(1.0D0)


Complex version.


 SUBROUTINE LA_TGSEN( IJOB, WANTQ, & 

WANTZ, SELECT, N, A, LDA, B, LDB, &
ALPHA, BETA, Q, LDQ, Z, LDZ, &
M, PL, PR, DIF, WORK, LWORK, IWORK, &
LIWORK, INFO )
LOGICAL, INTENT(IN) :: WANTQ, WANTZ
INTEGER, INTENT(IN) :: IJOB, LDA, LDB, &
LDQ, LDZ, LIWORK, LWORK, N
INTEGER, INTENT(OUT) :: INFO, M, &
IWORK(LIWORK)
REAL(wp), INTENT(OUT) :: PL, PR
LOGICAL, INTENT(IN) :: SELECT(*)
REAL(wp), INTENT(OUT) :: DIF(2)
COMPLEX(wp), INTENT(INOUT) :: A(LDA,*), &
B(LDB,*), Q(LDQ,*), Z(LDZ,*)
COMPLEX(wp), INTENT(OUT) :: ALPHA(*), &
BETA(*), WORK(LWORK)
where
wp ::= KIND(1.0) $\mid$ KIND(1.0D0)


LA_TGSEN reorders the generalized Schur decomposition of a real / complex matrix pair $( A, B )$ (in terms of an orthogonal / unitary equivalence transformation $Q^H (A, B) Z)$, so that a selected cluster of eigenvalues appears in the leading diagonal blocks of the pair $( A, B )$.
References: See  [1] and [9,20,28,25,26].
-----------------------------------


next up previous contents index
Next: Computational Routines for the Up: Computational Routines Previous: Computational Routines for the   Contents   Index
Susan Blackford 2001-08-19