Man page - trevc3(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
trevc3
NAMESYNOPSIS
Functions
Detailed Description
Function Documentation
subroutine ctrevc3 (character side, character howmny, logical, dimension( *) select, integer n, complex, dimension( ldt, * ) t, integer ldt,complex, dimension( ldvl, * ) vl, integer ldvl, complex, dimension(ldvr, * ) vr, integer ldvr, integer mm, integer m, complex, dimension(* ) work, integer lwork, real, dimension( * ) rwork, integer lrwork,integer info)
subroutine dtrevc3 (character side, character howmny, logical, dimension( *) select, integer n, double precision, dimension( ldt, * ) t, integerldt, double precision, dimension( ldvl, * ) vl, integer ldvl, doubleprecision, dimension( ldvr, * ) vr, integer ldvr, integer mm, integerm, double precision, dimension( * ) work, integer lwork, integer info)
subroutine strevc3 (character side, character howmny, logical, dimension( *) select, integer n, real, dimension( ldt, * ) t, integer ldt, real,dimension( ldvl, * ) vl, integer ldvl, real, dimension( ldvr, * ) vr,integer ldvr, integer mm, integer m, real, dimension( * ) work, integerlwork, integer info)
subroutine ztrevc3 (character side, character howmny, logical, dimension( *) select, integer n, complex*16, dimension( ldt, * ) t, integer ldt,complex*16, dimension( ldvl, * ) vl, integer ldvl, complex*16,dimension( ldvr, * ) vr, integer ldvr, integer mm, integer m,complex*16, dimension( * ) work, integer lwork, double precision,dimension( * ) rwork, integer lrwork, integer info)
Author
NAME
trevc3 - trevc3: eigenvectors of triangular Schur form, blocked
SYNOPSIS
Functions
subroutine
ctrevc3
(side, howmny, select, n, t, ldt, vl, ldvl,
vr, ldvr, mm, m, work, lwork, rwork, lrwork, info)
CTREVC3
subroutine
dtrevc3
(side, howmny, select, n, t, ldt,
vl, ldvl, vr, ldvr, mm, m, work, lwork, info)
DTREVC3
subroutine
strevc3
(side, howmny, select, n, t, ldt,
vl, ldvl, vr, ldvr, mm, m, work, lwork, info)
STREVC3
subroutine
ztrevc3
(side, howmny, select, n, t, ldt,
vl, ldvl, vr, ldvr, mm, m, work, lwork, rwork, lrwork, info)
ZTREVC3
Detailed Description
Function Documentation
subroutine ctrevc3 (character side, character howmny, logical, dimension( *) select, integer n, complex, dimension( ldt, * ) t, integer ldt,complex, dimension( ldvl, * ) vl, integer ldvl, complex, dimension(ldvr, * ) vr, integer ldvr, integer mm, integer m, complex, dimension(* ) work, integer lwork, real, dimension( * ) rwork, integer lrwork,integer info)
CTREVC3
Purpose:
CTREVC3
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 = Q*T*Q**H, as computed by
CHSEQR.
The right
eigenvector x and the left eigenvector y of T corresponding
to an eigenvalue w are defined by:
T*x = w*x, (y**H)*T = w*(y**H)
where y**H
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 Q*X and/or Q*Y, where Q
is an
input matrix. If Q is the unitary factor that reduces a
matrix A to
Schur form T, then Q*X and Q*Y are the matrices of right and
left
eigenvectors of A.
This uses a Level 3 BLAS version of the back transformation.
Parameters
SIDE
SIDE is
CHARACTER*1
= ’R’: compute right eigenvectors only;
= ’L’: compute left eigenvectors only;
= ’B’: compute both right and left
eigenvectors.
HOWMNY
HOWMNY is
CHARACTER*1
= ’A’: compute all right and/or left
eigenvectors;
= ’B’: compute all right and/or left
eigenvectors,
backtransformed using the matrices supplied in
VR and/or VL;
= ’S’: compute selected right and/or left
eigenvectors,
as indicated by the logical array SELECT.
SELECT
SELECT is
LOGICAL array, dimension (N)
If HOWMNY = ’S’, SELECT specifies the
eigenvectors to be
computed.
The eigenvector corresponding to the j-th eigenvalue is
computed if SELECT(j) = .TRUE..
Not referenced if HOWMNY = ’A’ or
’B’.
N
N is INTEGER
The order of the matrix T. N >= 0.
T
T is COMPLEX
array, dimension (LDT,N)
The upper triangular matrix T. T is modified, but restored
on exit.
LDT
LDT is INTEGER
The leading dimension of the array T. LDT >=
max(1,N).
VL
VL is COMPLEX
array, dimension (LDVL,MM)
On entry, if SIDE = ’L’ or ’B’ and
HOWMNY = ’B’, VL must
contain an N-by-N matrix Q (usually the unitary matrix Q of
Schur vectors returned by CHSEQR).
On exit, if SIDE = ’L’ or ’B’, VL
contains:
if HOWMNY = ’A’, the matrix Y of left
eigenvectors of T;
if HOWMNY = ’B’, the matrix Q*Y;
if HOWMNY = ’S’, the left eigenvectors of T
specified by
SELECT, stored consecutively in the columns
of VL, in the same order as their
eigenvalues.
Not referenced if SIDE = ’R’.
LDVL
LDVL is INTEGER
The leading dimension of the array VL.
LDVL >= 1, and if SIDE = ’L’ or
’B’, LDVL >= N.
VR
VR is COMPLEX
array, dimension (LDVR,MM)
On entry, if SIDE = ’R’ or ’B’ and
HOWMNY = ’B’, VR must
contain an N-by-N matrix Q (usually the unitary matrix Q of
Schur vectors returned by CHSEQR).
On exit, if SIDE = ’R’ or ’B’, VR
contains:
if HOWMNY = ’A’, the matrix X of right
eigenvectors of T;
if HOWMNY = ’B’, the matrix Q*X;
if HOWMNY = ’S’, the right eigenvectors of T
specified by
SELECT, stored consecutively in the columns
of VR, in the same order as their
eigenvalues.
Not referenced if SIDE = ’L’.
LDVR
LDVR is INTEGER
The leading dimension of the array VR.
LDVR >= 1, and if SIDE = ’R’ or
’B’, LDVR >= N.
MM
MM is INTEGER
The number of columns in the arrays VL and/or VR. MM >=
M.
M
M is INTEGER
The number of columns in the arrays VL and/or VR actually
used to store the eigenvectors.
If HOWMNY = ’A’ or ’B’, M is set to
N.
Each selected eigenvector occupies one column.
WORK
WORK is COMPLEX array, dimension (MAX(1,LWORK))
LWORK
LWORK is
INTEGER
The dimension of array WORK. LWORK >= max(1,2*N).
For optimum performance, LWORK >= N + 2*N*NB, where NB is
the optimal blocksize.
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
LRWORK is
INTEGER
The dimension of array RWORK. LRWORK >= max(1,N).
If LRWORK = -1,
then a workspace query is assumed; the routine
only calculates the optimal size of the RWORK array, returns
this value as the first entry of the RWORK array, and no
error
message related to LRWORK is issued by XERBLA.
INFO
INFO is INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal
value
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Further Details:
The algorithm
used in this program is basically backward (forward)
substitution, with scaling to make the the code robust
against
possible overflow.
Each
eigenvector is normalized so that the element of largest
magnitude has magnitude 1; here the magnitude of a complex
number
(x,y) is taken to be |x| + |y|.
subroutine dtrevc3 (character side, character howmny, logical, dimension( *) select, integer n, double precision, dimension( ldt, * ) t, integerldt, double precision, dimension( ldvl, * ) vl, integer ldvl, doubleprecision, dimension( ldvr, * ) vr, integer ldvr, integer mm, integerm, double precision, dimension( * ) work, integer lwork, integer info)
DTREVC3
Purpose:
DTREVC3
computes some or all of the right and/or left eigenvectors
of
a real upper quasi-triangular matrix T.
Matrices of this type are produced by the Schur
factorization of
a real general matrix: A = Q*T*Q**T, as computed by
DHSEQR.
The right
eigenvector x and the left eigenvector y of T corresponding
to an eigenvalue w are defined by:
T*x = w*x, (y**T)*T = w*(y**T)
where y**T
denotes the transpose of the vector y.
The eigenvalues are not input to this routine, but are read
directly
from the diagonal blocks of T.
This routine
returns the matrices X and/or Y of right and left
eigenvectors of T, or the products Q*X and/or Q*Y, where Q
is an
input matrix. If Q is the orthogonal factor that reduces a
matrix
A to Schur form T, then Q*X and Q*Y are the matrices of
right and
left eigenvectors of A.
This uses a Level 3 BLAS version of the back transformation.
Parameters
SIDE
SIDE is
CHARACTER*1
= ’R’: compute right eigenvectors only;
= ’L’: compute left eigenvectors only;
= ’B’: compute both right and left
eigenvectors.
HOWMNY
HOWMNY is
CHARACTER*1
= ’A’: compute all right and/or left
eigenvectors;
= ’B’: compute all right and/or left
eigenvectors,
backtransformed by the matrices in VR and/or VL;
= ’S’: compute selected right and/or left
eigenvectors,
as indicated by the logical array SELECT.
SELECT
SELECT is
LOGICAL array, dimension (N)
If HOWMNY = ’S’, SELECT specifies the
eigenvectors to be
computed.
If w(j) is a real eigenvalue, the corresponding real
eigenvector is computed if SELECT(j) is .TRUE..
If w(j) and w(j+1) are the real and imaginary parts of a
complex eigenvalue, the corresponding complex eigenvector is
computed if either SELECT(j) or SELECT(j+1) is .TRUE., and
on exit SELECT(j) is set to .TRUE. and SELECT(j+1) is set to
.FALSE..
Not referenced if HOWMNY = ’A’ or
’B’.
N
N is INTEGER
The order of the matrix T. N >= 0.
T
T is DOUBLE
PRECISION array, dimension (LDT,N)
The upper quasi-triangular matrix T in Schur canonical
form.
LDT
LDT is INTEGER
The leading dimension of the array T. LDT >=
max(1,N).
VL
VL is DOUBLE
PRECISION array, dimension (LDVL,MM)
On entry, if SIDE = ’L’ or ’B’ and
HOWMNY = ’B’, VL must
contain an N-by-N matrix Q (usually the orthogonal matrix Q
of Schur vectors returned by DHSEQR).
On exit, if SIDE = ’L’ or ’B’, VL
contains:
if HOWMNY = ’A’, the matrix Y of left
eigenvectors of T;
if HOWMNY = ’B’, the matrix Q*Y;
if HOWMNY = ’S’, the left eigenvectors of T
specified by
SELECT, stored consecutively in the columns
of VL, in the same order as their
eigenvalues.
A complex eigenvector corresponding to a complex eigenvalue
is stored in two consecutive columns, the first holding the
real part, and the second the imaginary part.
Not referenced if SIDE = ’R’.
LDVL
LDVL is INTEGER
The leading dimension of the array VL.
LDVL >= 1, and if SIDE = ’L’ or
’B’, LDVL >= N.
VR
VR is DOUBLE
PRECISION array, dimension (LDVR,MM)
On entry, if SIDE = ’R’ or ’B’ and
HOWMNY = ’B’, VR must
contain an N-by-N matrix Q (usually the orthogonal matrix Q
of Schur vectors returned by DHSEQR).
On exit, if SIDE = ’R’ or ’B’, VR
contains:
if HOWMNY = ’A’, the matrix X of right
eigenvectors of T;
if HOWMNY = ’B’, the matrix Q*X;
if HOWMNY = ’S’, the right eigenvectors of T
specified by
SELECT, stored consecutively in the columns
of VR, in the same order as their
eigenvalues.
A complex eigenvector corresponding to a complex eigenvalue
is stored in two consecutive columns, the first holding the
real part and the second the imaginary part.
Not referenced if SIDE = ’L’.
LDVR
LDVR is INTEGER
The leading dimension of the array VR.
LDVR >= 1, and if SIDE = ’R’ or
’B’, LDVR >= N.
MM
MM is INTEGER
The number of columns in the arrays VL and/or VR. MM >=
M.
M
M is INTEGER
The number of columns in the arrays VL and/or VR actually
used to store the eigenvectors.
If HOWMNY = ’A’ or ’B’, M is set to
N.
Each selected real eigenvector occupies one column and each
selected complex eigenvector occupies two columns.
WORK
WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK))
LWORK
LWORK is
INTEGER
The dimension of array WORK. LWORK >= max(1,3*N).
For optimum performance, LWORK >= N + 2*N*NB, where NB is
the optimal blocksize.
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.
INFO
INFO is INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal
value
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Further Details:
The algorithm
used in this program is basically backward (forward)
substitution, with scaling to make the the code robust
against
possible overflow.
Each
eigenvector is normalized so that the element of largest
magnitude has magnitude 1; here the magnitude of a complex
number
(x,y) is taken to be |x| + |y|.
subroutine strevc3 (character side, character howmny, logical, dimension( *) select, integer n, real, dimension( ldt, * ) t, integer ldt, real,dimension( ldvl, * ) vl, integer ldvl, real, dimension( ldvr, * ) vr,integer ldvr, integer mm, integer m, real, dimension( * ) work, integerlwork, integer info)
STREVC3
Purpose:
STREVC3
computes some or all of the right and/or left eigenvectors
of
a real upper quasi-triangular matrix T.
Matrices of this type are produced by the Schur
factorization of
a real general matrix: A = Q*T*Q**T, as computed by
SHSEQR.
The right
eigenvector x and the left eigenvector y of T corresponding
to an eigenvalue w are defined by:
T*x = w*x, (y**T)*T = w*(y**T)
where y**T
denotes the transpose of the vector y.
The eigenvalues are not input to this routine, but are read
directly
from the diagonal blocks of T.
This routine
returns the matrices X and/or Y of right and left
eigenvectors of T, or the products Q*X and/or Q*Y, where Q
is an
input matrix. If Q is the orthogonal factor that reduces a
matrix
A to Schur form T, then Q*X and Q*Y are the matrices of
right and
left eigenvectors of A.
This uses a Level 3 BLAS version of the back transformation.
Parameters
SIDE
SIDE is
CHARACTER*1
= ’R’: compute right eigenvectors only;
= ’L’: compute left eigenvectors only;
= ’B’: compute both right and left
eigenvectors.
HOWMNY
HOWMNY is
CHARACTER*1
= ’A’: compute all right and/or left
eigenvectors;
= ’B’: compute all right and/or left
eigenvectors,
backtransformed by the matrices in VR and/or VL;
= ’S’: compute selected right and/or left
eigenvectors,
as indicated by the logical array SELECT.
SELECT
SELECT is
LOGICAL array, dimension (N)
If HOWMNY = ’S’, SELECT specifies the
eigenvectors to be
computed.
If w(j) is a real eigenvalue, the corresponding real
eigenvector is computed if SELECT(j) is .TRUE..
If w(j) and w(j+1) are the real and imaginary parts of a
complex eigenvalue, the corresponding complex eigenvector is
computed if either SELECT(j) or SELECT(j+1) is .TRUE., and
on exit SELECT(j) is set to .TRUE. and SELECT(j+1) is set to
.FALSE..
Not referenced if HOWMNY = ’A’ or
’B’.
N
N is INTEGER
The order of the matrix T. N >= 0.
T
T is REAL
array, dimension (LDT,N)
The upper quasi-triangular matrix T in Schur canonical
form.
LDT
LDT is INTEGER
The leading dimension of the array T. LDT >=
max(1,N).
VL
VL is REAL
array, dimension (LDVL,MM)
On entry, if SIDE = ’L’ or ’B’ and
HOWMNY = ’B’, VL must
contain an N-by-N matrix Q (usually the orthogonal matrix Q
of Schur vectors returned by SHSEQR).
On exit, if SIDE = ’L’ or ’B’, VL
contains:
if HOWMNY = ’A’, the matrix Y of left
eigenvectors of T;
if HOWMNY = ’B’, the matrix Q*Y;
if HOWMNY = ’S’, the left eigenvectors of T
specified by
SELECT, stored consecutively in the columns
of VL, in the same order as their
eigenvalues.
A complex eigenvector corresponding to a complex eigenvalue
is stored in two consecutive columns, the first holding the
real part, and the second the imaginary part.
Not referenced if SIDE = ’R’.
LDVL
LDVL is INTEGER
The leading dimension of the array VL.
LDVL >= 1, and if SIDE = ’L’ or
’B’, LDVL >= N.
VR
VR is REAL
array, dimension (LDVR,MM)
On entry, if SIDE = ’R’ or ’B’ and
HOWMNY = ’B’, VR must
contain an N-by-N matrix Q (usually the orthogonal matrix Q
of Schur vectors returned by SHSEQR).
On exit, if SIDE = ’R’ or ’B’, VR
contains:
if HOWMNY = ’A’, the matrix X of right
eigenvectors of T;
if HOWMNY = ’B’, the matrix Q*X;
if HOWMNY = ’S’, the right eigenvectors of T
specified by
SELECT, stored consecutively in the columns
of VR, in the same order as their
eigenvalues.
A complex eigenvector corresponding to a complex eigenvalue
is stored in two consecutive columns, the first holding the
real part and the second the imaginary part.
Not referenced if SIDE = ’L’.
LDVR
LDVR is INTEGER
The leading dimension of the array VR.
LDVR >= 1, and if SIDE = ’R’ or
’B’, LDVR >= N.
MM
MM is INTEGER
The number of columns in the arrays VL and/or VR. MM >=
M.
M
M is INTEGER
The number of columns in the arrays VL and/or VR actually
used to store the eigenvectors.
If HOWMNY = ’A’ or ’B’, M is set to
N.
Each selected real eigenvector occupies one column and each
selected complex eigenvector occupies two columns.
WORK
WORK is REAL array, dimension (MAX(1,LWORK))
LWORK
LWORK is
INTEGER
The dimension of array WORK. LWORK >= max(1,3*N).
For optimum performance, LWORK >= N + 2*N*NB, where NB is
the optimal blocksize.
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.
INFO
INFO is INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal
value
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Further Details:
The algorithm
used in this program is basically backward (forward)
substitution, with scaling to make the the code robust
against
possible overflow.
Each
eigenvector is normalized so that the element of largest
magnitude has magnitude 1; here the magnitude of a complex
number
(x,y) is taken to be |x| + |y|.
subroutine ztrevc3 (character side, character howmny, logical, dimension( *) select, integer n, complex*16, dimension( ldt, * ) t, integer ldt,complex*16, dimension( ldvl, * ) vl, integer ldvl, complex*16,dimension( ldvr, * ) vr, integer ldvr, integer mm, integer m,complex*16, dimension( * ) work, integer lwork, double precision,dimension( * ) rwork, integer lrwork, integer info)
ZTREVC3
Purpose:
ZTREVC3
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 = Q*T*Q**H, as computed by
ZHSEQR.
The right
eigenvector x and the left eigenvector y of T corresponding
to an eigenvalue w are defined by:
T*x = w*x, (y**H)*T = w*(y**H)
where y**H
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 Q*X and/or Q*Y, where Q
is an
input matrix. If Q is the unitary factor that reduces a
matrix A to
Schur form T, then Q*X and Q*Y are the matrices of right and
left
eigenvectors of A.
This uses a Level 3 BLAS version of the back transformation.
Parameters
SIDE
SIDE is
CHARACTER*1
= ’R’: compute right eigenvectors only;
= ’L’: compute left eigenvectors only;
= ’B’: compute both right and left
eigenvectors.
HOWMNY
HOWMNY is
CHARACTER*1
= ’A’: compute all right and/or left
eigenvectors;
= ’B’: compute all right and/or left
eigenvectors,
backtransformed using the matrices supplied in
VR and/or VL;
= ’S’: compute selected right and/or left
eigenvectors,
as indicated by the logical array SELECT.
SELECT
SELECT is
LOGICAL array, dimension (N)
If HOWMNY = ’S’, SELECT specifies the
eigenvectors to be
computed.
The eigenvector corresponding to the j-th eigenvalue is
computed if SELECT(j) = .TRUE..
Not referenced if HOWMNY = ’A’ or
’B’.
N
N is INTEGER
The order of the matrix T. N >= 0.
T
T is COMPLEX*16
array, dimension (LDT,N)
The upper triangular matrix T. T is modified, but restored
on exit.
LDT
LDT is INTEGER
The leading dimension of the array T. LDT >=
max(1,N).
VL
VL is
COMPLEX*16 array, dimension (LDVL,MM)
On entry, if SIDE = ’L’ or ’B’ and
HOWMNY = ’B’, VL must
contain an N-by-N matrix Q (usually the unitary matrix Q of
Schur vectors returned by ZHSEQR).
On exit, if SIDE = ’L’ or ’B’, VL
contains:
if HOWMNY = ’A’, the matrix Y of left
eigenvectors of T;
if HOWMNY = ’B’, the matrix Q*Y;
if HOWMNY = ’S’, the left eigenvectors of T
specified by
SELECT, stored consecutively in the columns
of VL, in the same order as their
eigenvalues.
Not referenced if SIDE = ’R’.
LDVL
LDVL is INTEGER
The leading dimension of the array VL.
LDVL >= 1, and if SIDE = ’L’ or
’B’, LDVL >= N.
VR
VR is
COMPLEX*16 array, dimension (LDVR,MM)
On entry, if SIDE = ’R’ or ’B’ and
HOWMNY = ’B’, VR must
contain an N-by-N matrix Q (usually the unitary matrix Q of
Schur vectors returned by ZHSEQR).
On exit, if SIDE = ’R’ or ’B’, VR
contains:
if HOWMNY = ’A’, the matrix X of right
eigenvectors of T;
if HOWMNY = ’B’, the matrix Q*X;
if HOWMNY = ’S’, the right eigenvectors of T
specified by
SELECT, stored consecutively in the columns
of VR, in the same order as their
eigenvalues.
Not referenced if SIDE = ’L’.
LDVR
LDVR is INTEGER
The leading dimension of the array VR.
LDVR >= 1, and if SIDE = ’R’ or
’B’, LDVR >= N.
MM
MM is INTEGER
The number of columns in the arrays VL and/or VR. MM >=
M.
M
M is INTEGER
The number of columns in the arrays VL and/or VR actually
used to store the eigenvectors.
If HOWMNY = ’A’ or ’B’, M is set to
N.
Each selected eigenvector occupies one column.
WORK
WORK is COMPLEX*16 array, dimension (MAX(1,LWORK))
LWORK
LWORK is
INTEGER
The dimension of array WORK. LWORK >= max(1,2*N).
For optimum performance, LWORK >= N + 2*N*NB, where NB is
the optimal blocksize.
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
LRWORK is
INTEGER
The dimension of array RWORK. LRWORK >= max(1,N).
If LRWORK = -1,
then a workspace query is assumed; the routine
only calculates the optimal size of the RWORK array, returns
this value as the first entry of the RWORK array, and no
error
message related to LRWORK is issued by XERBLA.
INFO
INFO is INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal
value
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Further Details:
The algorithm
used in this program is basically backward (forward)
substitution, with scaling to make the the code robust
against
possible overflow.
Each
eigenvector is normalized so that the element of largest
magnitude has magnitude 1; here the magnitude of a complex
number
(x,y) is taken to be |x| + |y|.
Author
Generated automatically by Doxygen for LAPACK from the source code.