Man page - ggevx(3)
Packages contains this manual
- hptrd(3)
- potri(3)
- xerbla_array(3)
- ggsvd_driver_grp(3)
- hfrk(3)
- getsqr_comp_grp(3)
- laed6(3)
- gtrfs(3)
- lasdq(3)
- gglse(3)
- la_xisnan_la_isnan(3)
- unmr2(3)
- hetrs_aa(3)
- tpttr(3)
- gerz_comp_grp(3)
- potrf(3)
- hegv_driver(3)
- laqps(3)
- ggqr_comp_grp(3)
- ilalc(3)
- ung2r(3)
- heevd(3)
- pstf2(3)
- lacn2(3)
- ptrfs(3)
- ungrq(3)
- gelqf(3)
- ppsv_comp(3)
- blas2_full(3)
- gemlqt(3)
- unml2(3)
- tplqt(3)
- tpcon(3)
- getf2(3)
- ggbak(3)
- bdsvd_driver(3)
- lamch(3)
- gelq(3)
- gebal(3)
- laqr1(3)
- ptsvx(3)
- lahr2(3)
- larscl2(3)
- geqrt(3)
- larfb(3)
- gtsv_comp(3)
- gesvd_aux(3)
- hbevx_2stage(3)
- hbgvx(3)
- tprfs(3)
- params_grp(3)
- lahef(3)
- laqr_group(3)
- unmqr(3)
- tgsy2(3)
- tfsv_comp(3)
- ggls_driver_grp(3)
- geev(3)
- latrd(3)
- unbdb4(3)
- bbcsd(3)
- lange(3)
- gelq_comp3(3)
- gttrs(3)
- lasy2(3)
- hetf2_rook(3)
- gtsv(3)
- lalsd(3)
- lanhb(3)
- laqhb(3)
- hgeqz(3)
- gesvj(3)
- gsvj0(3)
- ungtsqr_row(3)
- gelq_comp1(3)
- gemmtr(3)
- pbequ(3)
- heev_driver(3)
- unhr_col(3)
- syconvf_rook(3)
- getc2(3)
- syconv(3)
- norm_grp(3)
- larrc(3)
- laqr4(3)
- posv_comp(3)
- geev_driver_grp(3)
- heev_comp(3)
- pfsv(3)
- trevc3(3)
- gesv_driver_grp(3)
- reflector_aux_grp(3)
- langt(3)
- lacrt(3)
- latdf(3)
- hetrs_aa_2stage(3)
- lamc1(3)
- hpev_driver(3)
- hegvd(3)
- pptri(3)
- geqrt3(3)
- gelqt3(3)
- lasd5(3)
- laeda(3)
- geqr(3)
- lamtsqr(3)
- heev(3)
- hpev_comp(3)
- larfg(3)
- blas2_grp(3)
- hesv_rook(3)
- laexc(3)
- hetrd(3)
- geesx(3)
- ppsvx(3)
- blas_top(3)
- gtts2(3)
- la_herpvgrw(3)
- hpevx(3)
- ggevx(3)
- lahqr(3)
- gelq_comp_grp(3)
- hesv_comp_v3(3)
- tplqt2(3)
- hpev(3)
- hbtrd(3)
- getrs(3)
- hecon_3(3)
- lasrt(3)
- lanhe(3)
- gesv_comp(3)
- gbequ(3)
- hetrf_rk(3)
- laqr3(3)
- heev_comp_grp(3)
- ungtsqr(3)
- ppcon(3)
- ggrq_comp_grp(3)
- larmm(3)
- ieeeck(3)
- geqrf(3)
- solve_aux_grp(3)
- herfs(3)
- posvx(3)
- posvxx(3)
- gges3(3)
- hbgvd(3)
- lantb(3)
- lasd_comp_grp(3)
- hpgvx(3)
- lapy2(3)
- lauu2(3)
- copy(3)
- getsqrhrt(3)
- stev_comp_grp(3)
- laev2(3)
- larfb_gett(3)
- trti2(3)
- laqz4(3)
- hegv_driver_grp(3)
- la_porfsx_extended(3)
- laruv(3)
- ggsvd_comp_grp(3)
- dot(3)
- gehd2(3)
- lanhf(3)
- hetri_rook(3)
- pfsv_comp(3)
- gbtrf(3)
- hpgst(3)
- getri(3)
- trevc(3)
- unmrz(3)
- hsein(3)
- lsamen(3)
- lasd6(3)
- trtri(3)
- ggglm(3)
- las2(3)
- latrs(3)
- lapll(3)
- gemlq(3)
- geqpf_comp_grp(3)
- stemr(3)
- rotm(3)
- disna(3)
- ggrqf(3)
- pptrf(3)
- lasd0(3)
- lals0(3)
- laqz2(3)
- hbev_driver2(3)
- geswlq_comp_grp(3)
- laqr0(3)
- trttp(3)
- stedc(3)
- lasq4(3)
- geev_comp_grp(3)
- ungbr(3)
- lanv2(3)
- hpsv(3)
- pprfs(3)
- gehrd(3)
- ppsv(3)
- lagtm(3)
- hpgv(3)
- trsv_comp(3)
- larfx(3)
- gesv_driver(3)
- gerfsx(3)
- la_geamv(3)
- laed9(3)
- tpqrt2(3)
- uncsd(3)
- gecs_comp_grp(3)
- bdsqr(3)
- hegv_comp_grp(3)
- labad(3)
- geqp3(3)
- gesvdq(3)
- tfttp(3)
- laln2(3)
- uncsd2by1(3)
- blas2_like_grp(3)
- latbs(3)
- hbgst(3)
- larrv(3)
- ilaenv2stage(3)
- bdsvdx(3)
- hegs2(3)
- lasq_comp_grp(3)
- hpr2(3)
- laqhe(3)
- larra(3)
- gemqrt(3)
- hbmv(3)
- hpsv_driver(3)
- lacp2(3)
- lapmt(3)
- gecon(3)
- unbdb5(3)
- la_gerpvgrw(3)
- tgex2(3)
- laqhp(3)
- tftri(3)
- getrf2(3)
- porfs(3)
- lartg(3)
- lagts(3)
- ggev_comp_grp(3)
- lasd3(3)
- geqr_comp2(3)
- laqz_group(3)
- pftri(3)
- hetri2x(3)
- lahef_aa(3)
- svd_driver_grp(3)
- gbsv_driver(3)
- hesv_comp_aasen2(3)
- laqtr(3)
- lag2(3)
- la_porcond(3)
- hbev(3)
- pbtrf(3)
- lascl(3)
- larr_comp_grp(3)
- hecon(3)
- pttrs(3)
- lasd8(3)
- lsame(3)
- unm2l(3)
- potrs(3)
- tptrs(3)
- lartv(3)
- trtrs(3)
- gsvj1(3)
- sum1(3)
- larrj(3)
- gbmv(3)
- posv(3)
- gghd3(3)
- geev_top(3)
- geqr_comp_grp(3)
- laset(3)
- hesvxx(3)
- posv_comp_grp(3)
- lahef_rk(3)
- lasd1(3)
- tprfb(3)
- potf2(3)
- laein(3)
- lamc4(3)
- stevd(3)
- gtsv_driver(3)
- gesvd_comp_grp(3)
- la_constants(3)
- gesvx(3)
- hseqr(3)
- launhr_col_getrfnp2(3)
- trcon(3)
- larre(3)
- gelsy(3)
- ptsv(3)
- lacon(3)
- laed_comp_grp(3)
- hpsvx(3)
- gemm(3)
- poequ(3)
- laesy(3)
- lagtf(3)
- trrfs(3)
- ggev3(3)
- pbstf(3)
- poequb(3)
- heevr(3)
- lanhp(3)
- unbdb3(3)
- tgsyl(3)
- lamc5(3)
- geqr2p(3)
- ungqr(3)
- laqz3(3)
- imax1(3)
- gels_top(3)
- hesv(3)
- gelqt(3)
- pfsv_driver(3)
- stegr(3)
- gerqf(3)
- laisnan(3)
- ilatrans(3)
- gbsv_comp(3)
- pbrfs(3)
- lascl2(3)
- larz(3)
- la_hercond(3)
- tgexc(3)
- ggesx(3)
- unbdb6(3)
- ungl2(3)
- laed_comp2(3)
- rscl(3)
- hegv(3)
- gelst(3)
- gbtrs(3)
- pftrf(3)
- langb(3)
- lantr(3)
- laqgb(3)
- ggsvp3(3)
- bdsdc(3)
- ladiv(3)
- laqge(3)
- iparmq(3)
- ggbal(3)
- hb2st_kernels(3)
- lartgs(3)
- lartgp(3)
- rot(3)
- ppequ(3)
- laed3(3)
- her(3)
- hptri(3)
- stevx(3)
- upgtr(3)
- lar2v(3)
- hbev_2stage(3)
- gejsv(3)
- ppsv_driver(3)
- unm22(3)
- gesvxx(3)
- laqz0(3)
- unmtr(3)
- laed5(3)
- tptri(3)
- laed0(3)
- heev_driver2(3)
- hpcon(3)
- lasd4(3)
- hetrf_aa(3)
- geqr_comp3(3)
- rot_aux_grp(3)
- aux_grp(3)
- laebz(3)
- trsyl3(3)
- gges(3)
- gesdd(3)
- trexc(3)
- ung2l(3)
- gesv(3)
- laed4(3)
- md__r_e_a_d_m_e(3)
- blas3_like_grp(3)
- laed1(3)
- larcm(3)
- hbevx(3)
- hesv_driver_grp(3)
- hetrs(3)
- hbevd_2stage(3)
- blas1_grp(3)
- laic1(3)
- geql_comp_grp(3)
- heev_2stage(3)
- hpmv(3)
- pbtf2(3)
- hetrf_aa_2stage(3)
- hbgv(3)
- pptrs(3)
- lapmr(3)
- tpqr_comp_grp(3)
- larfy(3)
- gedmd(3)
- lasr(3)
- hetrd_2stage(3)
- gerfs(3)
- ungtr(3)
- porfsx(3)
- tpmv(3)
- lasd_comp2(3)
- unmbr(3)
- tbtrs(3)
- hetd2(3)
- trsv_comp_grp(3)
- lapy3(3)
- ptts2(3)
- unmhr(3)
- hbev_driver(3)
- lalsa(3)
- tbsv_comp(3)
- hesv_comp_v1(3)
- geql2(3)
- sterf(3)
- larrd(3)
- larft(3)
- lagv2(3)
- gttrf(3)
- tpqrt(3)
- la_lin_berr(3)
- rotg(3)
- solve_top(3)
- lacgv(3)
- larrf(3)
- tbmv(3)
- trsyl(3)
- geequ(3)
- upmtr(3)
- hpgv_driver(3)
- tbsv(3)
- hesvx(3)
- latrz(3)
- tfttr(3)
- gesv_comp_grp(3)
- xerbla_grp(3)
- tpsv(3)
- blas3_grp(3)
- gesvd_driver(3)
- geqr_comp1(3)
- ggev_driver_grp(3)
- la_gbamv(3)
- tpmlqt(3)
- trttf(3)
- larzb(3)
- unmr3(3)
- hecon_rook(3)
- stebz(3)
- lantp(3)
- laqz1(3)
- hesv_rk(3)
- tbcon(3)
- xerbla(3)
- posv_mixed(3)
- latps(3)
- hesv_aa_driver(3)
- gemqr(3)
- larrr(3)
- gebrd(3)
- tgsna(3)
- la_gercond(3)
- gbsv(3)
- hesv_comp_grp(3)
- gesv_mixed(3)
- gghrd(3)
- gbrfs(3)
- tpmqrt(3)
- lasq3(3)
- tpsv_comp(3)
- largv(3)
- gelsd(3)
- pftrs(3)
- asum(3)
- launhr_col_getrfnp(3)
- hptrf(3)
- lacpy(3)
- gesc2(3)
- lasda(3)
- second(3)
- hprfs(3)
- hpsv_comp(3)
- lamrg(3)
- pbsv_comp(3)
- hegv_2stage(3)
- gerq2(3)
- lasdt(3)
- abs1(3)
- hbevd(3)
- hbev_comp(3)
- trsv(3)
- la_porpvgrw(3)
- la_gbrpvgrw(3)
- hbgv_driver(3)
- tgsja(3)
- gebd2(3)
- geqr2(3)
- unm2r(3)
- unmql(3)
- la_gbrfsx_extended(3)
- gelq_comp2(3)
- iparam2stage(3)
- ger(3)
- larf(3)
- ilaprec(3)
- labrd(3)
- unbdb1(3)
- unmlq(3)
- geequb(3)
- la_herfsx_extended(3)
- unbdb2(3)
- lapack_top(3)
- ptsv_driver(3)
- hetrs2(3)
- geqr_comp4(3)
- pbsv(3)
- posv_driver(3)
- steqr(3)
- gels(3)
- lar1v(3)
- hemv(3)
- la_transtype(3)
- hesv_aa(3)
- lacrm(3)
- stevr(3)
- hetf2_rk(3)
- blas2_banded(3)
- stein(3)
- unmrq(3)
- larrk(3)
- hetri2(3)
- hesv_aa_2stage(3)
- pttrf(3)
- gelss(3)
- pbsv_driver(3)
- lasq5(3)
- heevx_2stage(3)
- hetri(3)
- lasd2(3)
- laed2(3)
- pbcon(3)
- ptcon(3)
- laed7(3)
- gels_aux_grp(3)
- hpgvd(3)
- hetf2(3)
- tzrzf(3)
- hpr(3)
- unitary_top(3)
- latsqr(3)
- ungql(3)
- her2(3)
- hetri_3x(3)
- hetrd_hb2st(3)
- tgsen(3)
- ggsvd3(3)
- lasq6(3)
- set_grp(3)
- larfgp(3)
- gels_driver_grp(3)
- pbtrs(3)
- lamswlq(3)
- lanht(3)
- gbsvxx(3)
- tgevc(3)
- ilaenv(3)
- swap(3)
- lae2(3)
- iladiag(3)
- lasq2(3)
- la_heamv(3)
- blas_like_top(3)
- la_gerfsx_extended(3)
- hegst(3)
- tfsm(3)
- gesvd(3)
- ungr2(3)
- ggev(3)
- aux_top(3)
- blas2_packed(3)
- geqlf(3)
- hetrs_rook(3)
- gelq2(3)
- geqrfp(3)
- gbequb(3)
- stev(3)
- lauum(3)
- potrf2(3)
- lamc3(3)
- gbrfsx(3)
- gerq_comp_grp(3)
- pocon(3)
- tbrfs(3)
- heswapr(3)
- lamc2(3)
- hpevd(3)
- hesv_comp_aasen(3)
- scalar_grp(3)
- gemv(3)
- lasv2(3)
- lanhs(3)
- svd_top(3)
- gbsvx(3)
- gesvdx(3)
- tplq_comp_grp(3)
- hesv_driver(3)
- hesv_comp_v2(3)
- trsen(3)
- syconvf(3)
- lasd7(3)
- gbcon(3)
- unbdb(3)
- heev_driver_grp(3)
- ggqrf(3)
- heevx(3)
- gtsvx(3)
- lahef_rook(3)
- hetrf_rook(3)
- hetrf(3)
- trsna(3)
- gebak(3)
- larnv(3)
- ptsv_comp(3)
- laswlq(3)
- lags2(3)
- laed8(3)
- laswp(3)
- hptrs(3)
- unglq(3)
- la_wwaddw(3)
- getrf(3)
- gees(3)
- gbtf2(3)
- hegvx(3)
- latrs3(3)
- roundup_lwork(3)
- unghr(3)
- iamax(3)
- larzt(3)
- pteqr(3)
- ilaver(3)
- trmv(3)
- la_gbrcond(3)
- blas0_like_grp(3)
- nrm2(3)
- heev_top(3)
- gtcon(3)
- heevr_2stage(3)
- pstrf(3)
- rot_comp(3)
- laqr5(3)
- heevd_2stage(3)
- getsls(3)
- hetrd_he2hb(3)
- heequb(3)
- laqp2(3)
- axpy(3)
- blast_aux(3)
- rotmg(3)
- pbsvx(3)
- ilauplo(3)
- herfsx(3)
- laqr2(3)
- blas1_like_grp(3)
- lassq(3)
- larrb(3)
- stev_driver(3)
- geevx(3)
- tpttf(3)
- scal(3)
- laneg(3)
- posv_driver_grp(3)
- lasq1(3)
- hetrs_3(3)
- geqrt2(3)
- gbbrd(3)
- ilalr(3)
- hetri_3(3)
apt-get install liblapack-doc
Manual
ggevx
NAMESYNOPSIS
Functions
Detailed Description
Function Documentation
subroutine cggevx (character balanc, character jobvl, character jobvr,character sense, integer n, complex, dimension( lda, * ) a, integerlda, complex, dimension( ldb, * ) b, integer ldb, complex, dimension( *) alpha, complex, dimension( * ) beta, complex, dimension( ldvl, * )vl, integer ldvl, complex, dimension( ldvr, * ) vr, integer ldvr,integer ilo, integer ihi, real, dimension( * ) lscale, real, dimension(* ) rscale, real abnrm, real bbnrm, real, dimension( * ) rconde, real,dimension( * ) rcondv, complex, dimension( * ) work, integer lwork,real, dimension( * ) rwork, integer, dimension( * ) iwork, logical,dimension( * ) bwork, integer info)
subroutine dggevx (character balanc, character jobvl, character jobvr,character sense, integer n, double precision, dimension( lda, * ) a,integer lda, double precision, dimension( ldb, * ) b, integer ldb,double precision, dimension( * ) alphar, double precision, dimension( *) alphai, double precision, dimension( * ) beta, double precision,dimension( ldvl, * ) vl, integer ldvl, double precision, dimension(ldvr, * ) vr, integer ldvr, integer ilo, integer ihi, double precision,dimension( * ) lscale, double precision, dimension( * ) rscale, doubleprecision abnrm, double precision bbnrm, double precision, dimension( *) rconde, double precision, dimension( * ) rcondv, double precision,dimension( * ) work, integer lwork, integer, dimension( * ) iwork,logical, dimension( * ) bwork, integer info)
subroutine sggevx (character balanc, character jobvl, character jobvr,character sense, integer n, real, dimension( lda, * ) a, integer lda,real, dimension( ldb, * ) b, integer ldb, real, dimension( * ) alphar,real, dimension( * ) alphai, real, dimension( * ) beta, real,dimension( ldvl, * ) vl, integer ldvl, real, dimension( ldvr, * ) vr,integer ldvr, integer ilo, integer ihi, real, dimension( * ) lscale,real, dimension( * ) rscale, real abnrm, real bbnrm, real, dimension( *) rconde, real, dimension( * ) rcondv, real, dimension( * ) work,integer lwork, integer, dimension( * ) iwork, logical, dimension( * )bwork, integer info)
subroutine zggevx (character balanc, character jobvl, character jobvr,character sense, integer n, complex*16, dimension( lda, * ) a, integerlda, complex*16, dimension( ldb, * ) b, integer ldb, complex*16,dimension( * ) alpha, complex*16, dimension( * ) beta, complex*16,dimension( ldvl, * ) vl, integer ldvl, complex*16, dimension( ldvr, * )vr, integer ldvr, integer ilo, integer ihi, double precision,dimension( * ) lscale, double precision, dimension( * ) rscale, doubleprecision abnrm, double precision bbnrm, double precision, dimension( *) rconde, double precision, dimension( * ) rcondv, complex*16,dimension( * ) work, integer lwork, double precision, dimension( * )rwork, integer, dimension( * ) iwork, logical, dimension( * ) bwork,integer info)
Author
NAME
ggevx - ggevx: eig, expert
SYNOPSIS
Functions
subroutine
cggevx
(balanc, jobvl, jobvr, sense, n, a, lda, b,
ldb, alpha, beta, vl, ldvl, vr, ldvr, ilo, ihi, lscale,
rscale, abnrm, bbnrm, rconde, rcondv, work, lwork, rwork,
iwork, bwork, info)
CGGEVX computes the eigenvalues and, optionally, the left
and/or right eigenvectors for GE matrices
subroutine
dggevx
(balanc, jobvl, jobvr, sense, n, a,
lda, b, ldb, alphar, alphai, beta, vl, ldvl, vr, ldvr, ilo,
ihi, lscale, rscale, abnrm, bbnrm, rconde, rcondv, work,
lwork, iwork, bwork, info)
DGGEVX computes the eigenvalues and, optionally, the left
and/or right eigenvectors for GE matrices
subroutine
sggevx
(balanc, jobvl, jobvr, sense, n, a,
lda, b, ldb, alphar, alphai, beta, vl, ldvl, vr, ldvr, ilo,
ihi, lscale, rscale, abnrm, bbnrm, rconde, rcondv, work,
lwork, iwork, bwork, info)
SGGEVX computes the eigenvalues and, optionally, the left
and/or right eigenvectors for GE matrices
subroutine
zggevx
(balanc, jobvl, jobvr, sense, n, a,
lda, b, ldb, alpha, beta, vl, ldvl, vr, ldvr, ilo, ihi,
lscale, rscale, abnrm, bbnrm, rconde, rcondv, work, lwork,
rwork, iwork, bwork, info)
ZGGEVX computes the eigenvalues and, optionally, the left
and/or right eigenvectors for GE matrices
Detailed Description
Function Documentation
subroutine cggevx (character balanc, character jobvl, character jobvr,character sense, integer n, complex, dimension( lda, * ) a, integerlda, complex, dimension( ldb, * ) b, integer ldb, complex, dimension( *) alpha, complex, dimension( * ) beta, complex, dimension( ldvl, * )vl, integer ldvl, complex, dimension( ldvr, * ) vr, integer ldvr,integer ilo, integer ihi, real, dimension( * ) lscale, real, dimension(* ) rscale, real abnrm, real bbnrm, real, dimension( * ) rconde, real,dimension( * ) rcondv, complex, dimension( * ) work, integer lwork,real, dimension( * ) rwork, integer, dimension( * ) iwork, logical,dimension( * ) bwork, integer info)
CGGEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for GE matrices
Purpose:
CGGEVX computes
for a pair of N-by-N complex nonsymmetric matrices
(A,B) the generalized eigenvalues, and optionally, the left
and/or
right generalized eigenvectors.
Optionally, it
also computes a balancing transformation to improve
the conditioning of the eigenvalues and eigenvectors (ILO,
IHI,
LSCALE, RSCALE, ABNRM, and BBNRM), reciprocal condition
numbers for
the eigenvalues (RCONDE), and reciprocal condition numbers
for the
right eigenvectors (RCONDV).
A generalized
eigenvalue for a pair of matrices (A,B) is a scalar
lambda or a ratio alpha/beta = lambda, such that A -
lambda*B is
singular. It is usually represented as the pair
(alpha,beta), as
there is a reasonable interpretation for beta=0, and even
for both
being zero.
The right
eigenvector v(j) corresponding to the eigenvalue lambda(j)
of (A,B) satisfies
A * v(j) = lambda(j) * B * v(j) .
The left eigenvector u(j) corresponding to the eigenvalue
lambda(j)
of (A,B) satisfies
u(j)**H * A = lambda(j) * u(j)**H * B.
where u(j)**H is the conjugate-transpose of u(j).
Parameters
BALANC
BALANC is
CHARACTER*1
Specifies the balance option to be performed:
= βNβ: do not diagonally scale or permute;
= βPβ: permute only;
= βSβ: scale only;
= βBβ: both permute and scale.
Computed reciprocal condition numbers will be for the
matrices after permuting and/or balancing. Permuting does
not change condition numbers (in exact arithmetic), but
balancing does.
JOBVL
JOBVL is
CHARACTER*1
= βNβ: do not compute the left generalized
eigenvectors;
= βVβ: compute the left generalized
eigenvectors.
JOBVR
JOBVR is
CHARACTER*1
= βNβ: do not compute the right generalized
eigenvectors;
= βVβ: compute the right generalized
eigenvectors.
SENSE
SENSE is
CHARACTER*1
Determines which reciprocal condition numbers are computed.
= βNβ: none are computed;
= βEβ: computed for eigenvalues only;
= βVβ: computed for eigenvectors only;
= βBβ: computed for eigenvalues and
eigenvectors.
N
N is INTEGER
The order of the matrices A, B, VL, and VR. N >= 0.
A
A is COMPLEX
array, dimension (LDA, N)
On entry, the matrix A in the pair (A,B).
On exit, A has been overwritten. If JOBVL=βVβ or
JOBVR=βVβ
or both, then A contains the first part of the complex Schur
form of the βbalancedβ versions of the input A
and B.
LDA
LDA is INTEGER
The leading dimension of A. LDA >= max(1,N).
B
B is COMPLEX
array, dimension (LDB, N)
On entry, the matrix B in the pair (A,B).
On exit, B has been overwritten. If JOBVL=βVβ or
JOBVR=βVβ
or both, then B contains the second part of the complex
Schur form of the βbalancedβ versions of the
input A and B.
LDB
LDB is INTEGER
The leading dimension of B. LDB >= max(1,N).
ALPHA
ALPHA is COMPLEX array, dimension (N)
BETA
BETA is COMPLEX
array, dimension (N)
On exit, ALPHA(j)/BETA(j), j=1,...,N, will be the
generalized
eigenvalues.
Note: the
quotient ALPHA(j)/BETA(j) ) may easily over- or
underflow, and BETA(j) may even be zero. Thus, the user
should avoid naively computing the ratio ALPHA/BETA.
However, ALPHA will be always less than and usually
comparable with norm(A) in magnitude, and BETA always less
than and usually comparable with norm(B).
VL
VL is COMPLEX
array, dimension (LDVL,N)
If JOBVL = βVβ, the left generalized
eigenvectors u(j) are
stored one after another in the columns of VL, in the same
order as their eigenvalues.
Each eigenvector will be scaled so the largest component
will have abs(real part) + abs(imag. part) = 1.
Not referenced if JOBVL = βNβ.
LDVL
LDVL is INTEGER
The leading dimension of the matrix VL. LDVL >= 1, and
if JOBVL = βVβ, LDVL >= N.
VR
VR is COMPLEX
array, dimension (LDVR,N)
If JOBVR = βVβ, the right generalized
eigenvectors v(j) are
stored one after another in the columns of VR, in the same
order as their eigenvalues.
Each eigenvector will be scaled so the largest component
will have abs(real part) + abs(imag. part) = 1.
Not referenced if JOBVR = βNβ.
LDVR
LDVR is INTEGER
The leading dimension of the matrix VR. LDVR >= 1, and
if JOBVR = βVβ, LDVR >= N.
ILO
ILO is INTEGER
IHI
IHI is INTEGER
ILO and IHI are integer values such that on exit
A(i,j) = 0 and B(i,j) = 0 if i > j and
j = 1,...,ILO-1 or i = IHI+1,...,N.
If BALANC = βNβ or βSβ, ILO = 1 and
IHI = N.
LSCALE
LSCALE is REAL
array, dimension (N)
Details of the permutations and scaling factors applied
to the left side of A and B. If PL(j) is the index of the
row interchanged with row j, and DL(j) is the scaling
factor applied to row j, then
LSCALE(j) = PL(j) for j = 1,...,ILO-1
= DL(j) for j = ILO,...,IHI
= PL(j) for j = IHI+1,...,N.
The order in which the interchanges are made is N to IHI+1,
then 1 to ILO-1.
RSCALE
RSCALE is REAL
array, dimension (N)
Details of the permutations and scaling factors applied
to the right side of A and B. If PR(j) is the index of the
column interchanged with column j, and DR(j) is the scaling
factor applied to column j, then
RSCALE(j) = PR(j) for j = 1,...,ILO-1
= DR(j) for j = ILO,...,IHI
= PR(j) for j = IHI+1,...,N
The order in which the interchanges are made is N to IHI+1,
then 1 to ILO-1.
ABNRM
ABNRM is REAL
The one-norm of the balanced matrix A.
BBNRM
BBNRM is REAL
The one-norm of the balanced matrix B.
RCONDE
RCONDE is REAL
array, dimension (N)
If SENSE = βEβ or βBβ, the
reciprocal condition numbers of
the eigenvalues, stored in consecutive elements of the
array.
If SENSE = βNβ or βVβ, RCONDE is not
referenced.
RCONDV
RCONDV is REAL
array, dimension (N)
If SENSE = βVβ or βBβ, the estimated
reciprocal condition
numbers of the eigenvectors, stored in consecutive elements
of the array. If the eigenvalues cannot be reordered to
compute RCONDV(j), RCONDV(j) is set to 0; this can only
occur
when the true value would be very small anyway.
If SENSE = βNβ or βEβ, RCONDV is not
referenced.
WORK
WORK is COMPLEX
array, dimension (MAX(1,LWORK))
On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
LWORK
LWORK is
INTEGER
The dimension of the array WORK. LWORK >= max(1,2*N).
If SENSE = βEβ, LWORK >= max(1,4*N).
If SENSE = βVβ or βBβ, LWORK >=
max(1,2*N*N+2*N).
If LWORK = -1,
then a workspace query is assumed; the routine
only calculates the optimal size of the WORK array, returns
this value as the first entry of the WORK array, and no
error
message related to LWORK is issued by XERBLA.
RWORK
RWORK is REAL
array, dimension (lrwork)
lrwork must be at least max(1,6*N) if BALANC =
βSβ or βBβ,
and at least max(1,2*N) otherwise.
Real workspace.
IWORK
IWORK is
INTEGER array, dimension (N+2)
If SENSE = βEβ, IWORK is not referenced.
BWORK
BWORK is
LOGICAL array, dimension (N)
If SENSE = βNβ, BWORK is not referenced.
INFO
INFO is INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal
value.
= 1,...,N:
The QZ iteration failed. No eigenvectors have been
calculated, but ALPHA(j) and BETA(j) should be correct
for j=INFO+1,...,N.
> N: =N+1: other than QZ iteration failed in CHGEQZ.
=N+2: error return from CTGEVC.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Further Details:
Balancing a
matrix pair (A,B) includes, first, permuting rows and
columns to isolate eigenvalues, second, applying diagonal
similarity
transformation to the rows and columns to make the rows and
columns
as close in norm as possible. The computed reciprocal
condition
numbers correspond to the balanced matrix. Permuting rows
and columns
will not change the condition numbers (in exact arithmetic)
but
diagonal scaling will. For further explanation of balancing,
see
section 4.11.1.2 of LAPACK Usersβ Guide.
An approximate
error bound on the chordal distance between the i-th
computed generalized eigenvalue w and the corresponding
exact
eigenvalue lambda is
chord(w, lambda) <= EPS * norm(ABNRM, BBNRM) / RCONDE(I)
An approximate
error bound for the angle between the i-th computed
eigenvector VL(i) or VR(i) is given by
EPS * norm(ABNRM, BBNRM) / DIF(i).
For further
explanation of the reciprocal condition numbers RCONDE
and RCONDV, see section 4.11 of LAPACK Userβs
Guide.
subroutine dggevx (character balanc, character jobvl, character jobvr,character sense, integer n, double precision, dimension( lda, * ) a,integer lda, double precision, dimension( ldb, * ) b, integer ldb,double precision, dimension( * ) alphar, double precision, dimension( *) alphai, double precision, dimension( * ) beta, double precision,dimension( ldvl, * ) vl, integer ldvl, double precision, dimension(ldvr, * ) vr, integer ldvr, integer ilo, integer ihi, double precision,dimension( * ) lscale, double precision, dimension( * ) rscale, doubleprecision abnrm, double precision bbnrm, double precision, dimension( *) rconde, double precision, dimension( * ) rcondv, double precision,dimension( * ) work, integer lwork, integer, dimension( * ) iwork,logical, dimension( * ) bwork, integer info)
DGGEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for GE matrices
Purpose:
DGGEVX computes
for a pair of N-by-N real nonsymmetric matrices (A,B)
the generalized eigenvalues, and optionally, the left and/or
right
generalized eigenvectors.
Optionally
also, it computes a balancing transformation to improve
the conditioning of the eigenvalues and eigenvectors (ILO,
IHI,
LSCALE, RSCALE, ABNRM, and BBNRM), reciprocal condition
numbers for
the eigenvalues (RCONDE), and reciprocal condition numbers
for the
right eigenvectors (RCONDV).
A generalized
eigenvalue for a pair of matrices (A,B) is a scalar
lambda or a ratio alpha/beta = lambda, such that A -
lambda*B is
singular. It is usually represented as the pair
(alpha,beta), as
there is a reasonable interpretation for beta=0, and even
for both
being zero.
The right
eigenvector v(j) corresponding to the eigenvalue lambda(j)
of (A,B) satisfies
A * v(j) = lambda(j) * B * v(j) .
The left
eigenvector u(j) corresponding to the eigenvalue lambda(j)
of (A,B) satisfies
u(j)**H * A = lambda(j) * u(j)**H * B.
where u(j)**H is the conjugate-transpose of u(j).
Parameters
BALANC
BALANC is
CHARACTER*1
Specifies the balance option to be performed.
= βNβ: do not diagonally scale or permute;
= βPβ: permute only;
= βSβ: scale only;
= βBβ: both permute and scale.
Computed reciprocal condition numbers will be for the
matrices after permuting and/or balancing. Permuting does
not change condition numbers (in exact arithmetic), but
balancing does.
JOBVL
JOBVL is
CHARACTER*1
= βNβ: do not compute the left generalized
eigenvectors;
= βVβ: compute the left generalized
eigenvectors.
JOBVR
JOBVR is
CHARACTER*1
= βNβ: do not compute the right generalized
eigenvectors;
= βVβ: compute the right generalized
eigenvectors.
SENSE
SENSE is
CHARACTER*1
Determines which reciprocal condition numbers are computed.
= βNβ: none are computed;
= βEβ: computed for eigenvalues only;
= βVβ: computed for eigenvectors only;
= βBβ: computed for eigenvalues and
eigenvectors.
N
N is INTEGER
The order of the matrices A, B, VL, and VR. N >= 0.
A
A is DOUBLE
PRECISION array, dimension (LDA, N)
On entry, the matrix A in the pair (A,B).
On exit, A has been overwritten. If JOBVL=βVβ or
JOBVR=βVβ
or both, then A contains the first part of the real Schur
form of the βbalancedβ versions of the input A
and B.
LDA
LDA is INTEGER
The leading dimension of A. LDA >= max(1,N).
B
B is DOUBLE
PRECISION array, dimension (LDB, N)
On entry, the matrix B in the pair (A,B).
On exit, B has been overwritten. If JOBVL=βVβ or
JOBVR=βVβ
or both, then B contains the second part of the real Schur
form of the βbalancedβ versions of the input A
and B.
LDB
LDB is INTEGER
The leading dimension of B. LDB >= max(1,N).
ALPHAR
ALPHAR is DOUBLE PRECISION array, dimension (N)
ALPHAI
ALPHAI is DOUBLE PRECISION array, dimension (N)
BETA
BETA is DOUBLE
PRECISION array, dimension (N)
On exit, (ALPHAR(j) + ALPHAI(j)*i)/BETA(j), j=1,...,N, will
be the generalized eigenvalues. If ALPHAI(j) is zero, then
the j-th eigenvalue is real; if positive, then the j-th and
(j+1)-st eigenvalues are a complex conjugate pair, with
ALPHAI(j+1) negative.
Note: the
quotients ALPHAR(j)/BETA(j) and ALPHAI(j)/BETA(j)
may easily over- or underflow, and BETA(j) may even be zero.
Thus, the user should avoid naively computing the ratio
ALPHA/BETA. However, ALPHAR and ALPHAI will be always less
than and usually comparable with norm(A) in magnitude, and
BETA always less than and usually comparable with
norm(B).
VL
VL is DOUBLE
PRECISION array, dimension (LDVL,N)
If JOBVL = βVβ, the left eigenvectors u(j) are
stored one
after another in the columns of VL, in the same order as
their eigenvalues. If the j-th eigenvalue is real, then
u(j) = VL(:,j), the j-th column of VL. If the j-th and
(j+1)-th eigenvalues form a complex conjugate pair, then
u(j) = VL(:,j)+i*VL(:,j+1) and u(j+1) = VL(:,j)-i*VL(:,j+1).
Each eigenvector will be scaled so the largest component
have
abs(real part) + abs(imag. part) = 1.
Not referenced if JOBVL = βNβ.
LDVL
LDVL is INTEGER
The leading dimension of the matrix VL. LDVL >= 1, and
if JOBVL = βVβ, LDVL >= N.
VR
VR is DOUBLE
PRECISION array, dimension (LDVR,N)
If JOBVR = βVβ, the right eigenvectors v(j) are
stored one
after another in the columns of VR, in the same order as
their eigenvalues. If the j-th eigenvalue is real, then
v(j) = VR(:,j), the j-th column of VR. If the j-th and
(j+1)-th eigenvalues form a complex conjugate pair, then
v(j) = VR(:,j)+i*VR(:,j+1) and v(j+1) = VR(:,j)-i*VR(:,j+1).
Each eigenvector will be scaled so the largest component
have
abs(real part) + abs(imag. part) = 1.
Not referenced if JOBVR = βNβ.
LDVR
LDVR is INTEGER
The leading dimension of the matrix VR. LDVR >= 1, and
if JOBVR = βVβ, LDVR >= N.
ILO
ILO is INTEGER
IHI
IHI is INTEGER
ILO and IHI are integer values such that on exit
A(i,j) = 0 and B(i,j) = 0 if i > j and
j = 1,...,ILO-1 or i = IHI+1,...,N.
If BALANC = βNβ or βSβ, ILO = 1 and
IHI = N.
LSCALE
LSCALE is
DOUBLE PRECISION array, dimension (N)
Details of the permutations and scaling factors applied
to the left side of A and B. If PL(j) is the index of the
row interchanged with row j, and DL(j) is the scaling
factor applied to row j, then
LSCALE(j) = PL(j) for j = 1,...,ILO-1
= DL(j) for j = ILO,...,IHI
= PL(j) for j = IHI+1,...,N.
The order in which the interchanges are made is N to IHI+1,
then 1 to ILO-1.
RSCALE
RSCALE is
DOUBLE PRECISION array, dimension (N)
Details of the permutations and scaling factors applied
to the right side of A and B. If PR(j) is the index of the
column interchanged with column j, and DR(j) is the scaling
factor applied to column j, then
RSCALE(j) = PR(j) for j = 1,...,ILO-1
= DR(j) for j = ILO,...,IHI
= PR(j) for j = IHI+1,...,N
The order in which the interchanges are made is N to IHI+1,
then 1 to ILO-1.
ABNRM
ABNRM is DOUBLE
PRECISION
The one-norm of the balanced matrix A.
BBNRM
BBNRM is DOUBLE
PRECISION
The one-norm of the balanced matrix B.
RCONDE
RCONDE is
DOUBLE PRECISION array, dimension (N)
If SENSE = βEβ or βBβ, the
reciprocal condition numbers of
the eigenvalues, stored in consecutive elements of the
array.
For a complex conjugate pair of eigenvalues two consecutive
elements of RCONDE are set to the same value. Thus
RCONDE(j),
RCONDV(j), and the j-th columns of VL and VR all correspond
to the j-th eigenpair.
If SENSE = βN or βVβ, RCONDE is not
referenced.
RCONDV
RCONDV is
DOUBLE PRECISION array, dimension (N)
If SENSE = βVβ or βBβ, the estimated
reciprocal condition
numbers of the eigenvectors, stored in consecutive elements
of the array. For a complex eigenvector two consecutive
elements of RCONDV are set to the same value. If the
eigenvalues cannot be reordered to compute RCONDV(j),
RCONDV(j) is set to 0; this can only occur when the true
value would be very small anyway.
If SENSE = βNβ or βEβ, RCONDV is not
referenced.
WORK
WORK is DOUBLE
PRECISION array, dimension (MAX(1,LWORK))
On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
LWORK
LWORK is
INTEGER
The dimension of the array WORK. LWORK >= max(1,2*N).
If BALANC = βSβ or βBβ, or JOBVL =
βVβ, or JOBVR = βVβ,
LWORK >= max(1,6*N).
If SENSE = βEβ or βBβ, LWORK >=
max(1,10*N).
If SENSE = βVβ or βBβ, LWORK >=
2*N*N+8*N+16.
If LWORK = -1,
then a workspace query is assumed; the routine
only calculates the optimal size of the WORK array, returns
this value as the first entry of the WORK array, and no
error
message related to LWORK is issued by XERBLA.
IWORK
IWORK is
INTEGER array, dimension (N+6)
If SENSE = βEβ, IWORK is not referenced.
BWORK
BWORK is
LOGICAL array, dimension (N)
If SENSE = βNβ, BWORK is not referenced.
INFO
INFO is INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal
value.
= 1,...,N:
The QZ iteration failed. No eigenvectors have been
calculated, but ALPHAR(j), ALPHAI(j), and BETA(j)
should be correct for j=INFO+1,...,N.
> N: =N+1: other than QZ iteration failed in DHGEQZ.
=N+2: error return from DTGEVC.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Further Details:
Balancing a
matrix pair (A,B) includes, first, permuting rows and
columns to isolate eigenvalues, second, applying diagonal
similarity
transformation to the rows and columns to make the rows and
columns
as close in norm as possible. The computed reciprocal
condition
numbers correspond to the balanced matrix. Permuting rows
and columns
will not change the condition numbers (in exact arithmetic)
but
diagonal scaling will. For further explanation of balancing,
see
section 4.11.1.2 of LAPACK Usersβ Guide.
An approximate
error bound on the chordal distance between the i-th
computed generalized eigenvalue w and the corresponding
exact
eigenvalue lambda is
chord(w, lambda) <= EPS * norm(ABNRM, BBNRM) / RCONDE(I)
An approximate
error bound for the angle between the i-th computed
eigenvector VL(i) or VR(i) is given by
EPS * norm(ABNRM, BBNRM) / DIF(i).
For further
explanation of the reciprocal condition numbers RCONDE
and RCONDV, see section 4.11 of LAPACK Userβs
Guide.
subroutine sggevx (character balanc, character jobvl, character jobvr,character sense, integer n, real, dimension( lda, * ) a, integer lda,real, dimension( ldb, * ) b, integer ldb, real, dimension( * ) alphar,real, dimension( * ) alphai, real, dimension( * ) beta, real,dimension( ldvl, * ) vl, integer ldvl, real, dimension( ldvr, * ) vr,integer ldvr, integer ilo, integer ihi, real, dimension( * ) lscale,real, dimension( * ) rscale, real abnrm, real bbnrm, real, dimension( *) rconde, real, dimension( * ) rcondv, real, dimension( * ) work,integer lwork, integer, dimension( * ) iwork, logical, dimension( * )bwork, integer info)
SGGEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for GE matrices
Purpose:
SGGEVX computes
for a pair of N-by-N real nonsymmetric matrices (A,B)
the generalized eigenvalues, and optionally, the left and/or
right
generalized eigenvectors.
Optionally
also, it computes a balancing transformation to improve
the conditioning of the eigenvalues and eigenvectors (ILO,
IHI,
LSCALE, RSCALE, ABNRM, and BBNRM), reciprocal condition
numbers for
the eigenvalues (RCONDE), and reciprocal condition numbers
for the
right eigenvectors (RCONDV).
A generalized
eigenvalue for a pair of matrices (A,B) is a scalar
lambda or a ratio alpha/beta = lambda, such that A -
lambda*B is
singular. It is usually represented as the pair
(alpha,beta), as
there is a reasonable interpretation for beta=0, and even
for both
being zero.
The right
eigenvector v(j) corresponding to the eigenvalue lambda(j)
of (A,B) satisfies
A * v(j) = lambda(j) * B * v(j) .
The left
eigenvector u(j) corresponding to the eigenvalue lambda(j)
of (A,B) satisfies
u(j)**H * A = lambda(j) * u(j)**H * B.
where u(j)**H is the conjugate-transpose of u(j).
Parameters
BALANC
BALANC is
CHARACTER*1
Specifies the balance option to be performed.
= βNβ: do not diagonally scale or permute;
= βPβ: permute only;
= βSβ: scale only;
= βBβ: both permute and scale.
Computed reciprocal condition numbers will be for the
matrices after permuting and/or balancing. Permuting does
not change condition numbers (in exact arithmetic), but
balancing does.
JOBVL
JOBVL is
CHARACTER*1
= βNβ: do not compute the left generalized
eigenvectors;
= βVβ: compute the left generalized
eigenvectors.
JOBVR
JOBVR is
CHARACTER*1
= βNβ: do not compute the right generalized
eigenvectors;
= βVβ: compute the right generalized
eigenvectors.
SENSE
SENSE is
CHARACTER*1
Determines which reciprocal condition numbers are computed.
= βNβ: none are computed;
= βEβ: computed for eigenvalues only;
= βVβ: computed for eigenvectors only;
= βBβ: computed for eigenvalues and
eigenvectors.
N
N is INTEGER
The order of the matrices A, B, VL, and VR. N >= 0.
A
A is REAL
array, dimension (LDA, N)
On entry, the matrix A in the pair (A,B).
On exit, A has been overwritten. If JOBVL=βVβ or
JOBVR=βVβ
or both, then A contains the first part of the real Schur
form of the βbalancedβ versions of the input A
and B.
LDA
LDA is INTEGER
The leading dimension of A. LDA >= max(1,N).
B
B is REAL
array, dimension (LDB, N)
On entry, the matrix B in the pair (A,B).
On exit, B has been overwritten. If JOBVL=βVβ or
JOBVR=βVβ
or both, then B contains the second part of the real Schur
form of the βbalancedβ versions of the input A
and B.
LDB
LDB is INTEGER
The leading dimension of B. LDB >= max(1,N).
ALPHAR
ALPHAR is REAL array, dimension (N)
ALPHAI
ALPHAI is REAL array, dimension (N)
BETA
BETA is REAL
array, dimension (N)
On exit, (ALPHAR(j) + ALPHAI(j)*i)/BETA(j), j=1,...,N, will
be the generalized eigenvalues. If ALPHAI(j) is zero, then
the j-th eigenvalue is real; if positive, then the j-th and
(j+1)-st eigenvalues are a complex conjugate pair, with
ALPHAI(j+1) negative.
Note: the
quotients ALPHAR(j)/BETA(j) and ALPHAI(j)/BETA(j)
may easily over- or underflow, and BETA(j) may even be zero.
Thus, the user should avoid naively computing the ratio
ALPHA/BETA. However, ALPHAR and ALPHAI will be always less
than and usually comparable with norm(A) in magnitude, and
BETA always less than and usually comparable with
norm(B).
VL
VL is REAL
array, dimension (LDVL,N)
If JOBVL = βVβ, the left eigenvectors u(j) are
stored one
after another in the columns of VL, in the same order as
their eigenvalues. If the j-th eigenvalue is real, then
u(j) = VL(:,j), the j-th column of VL. If the j-th and
(j+1)-th eigenvalues form a complex conjugate pair, then
u(j) = VL(:,j)+i*VL(:,j+1) and u(j+1) = VL(:,j)-i*VL(:,j+1).
Each eigenvector will be scaled so the largest component
have
abs(real part) + abs(imag. part) = 1.
Not referenced if JOBVL = βNβ.
LDVL
LDVL is INTEGER
The leading dimension of the matrix VL. LDVL >= 1, and
if JOBVL = βVβ, LDVL >= N.
VR
VR is REAL
array, dimension (LDVR,N)
If JOBVR = βVβ, the right eigenvectors v(j) are
stored one
after another in the columns of VR, in the same order as
their eigenvalues. If the j-th eigenvalue is real, then
v(j) = VR(:,j), the j-th column of VR. If the j-th and
(j+1)-th eigenvalues form a complex conjugate pair, then
v(j) = VR(:,j)+i*VR(:,j+1) and v(j+1) = VR(:,j)-i*VR(:,j+1).
Each eigenvector will be scaled so the largest component
have
abs(real part) + abs(imag. part) = 1.
Not referenced if JOBVR = βNβ.
LDVR
LDVR is INTEGER
The leading dimension of the matrix VR. LDVR >= 1, and
if JOBVR = βVβ, LDVR >= N.
ILO
ILO is INTEGER
IHI
IHI is INTEGER
ILO and IHI are integer values such that on exit
A(i,j) = 0 and B(i,j) = 0 if i > j and
j = 1,...,ILO-1 or i = IHI+1,...,N.
If BALANC = βNβ or βSβ, ILO = 1 and
IHI = N.
LSCALE
LSCALE is REAL
array, dimension (N)
Details of the permutations and scaling factors applied
to the left side of A and B. If PL(j) is the index of the
row interchanged with row j, and DL(j) is the scaling
factor applied to row j, then
LSCALE(j) = PL(j) for j = 1,...,ILO-1
= DL(j) for j = ILO,...,IHI
= PL(j) for j = IHI+1,...,N.
The order in which the interchanges are made is N to IHI+1,
then 1 to ILO-1.
RSCALE
RSCALE is REAL
array, dimension (N)
Details of the permutations and scaling factors applied
to the right side of A and B. If PR(j) is the index of the
column interchanged with column j, and DR(j) is the scaling
factor applied to column j, then
RSCALE(j) = PR(j) for j = 1,...,ILO-1
= DR(j) for j = ILO,...,IHI
= PR(j) for j = IHI+1,...,N
The order in which the interchanges are made is N to IHI+1,
then 1 to ILO-1.
ABNRM
ABNRM is REAL
The one-norm of the balanced matrix A.
BBNRM
BBNRM is REAL
The one-norm of the balanced matrix B.
RCONDE
RCONDE is REAL
array, dimension (N)
If SENSE = βEβ or βBβ, the
reciprocal condition numbers of
the eigenvalues, stored in consecutive elements of the
array.
For a complex conjugate pair of eigenvalues two consecutive
elements of RCONDE are set to the same value. Thus
RCONDE(j),
RCONDV(j), and the j-th columns of VL and VR all correspond
to the j-th eigenpair.
If SENSE = βNβ or βVβ, RCONDE is not
referenced.
RCONDV
RCONDV is REAL
array, dimension (N)
If SENSE = βVβ or βBβ, the estimated
reciprocal condition
numbers of the eigenvectors, stored in consecutive elements
of the array. For a complex eigenvector two consecutive
elements of RCONDV are set to the same value. If the
eigenvalues cannot be reordered to compute RCONDV(j),
RCONDV(j) is set to 0; this can only occur when the true
value would be very small anyway.
If SENSE = βNβ or βEβ, RCONDV is not
referenced.
WORK
WORK is REAL
array, dimension (MAX(1,LWORK))
On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
LWORK
LWORK is
INTEGER
The dimension of the array WORK. LWORK >= max(1,2*N).
If BALANC = βSβ or βBβ, or JOBVL =
βVβ, or JOBVR = βVβ,
LWORK >= max(1,6*N).
If SENSE = βEβ, LWORK >= max(1,10*N).
If SENSE = βVβ or βBβ, LWORK >=
2*N*N+8*N+16.
If LWORK = -1,
then a workspace query is assumed; the routine
only calculates the optimal size of the WORK array, returns
this value as the first entry of the WORK array, and no
error
message related to LWORK is issued by XERBLA.
IWORK
IWORK is
INTEGER array, dimension (N+6)
If SENSE = βEβ, IWORK is not referenced.
BWORK
BWORK is
LOGICAL array, dimension (N)
If SENSE = βNβ, BWORK is not referenced.
INFO
INFO is INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal
value.
= 1,...,N:
The QZ iteration failed. No eigenvectors have been
calculated, but ALPHAR(j), ALPHAI(j), and BETA(j)
should be correct for j=INFO+1,...,N.
> N: =N+1: other than QZ iteration failed in SHGEQZ.
=N+2: error return from STGEVC.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Further Details:
Balancing a
matrix pair (A,B) includes, first, permuting rows and
columns to isolate eigenvalues, second, applying diagonal
similarity
transformation to the rows and columns to make the rows and
columns
as close in norm as possible. The computed reciprocal
condition
numbers correspond to the balanced matrix. Permuting rows
and columns
will not change the condition numbers (in exact arithmetic)
but
diagonal scaling will. For further explanation of balancing,
see
section 4.11.1.2 of LAPACK Usersβ Guide.
An approximate
error bound on the chordal distance between the i-th
computed generalized eigenvalue w and the corresponding
exact
eigenvalue lambda is
chord(w, lambda) <= EPS * norm(ABNRM, BBNRM) / RCONDE(I)
An approximate
error bound for the angle between the i-th computed
eigenvector VL(i) or VR(i) is given by
EPS * norm(ABNRM, BBNRM) / DIF(i).
For further
explanation of the reciprocal condition numbers RCONDE
and RCONDV, see section 4.11 of LAPACK Userβs
Guide.
subroutine zggevx (character balanc, character jobvl, character jobvr,character sense, integer n, complex*16, dimension( lda, * ) a, integerlda, complex*16, dimension( ldb, * ) b, integer ldb, complex*16,dimension( * ) alpha, complex*16, dimension( * ) beta, complex*16,dimension( ldvl, * ) vl, integer ldvl, complex*16, dimension( ldvr, * )vr, integer ldvr, integer ilo, integer ihi, double precision,dimension( * ) lscale, double precision, dimension( * ) rscale, doubleprecision abnrm, double precision bbnrm, double precision, dimension( *) rconde, double precision, dimension( * ) rcondv, complex*16,dimension( * ) work, integer lwork, double precision, dimension( * )rwork, integer, dimension( * ) iwork, logical, dimension( * ) bwork,integer info)
ZGGEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for GE matrices
Purpose:
ZGGEVX computes
for a pair of N-by-N complex nonsymmetric matrices
(A,B) the generalized eigenvalues, and optionally, the left
and/or
right generalized eigenvectors.
Optionally, it
also computes a balancing transformation to improve
the conditioning of the eigenvalues and eigenvectors (ILO,
IHI,
LSCALE, RSCALE, ABNRM, and BBNRM), reciprocal condition
numbers for
the eigenvalues (RCONDE), and reciprocal condition numbers
for the
right eigenvectors (RCONDV).
A generalized
eigenvalue for a pair of matrices (A,B) is a scalar
lambda or a ratio alpha/beta = lambda, such that A -
lambda*B is
singular. It is usually represented as the pair
(alpha,beta), as
there is a reasonable interpretation for beta=0, and even
for both
being zero.
The right
eigenvector v(j) corresponding to the eigenvalue lambda(j)
of (A,B) satisfies
A * v(j) = lambda(j) * B * v(j) .
The left eigenvector u(j) corresponding to the eigenvalue
lambda(j)
of (A,B) satisfies
u(j)**H * A = lambda(j) * u(j)**H * B.
where u(j)**H is the conjugate-transpose of u(j).
Parameters
BALANC
BALANC is
CHARACTER*1
Specifies the balance option to be performed:
= βNβ: do not diagonally scale or permute;
= βPβ: permute only;
= βSβ: scale only;
= βBβ: both permute and scale.
Computed reciprocal condition numbers will be for the
matrices after permuting and/or balancing. Permuting does
not change condition numbers (in exact arithmetic), but
balancing does.
JOBVL
JOBVL is
CHARACTER*1
= βNβ: do not compute the left generalized
eigenvectors;
= βVβ: compute the left generalized
eigenvectors.
JOBVR
JOBVR is
CHARACTER*1
= βNβ: do not compute the right generalized
eigenvectors;
= βVβ: compute the right generalized
eigenvectors.
SENSE
SENSE is
CHARACTER*1
Determines which reciprocal condition numbers are computed.
= βNβ: none are computed;
= βEβ: computed for eigenvalues only;
= βVβ: computed for eigenvectors only;
= βBβ: computed for eigenvalues and
eigenvectors.
N
N is INTEGER
The order of the matrices A, B, VL, and VR. N >= 0.
A
A is COMPLEX*16
array, dimension (LDA, N)
On entry, the matrix A in the pair (A,B).
On exit, A has been overwritten. If JOBVL=βVβ or
JOBVR=βVβ
or both, then A contains the first part of the complex Schur
form of the βbalancedβ versions of the input A
and B.
LDA
LDA is INTEGER
The leading dimension of A. LDA >= max(1,N).
B
B is COMPLEX*16
array, dimension (LDB, N)
On entry, the matrix B in the pair (A,B).
On exit, B has been overwritten. If JOBVL=βVβ or
JOBVR=βVβ
or both, then B contains the second part of the complex
Schur form of the βbalancedβ versions of the
input A and B.
LDB
LDB is INTEGER
The leading dimension of B. LDB >= max(1,N).
ALPHA
ALPHA is COMPLEX*16 array, dimension (N)
BETA
BETA is
COMPLEX*16 array, dimension (N)
On exit, ALPHA(j)/BETA(j), j=1,...,N, will be the
generalized
eigenvalues.
Note: the
quotient ALPHA(j)/BETA(j) ) may easily over- or
underflow, and BETA(j) may even be zero. Thus, the user
should avoid naively computing the ratio ALPHA/BETA.
However, ALPHA will be always less than and usually
comparable with norm(A) in magnitude, and BETA always less
than and usually comparable with norm(B).
VL
VL is
COMPLEX*16 array, dimension (LDVL,N)
If JOBVL = βVβ, the left generalized
eigenvectors u(j) are
stored one after another in the columns of VL, in the same
order as their eigenvalues.
Each eigenvector will be scaled so the largest component
will have abs(real part) + abs(imag. part) = 1.
Not referenced if JOBVL = βNβ.
LDVL
LDVL is INTEGER
The leading dimension of the matrix VL. LDVL >= 1, and
if JOBVL = βVβ, LDVL >= N.
VR
VR is
COMPLEX*16 array, dimension (LDVR,N)
If JOBVR = βVβ, the right generalized
eigenvectors v(j) are
stored one after another in the columns of VR, in the same
order as their eigenvalues.
Each eigenvector will be scaled so the largest component
will have abs(real part) + abs(imag. part) = 1.
Not referenced if JOBVR = βNβ.
LDVR
LDVR is INTEGER
The leading dimension of the matrix VR. LDVR >= 1, and
if JOBVR = βVβ, LDVR >= N.
ILO
ILO is INTEGER
IHI
IHI is INTEGER
ILO and IHI are integer values such that on exit
A(i,j) = 0 and B(i,j) = 0 if i > j and
j = 1,...,ILO-1 or i = IHI+1,...,N.
If BALANC = βNβ or βSβ, ILO = 1 and
IHI = N.
LSCALE
LSCALE is
DOUBLE PRECISION array, dimension (N)
Details of the permutations and scaling factors applied
to the left side of A and B. If PL(j) is the index of the
row interchanged with row j, and DL(j) is the scaling
factor applied to row j, then
LSCALE(j) = PL(j) for j = 1,...,ILO-1
= DL(j) for j = ILO,...,IHI
= PL(j) for j = IHI+1,...,N.
The order in which the interchanges are made is N to IHI+1,
then 1 to ILO-1.
RSCALE
RSCALE is
DOUBLE PRECISION array, dimension (N)
Details of the permutations and scaling factors applied
to the right side of A and B. If PR(j) is the index of the
column interchanged with column j, and DR(j) is the scaling
factor applied to column j, then
RSCALE(j) = PR(j) for j = 1,...,ILO-1
= DR(j) for j = ILO,...,IHI
= PR(j) for j = IHI+1,...,N
The order in which the interchanges are made is N to IHI+1,
then 1 to ILO-1.
ABNRM
ABNRM is DOUBLE
PRECISION
The one-norm of the balanced matrix A.
BBNRM
BBNRM is DOUBLE
PRECISION
The one-norm of the balanced matrix B.
RCONDE
RCONDE is
DOUBLE PRECISION array, dimension (N)
If SENSE = βEβ or βBβ, the
reciprocal condition numbers of
the eigenvalues, stored in consecutive elements of the
array.
If SENSE = βNβ or βVβ, RCONDE is not
referenced.
RCONDV
RCONDV is
DOUBLE PRECISION array, dimension (N)
If JOB = βVβ or βBβ, the estimated
reciprocal condition
numbers of the eigenvectors, stored in consecutive elements
of the array. If the eigenvalues cannot be reordered to
compute RCONDV(j), RCONDV(j) is set to 0; this can only
occur
when the true value would be very small anyway.
If SENSE = βNβ or βEβ, RCONDV is not
referenced.
WORK
WORK is
COMPLEX*16 array, dimension (MAX(1,LWORK))
On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
LWORK
LWORK is
INTEGER
The dimension of the array WORK. LWORK >= max(1,2*N).
If SENSE = βEβ, LWORK >= max(1,4*N).
If SENSE = βVβ or βBβ, LWORK >=
max(1,2*N*N+2*N).
If LWORK = -1,
then a workspace query is assumed; the routine
only calculates the optimal size of the WORK array, returns
this value as the first entry of the WORK array, and no
error
message related to LWORK is issued by XERBLA.
RWORK
RWORK is DOUBLE
PRECISION array, dimension (lrwork)
lrwork must be at least max(1,6*N) if BALANC =
βSβ or βBβ,
and at least max(1,2*N) otherwise.
Real workspace.
IWORK
IWORK is
INTEGER array, dimension (N+2)
If SENSE = βEβ, IWORK is not referenced.
BWORK
BWORK is
LOGICAL array, dimension (N)
If SENSE = βNβ, BWORK is not referenced.
INFO
INFO is INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal
value.
= 1,...,N:
The QZ iteration failed. No eigenvectors have been
calculated, but ALPHA(j) and BETA(j) should be correct
for j=INFO+1,...,N.
> N: =N+1: other than QZ iteration failed in ZHGEQZ.
=N+2: error return from ZTGEVC.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Further Details:
Balancing a
matrix pair (A,B) includes, first, permuting rows and
columns to isolate eigenvalues, second, applying diagonal
similarity
transformation to the rows and columns to make the rows and
columns
as close in norm as possible. The computed reciprocal
condition
numbers correspond to the balanced matrix. Permuting rows
and columns
will not change the condition numbers (in exact arithmetic)
but
diagonal scaling will. For further explanation of balancing,
see
section 4.11.1.2 of LAPACK Usersβ Guide.
An approximate
error bound on the chordal distance between the i-th
computed generalized eigenvalue w and the corresponding
exact
eigenvalue lambda is
chord(w, lambda) <= EPS * norm(ABNRM, BBNRM) / RCONDE(I)
An approximate
error bound for the angle between the i-th computed
eigenvector VL(i) or VR(i) is given by
EPS * norm(ABNRM, BBNRM) / DIF(i).
For further
explanation of the reciprocal condition numbers RCONDE
and RCONDV, see section 4.11 of LAPACK Userβs
Guide.
Author
Generated automatically by Doxygen for LAPACK from the source code.