Man page - tgsja(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
tgsja
NAMESYNOPSIS
Functions
Detailed Description
Function Documentation
subroutine ctgsja (character jobu, character jobv, character jobq, integerm, integer p, integer n, integer k, integer l, complex, dimension( lda,* ) a, integer lda, complex, dimension( ldb, * ) b, integer ldb, realtola, real tolb, real, dimension( * ) alpha, real, dimension( * ) beta,complex, dimension( ldu, * ) u, integer ldu, complex, dimension( ldv, *) v, integer ldv, complex, dimension( ldq, * ) q, integer ldq, complex,dimension( * ) work, integer ncycle, integer info)
subroutine dtgsja (character jobu, character jobv, character jobq, integerm, integer p, integer n, integer k, integer l, double precision,dimension( lda, * ) a, integer lda, double precision, dimension( ldb, *) b, integer ldb, double precision tola, double precision tolb, doubleprecision, dimension( * ) alpha, double precision, dimension( * ) beta,double precision, dimension( ldu, * ) u, integer ldu, double precision,dimension( ldv, * ) v, integer ldv, double precision, dimension( ldq, *) q, integer ldq, double precision, dimension( * ) work, integerncycle, integer info)
subroutine stgsja (character jobu, character jobv, character jobq, integerm, integer p, integer n, integer k, integer l, real, dimension( lda, *) a, integer lda, real, dimension( ldb, * ) b, integer ldb, real tola,real tolb, real, dimension( * ) alpha, real, dimension( * ) beta, real,dimension( ldu, * ) u, integer ldu, real, dimension( ldv, * ) v,integer ldv, real, dimension( ldq, * ) q, integer ldq, real, dimension(* ) work, integer ncycle, integer info)
subroutine ztgsja (character jobu, character jobv, character jobq, integerm, integer p, integer n, integer k, integer l, complex*16, dimension(lda, * ) a, integer lda, complex*16, dimension( ldb, * ) b, integerldb, double precision tola, double precision tolb, double precision,dimension( * ) alpha, double precision, dimension( * ) beta,complex*16, dimension( ldu, * ) u, integer ldu, complex*16, dimension(ldv, * ) v, integer ldv, complex*16, dimension( ldq, * ) q, integerldq, complex*16, dimension( * ) work, integer ncycle, integer info)
Author
NAME
tgsja - tgsja: generalized SVD of trapezoidal matrices, step in ggsvd3
SYNOPSIS
Functions
subroutine
ctgsja
(jobu, jobv, jobq, m, p, n, k, l, a, lda, b,
ldb, tola, tolb, alpha, beta, u, ldu, v, ldv, q, ldq, work,
ncycle, info)
CTGSJA
subroutine
dtgsja
(jobu, jobv, jobq, m, p, n, k, l,
a, lda, b, ldb, tola, tolb, alpha, beta, u, ldu, v, ldv, q,
ldq, work, ncycle, info)
DTGSJA
subroutine
stgsja
(jobu, jobv, jobq, m, p, n, k, l,
a, lda, b, ldb, tola, tolb, alpha, beta, u, ldu, v, ldv, q,
ldq, work, ncycle, info)
STGSJA
subroutine
ztgsja
(jobu, jobv, jobq, m, p, n, k, l,
a, lda, b, ldb, tola, tolb, alpha, beta, u, ldu, v, ldv, q,
ldq, work, ncycle, info)
ZTGSJA
Detailed Description
Function Documentation
subroutine ctgsja (character jobu, character jobv, character jobq, integerm, integer p, integer n, integer k, integer l, complex, dimension( lda,* ) a, integer lda, complex, dimension( ldb, * ) b, integer ldb, realtola, real tolb, real, dimension( * ) alpha, real, dimension( * ) beta,complex, dimension( ldu, * ) u, integer ldu, complex, dimension( ldv, *) v, integer ldv, complex, dimension( ldq, * ) q, integer ldq, complex,dimension( * ) work, integer ncycle, integer info)
CTGSJA
Purpose:
CTGSJA computes
the generalized singular value decomposition (GSVD)
of two complex upper triangular (or trapezoidal) matrices A
and B.
On entry, it is
assumed that matrices A and B have the following
forms, which may be obtained by the preprocessing subroutine
CGGSVP
from a general M-by-N matrix A and P-by-N matrix B:
N-K-L K L
A = K ( 0 A12 A13 ) if M-K-L >= 0;
L ( 0 0 A23 )
M-K-L ( 0 0 0 )
N-K-L K L
A = K ( 0 A12 A13 ) if M-K-L < 0;
M-K ( 0 0 A23 )
N-K-L K L
B = L ( 0 0 B13 )
P-L ( 0 0 0 )
where the
K-by-K matrix A12 and L-by-L matrix B13 are nonsingular
upper triangular; A23 is L-by-L upper triangular if M-K-L
>= 0,
otherwise A23 is (M-K)-by-L upper trapezoidal.
On exit,
U**H *A*Q = D1*( 0 R ), V**H *B*Q = D2*( 0 R ),
where U, V and
Q are unitary matrices.
R is a nonsingular upper triangular matrix, and D1
and D2 are ββdiagonalββ matrices,
which are of the following
structures:
If M-K-L >= 0,
K L
D1 = K ( I 0 )
L ( 0 C )
M-K-L ( 0 0 )
K L
D2 = L ( 0 S )
P-L ( 0 0 )
N-K-L K L
( 0 R ) = K ( 0 R11 R12 ) K
L ( 0 0 R22 ) L
where
C = diag(
ALPHA(K+1), ... , ALPHA(K+L) ),
S = diag( BETA(K+1), ... , BETA(K+L) ),
C**2 + S**2 = I.
R is stored in A(1:K+L,N-K-L+1:N) on exit.
If M-K-L < 0,
K M-K K+L-M
D1 = K ( I 0 0 )
M-K ( 0 C 0 )
K M-K K+L-M
D2 = M-K ( 0 S 0 )
K+L-M ( 0 0 I )
P-L ( 0 0 0 )
N-K-L K M-K
K+L-M
( 0 R ) = K ( 0 R11 R12 R13 )
M-K ( 0 0 R22 R23 )
K+L-M ( 0 0 0 R33 )
where
C = diag( ALPHA(K+1), ... , ALPHA(M) ),
S = diag( BETA(K+1), ... , BETA(M) ),
C**2 + S**2 = I.
R = ( R11 R12
R13 ) is stored in A(1:M, N-K-L+1:N) and R33 is stored
( 0 R22 R23 )
in B(M-K+1:L,N+M-K-L+1:N) on exit.
The computation
of the unitary transformation matrices U, V or Q
is optional. These matrices may either be formed explicitly,
or they
may be postmultiplied into input matrices U1, V1, or Q1.
Parameters
JOBU
JOBU is
CHARACTER*1
= βUβ: U must contain a unitary matrix U1 on
entry, and
the product U1*U is returned;
= βIβ: U is initialized to the unit matrix, and
the
unitary matrix U is returned;
= βNβ: U is not computed.
JOBV
JOBV is
CHARACTER*1
= βVβ: V must contain a unitary matrix V1 on
entry, and
the product V1*V is returned;
= βIβ: V is initialized to the unit matrix, and
the
unitary matrix V is returned;
= βNβ: V is not computed.
JOBQ
JOBQ is
CHARACTER*1
= βQβ: Q must contain a unitary matrix Q1 on
entry, and
the product Q1*Q is returned;
= βIβ: Q is initialized to the unit matrix, and
the
unitary matrix Q is returned;
= βNβ: Q is not computed.
M
M is INTEGER
The number of rows of the matrix A. M >= 0.
P
P is INTEGER
The number of rows of the matrix B. P >= 0.
N
N is INTEGER
The number of columns of the matrices A and B. N >=
0.
K
K is INTEGER
L
L is INTEGER
K and L specify
the subblocks in the input matrices A and B:
A23 = A(K+1:MIN(K+L,M),N-L+1:N) and B13 = B(1:L,,N-L+1:N)
of A and B, whose GSVD is going to be computed by CTGSJA.
See Further Details.
A
A is COMPLEX
array, dimension (LDA,N)
On entry, the M-by-N matrix A.
On exit, A(N-K+1:N,1:MIN(K+L,M) ) contains the triangular
matrix R or part of R. See Purpose for details.
LDA
LDA is INTEGER
The leading dimension of the array A. LDA >=
max(1,M).
B
B is COMPLEX
array, dimension (LDB,N)
On entry, the P-by-N matrix B.
On exit, if necessary, B(M-K+1:L,N+M-K-L+1:N) contains
a part of R. See Purpose for details.
LDB
LDB is INTEGER
The leading dimension of the array B. LDB >=
max(1,P).
TOLA
TOLA is REAL
TOLB
TOLB is REAL
TOLA and TOLB
are the convergence criteria for the Jacobi-
Kogbetliantz iteration procedure. Generally, they are the
same as used in the preprocessing step, say
TOLA = MAX(M,N)*norm(A)*MACHEPS,
TOLB = MAX(P,N)*norm(B)*MACHEPS.
ALPHA
ALPHA is REAL array, dimension (N)
BETA
BETA is REAL array, dimension (N)
On exit, ALPHA
and BETA contain the generalized singular
value pairs of A and B;
ALPHA(1:K) = 1,
BETA(1:K) = 0,
and if M-K-L >= 0,
ALPHA(K+1:K+L) = diag(C),
BETA(K+1:K+L) = diag(S),
or if M-K-L < 0,
ALPHA(K+1:M)= C, ALPHA(M+1:K+L)= 0
BETA(K+1:M) = S, BETA(M+1:K+L) = 1.
Furthermore, if K+L < N,
ALPHA(K+L+1:N) = 0
BETA(K+L+1:N) = 0.
U
U is COMPLEX
array, dimension (LDU,M)
On entry, if JOBU = βUβ, U must contain a matrix
U1 (usually
the unitary matrix returned by CGGSVP).
On exit,
if JOBU = βIβ, U contains the unitary matrix U;
if JOBU = βUβ, U contains the product U1*U.
If JOBU = βNβ, U is not referenced.
LDU
LDU is INTEGER
The leading dimension of the array U. LDU >= max(1,M) if
JOBU = βUβ; LDU >= 1 otherwise.
V
V is COMPLEX
array, dimension (LDV,P)
On entry, if JOBV = βVβ, V must contain a matrix
V1 (usually
the unitary matrix returned by CGGSVP).
On exit,
if JOBV = βIβ, V contains the unitary matrix V;
if JOBV = βVβ, V contains the product V1*V.
If JOBV = βNβ, V is not referenced.
LDV
LDV is INTEGER
The leading dimension of the array V. LDV >= max(1,P) if
JOBV = βVβ; LDV >= 1 otherwise.
Q
Q is COMPLEX
array, dimension (LDQ,N)
On entry, if JOBQ = βQβ, Q must contain a matrix
Q1 (usually
the unitary matrix returned by CGGSVP).
On exit,
if JOBQ = βIβ, Q contains the unitary matrix Q;
if JOBQ = βQβ, Q contains the product Q1*Q.
If JOBQ = βNβ, Q is not referenced.
LDQ
LDQ is INTEGER
The leading dimension of the array Q. LDQ >= max(1,N) if
JOBQ = βQβ; LDQ >= 1 otherwise.
WORK
WORK is COMPLEX array, dimension (2*N)
NCYCLE
NCYCLE is
INTEGER
The number of cycles required for convergence.
INFO
INFO is INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal
value.
= 1: the procedure does not converge after MAXIT cycles.
Internal Parameters:
MAXIT INTEGER
MAXIT specifies the total loops that the iterative procedure
may take. If after MAXIT cycles, the routine fails to
converge, we return INFO = 1.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Further Details:
CTGSJA
essentially uses a variant of Kogbetliantz algorithm to
reduce
min(L,M-K)-by-L triangular (or trapezoidal) matrix A23 and
L-by-L
matrix B13 to the form:
U1**H *A13*Q1 = C1*R1; V1**H *B13*Q1 = S1*R1,
where U1, V1
and Q1 are unitary matrix.
C1 and S1 are diagonal matrices satisfying
C1**2 + S1**2 = I,
and R1 is an L-by-L nonsingular upper triangular matrix.
subroutine dtgsja (character jobu, character jobv, character jobq, integerm, integer p, integer n, integer k, integer l, double precision,dimension( lda, * ) a, integer lda, double precision, dimension( ldb, *) b, integer ldb, double precision tola, double precision tolb, doubleprecision, dimension( * ) alpha, double precision, dimension( * ) beta,double precision, dimension( ldu, * ) u, integer ldu, double precision,dimension( ldv, * ) v, integer ldv, double precision, dimension( ldq, *) q, integer ldq, double precision, dimension( * ) work, integerncycle, integer info)
DTGSJA
Purpose:
DTGSJA computes
the generalized singular value decomposition (GSVD)
of two real upper triangular (or trapezoidal) matrices A and
B.
On entry, it is
assumed that matrices A and B have the following
forms, which may be obtained by the preprocessing subroutine
DGGSVP
from a general M-by-N matrix A and P-by-N matrix B:
N-K-L K L
A = K ( 0 A12 A13 ) if M-K-L >= 0;
L ( 0 0 A23 )
M-K-L ( 0 0 0 )
N-K-L K L
A = K ( 0 A12 A13 ) if M-K-L < 0;
M-K ( 0 0 A23 )
N-K-L K L
B = L ( 0 0 B13 )
P-L ( 0 0 0 )
where the
K-by-K matrix A12 and L-by-L matrix B13 are nonsingular
upper triangular; A23 is L-by-L upper triangular if M-K-L
>= 0,
otherwise A23 is (M-K)-by-L upper trapezoidal.
On exit,
U**T *A*Q = D1*( 0 R ), V**T *B*Q = D2*( 0 R ),
where U, V and
Q are orthogonal matrices.
R is a nonsingular upper triangular matrix, and D1 and D2
are
ββdiagonalββ matrices, which are of
the following structures:
If M-K-L >= 0,
K L
D1 = K ( I 0 )
L ( 0 C )
M-K-L ( 0 0 )
K L
D2 = L ( 0 S )
P-L ( 0 0 )
N-K-L K L
( 0 R ) = K ( 0 R11 R12 ) K
L ( 0 0 R22 ) L
where
C = diag(
ALPHA(K+1), ... , ALPHA(K+L) ),
S = diag( BETA(K+1), ... , BETA(K+L) ),
C**2 + S**2 = I.
R is stored in A(1:K+L,N-K-L+1:N) on exit.
If M-K-L < 0,
K M-K K+L-M
D1 = K ( I 0 0 )
M-K ( 0 C 0 )
K M-K K+L-M
D2 = M-K ( 0 S 0 )
K+L-M ( 0 0 I )
P-L ( 0 0 0 )
N-K-L K M-K
K+L-M
( 0 R ) = K ( 0 R11 R12 R13 )
M-K ( 0 0 R22 R23 )
K+L-M ( 0 0 0 R33 )
where
C = diag( ALPHA(K+1), ... , ALPHA(M) ),
S = diag( BETA(K+1), ... , BETA(M) ),
C**2 + S**2 = I.
R = ( R11 R12
R13 ) is stored in A(1:M, N-K-L+1:N) and R33 is stored
( 0 R22 R23 )
in B(M-K+1:L,N+M-K-L+1:N) on exit.
The computation
of the orthogonal transformation matrices U, V or Q
is optional. These matrices may either be formed explicitly,
or they
may be postmultiplied into input matrices U1, V1, or Q1.
Parameters
JOBU
JOBU is
CHARACTER*1
= βUβ: U must contain an orthogonal matrix U1 on
entry, and
the product U1*U is returned;
= βIβ: U is initialized to the unit matrix, and
the
orthogonal matrix U is returned;
= βNβ: U is not computed.
JOBV
JOBV is
CHARACTER*1
= βVβ: V must contain an orthogonal matrix V1 on
entry, and
the product V1*V is returned;
= βIβ: V is initialized to the unit matrix, and
the
orthogonal matrix V is returned;
= βNβ: V is not computed.
JOBQ
JOBQ is
CHARACTER*1
= βQβ: Q must contain an orthogonal matrix Q1 on
entry, and
the product Q1*Q is returned;
= βIβ: Q is initialized to the unit matrix, and
the
orthogonal matrix Q is returned;
= βNβ: Q is not computed.
M
M is INTEGER
The number of rows of the matrix A. M >= 0.
P
P is INTEGER
The number of rows of the matrix B. P >= 0.
N
N is INTEGER
The number of columns of the matrices A and B. N >=
0.
K
K is INTEGER
L
L is INTEGER
K and L specify
the subblocks in the input matrices A and B:
A23 = A(K+1:MIN(K+L,M),N-L+1:N) and B13 = B(1:L,N-L+1:N)
of A and B, whose GSVD is going to be computed by DTGSJA.
See Further Details.
A
A is DOUBLE
PRECISION array, dimension (LDA,N)
On entry, the M-by-N matrix A.
On exit, A(N-K+1:N,1:MIN(K+L,M) ) contains the triangular
matrix R or part of R. See Purpose for details.
LDA
LDA is INTEGER
The leading dimension of the array A. LDA >=
max(1,M).
B
B is DOUBLE
PRECISION array, dimension (LDB,N)
On entry, the P-by-N matrix B.
On exit, if necessary, B(M-K+1:L,N+M-K-L+1:N) contains
a part of R. See Purpose for details.
LDB
LDB is INTEGER
The leading dimension of the array B. LDB >=
max(1,P).
TOLA
TOLA is DOUBLE PRECISION
TOLB
TOLB is DOUBLE PRECISION
TOLA and TOLB
are the convergence criteria for the Jacobi-
Kogbetliantz iteration procedure. Generally, they are the
same as used in the preprocessing step, say
TOLA = max(M,N)*norm(A)*MAZHEPS,
TOLB = max(P,N)*norm(B)*MAZHEPS.
ALPHA
ALPHA is DOUBLE PRECISION array, dimension (N)
BETA
BETA is DOUBLE PRECISION array, dimension (N)
On exit, ALPHA
and BETA contain the generalized singular
value pairs of A and B;
ALPHA(1:K) = 1,
BETA(1:K) = 0,
and if M-K-L >= 0,
ALPHA(K+1:K+L) = diag(C),
BETA(K+1:K+L) = diag(S),
or if M-K-L < 0,
ALPHA(K+1:M)= C, ALPHA(M+1:K+L)= 0
BETA(K+1:M) = S, BETA(M+1:K+L) = 1.
Furthermore, if K+L < N,
ALPHA(K+L+1:N) = 0 and
BETA(K+L+1:N) = 0.
U
U is DOUBLE
PRECISION array, dimension (LDU,M)
On entry, if JOBU = βUβ, U must contain a matrix
U1 (usually
the orthogonal matrix returned by DGGSVP).
On exit,
if JOBU = βIβ, U contains the orthogonal matrix
U;
if JOBU = βUβ, U contains the product U1*U.
If JOBU = βNβ, U is not referenced.
LDU
LDU is INTEGER
The leading dimension of the array U. LDU >= max(1,M) if
JOBU = βUβ; LDU >= 1 otherwise.
V
V is DOUBLE
PRECISION array, dimension (LDV,P)
On entry, if JOBV = βVβ, V must contain a matrix
V1 (usually
the orthogonal matrix returned by DGGSVP).
On exit,
if JOBV = βIβ, V contains the orthogonal matrix
V;
if JOBV = βVβ, V contains the product V1*V.
If JOBV = βNβ, V is not referenced.
LDV
LDV is INTEGER
The leading dimension of the array V. LDV >= max(1,P) if
JOBV = βVβ; LDV >= 1 otherwise.
Q
Q is DOUBLE
PRECISION array, dimension (LDQ,N)
On entry, if JOBQ = βQβ, Q must contain a matrix
Q1 (usually
the orthogonal matrix returned by DGGSVP).
On exit,
if JOBQ = βIβ, Q contains the orthogonal matrix
Q;
if JOBQ = βQβ, Q contains the product Q1*Q.
If JOBQ = βNβ, Q is not referenced.
LDQ
LDQ is INTEGER
The leading dimension of the array Q. LDQ >= max(1,N) if
JOBQ = βQβ; LDQ >= 1 otherwise.
WORK
WORK is DOUBLE PRECISION array, dimension (2*N)
NCYCLE
NCYCLE is
INTEGER
The number of cycles required for convergence.
INFO
INFO is INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal
value.
= 1: the procedure does not converge after MAXIT cycles.
Internal
Parameters
===================
MAXIT INTEGER
MAXIT specifies the total loops that the iterative procedure
may take. If after MAXIT cycles, the routine fails to
converge, we return INFO = 1..fi
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Further Details:
DTGSJA
essentially uses a variant of Kogbetliantz algorithm to
reduce
min(L,M-K)-by-L triangular (or trapezoidal) matrix A23 and
L-by-L
matrix B13 to the form:
U1**T *A13*Q1 = C1*R1; V1**T *B13*Q1 = S1*R1,
where U1, V1
and Q1 are orthogonal matrix, and Z**T is the transpose
of Z. C1 and S1 are diagonal matrices satisfying
C1**2 + S1**2 = I,
and R1 is an L-by-L nonsingular upper triangular matrix.
subroutine stgsja (character jobu, character jobv, character jobq, integerm, integer p, integer n, integer k, integer l, real, dimension( lda, *) a, integer lda, real, dimension( ldb, * ) b, integer ldb, real tola,real tolb, real, dimension( * ) alpha, real, dimension( * ) beta, real,dimension( ldu, * ) u, integer ldu, real, dimension( ldv, * ) v,integer ldv, real, dimension( ldq, * ) q, integer ldq, real, dimension(* ) work, integer ncycle, integer info)
STGSJA
Purpose:
STGSJA computes
the generalized singular value decomposition (GSVD)
of two real upper triangular (or trapezoidal) matrices A and
B.
On entry, it is
assumed that matrices A and B have the following
forms, which may be obtained by the preprocessing subroutine
SGGSVP
from a general M-by-N matrix A and P-by-N matrix B:
N-K-L K L
A = K ( 0 A12 A13 ) if M-K-L >= 0;
L ( 0 0 A23 )
M-K-L ( 0 0 0 )
N-K-L K L
A = K ( 0 A12 A13 ) if M-K-L < 0;
M-K ( 0 0 A23 )
N-K-L K L
B = L ( 0 0 B13 )
P-L ( 0 0 0 )
where the
K-by-K matrix A12 and L-by-L matrix B13 are nonsingular
upper triangular; A23 is L-by-L upper triangular if M-K-L
>= 0,
otherwise A23 is (M-K)-by-L upper trapezoidal.
On exit,
U**T *A*Q = D1*( 0 R ), V**T *B*Q = D2*( 0 R ),
where U, V and
Q are orthogonal matrices.
R is a nonsingular upper triangular matrix, and D1 and D2
are
ββdiagonalββ matrices, which are of
the following structures:
If M-K-L >= 0,
K L
D1 = K ( I 0 )
L ( 0 C )
M-K-L ( 0 0 )
K L
D2 = L ( 0 S )
P-L ( 0 0 )
N-K-L K L
( 0 R ) = K ( 0 R11 R12 ) K
L ( 0 0 R22 ) L
where
C = diag(
ALPHA(K+1), ... , ALPHA(K+L) ),
S = diag( BETA(K+1), ... , BETA(K+L) ),
C**2 + S**2 = I.
R is stored in A(1:K+L,N-K-L+1:N) on exit.
If M-K-L < 0,
K M-K K+L-M
D1 = K ( I 0 0 )
M-K ( 0 C 0 )
K M-K K+L-M
D2 = M-K ( 0 S 0 )
K+L-M ( 0 0 I )
P-L ( 0 0 0 )
N-K-L K M-K
K+L-M
( 0 R ) = K ( 0 R11 R12 R13 )
M-K ( 0 0 R22 R23 )
K+L-M ( 0 0 0 R33 )
where
C = diag( ALPHA(K+1), ... , ALPHA(M) ),
S = diag( BETA(K+1), ... , BETA(M) ),
C**2 + S**2 = I.
R = ( R11 R12
R13 ) is stored in A(1:M, N-K-L+1:N) and R33 is stored
( 0 R22 R23 )
in B(M-K+1:L,N+M-K-L+1:N) on exit.
The computation
of the orthogonal transformation matrices U, V or Q
is optional. These matrices may either be formed explicitly,
or they
may be postmultiplied into input matrices U1, V1, or Q1.
Parameters
JOBU
JOBU is
CHARACTER*1
= βUβ: U must contain an orthogonal matrix U1 on
entry, and
the product U1*U is returned;
= βIβ: U is initialized to the unit matrix, and
the
orthogonal matrix U is returned;
= βNβ: U is not computed.
JOBV
JOBV is
CHARACTER*1
= βVβ: V must contain an orthogonal matrix V1 on
entry, and
the product V1*V is returned;
= βIβ: V is initialized to the unit matrix, and
the
orthogonal matrix V is returned;
= βNβ: V is not computed.
JOBQ
JOBQ is
CHARACTER*1
= βQβ: Q must contain an orthogonal matrix Q1 on
entry, and
the product Q1*Q is returned;
= βIβ: Q is initialized to the unit matrix, and
the
orthogonal matrix Q is returned;
= βNβ: Q is not computed.
M
M is INTEGER
The number of rows of the matrix A. M >= 0.
P
P is INTEGER
The number of rows of the matrix B. P >= 0.
N
N is INTEGER
The number of columns of the matrices A and B. N >=
0.
K
K is INTEGER
L
L is INTEGER
K and L specify
the subblocks in the input matrices A and B:
A23 = A(K+1:MIN(K+L,M),N-L+1:N) and B13 = B(1:L,N-L+1:N)
of A and B, whose GSVD is going to be computed by STGSJA.
See Further Details.
A
A is REAL
array, dimension (LDA,N)
On entry, the M-by-N matrix A.
On exit, A(N-K+1:N,1:MIN(K+L,M) ) contains the triangular
matrix R or part of R. See Purpose for details.
LDA
LDA is INTEGER
The leading dimension of the array A. LDA >=
max(1,M).
B
B is REAL
array, dimension (LDB,N)
On entry, the P-by-N matrix B.
On exit, if necessary, B(M-K+1:L,N+M-K-L+1:N) contains
a part of R. See Purpose for details.
LDB
LDB is INTEGER
The leading dimension of the array B. LDB >=
max(1,P).
TOLA
TOLA is REAL
TOLB
TOLB is REAL
TOLA and TOLB
are the convergence criteria for the Jacobi-
Kogbetliantz iteration procedure. Generally, they are the
same as used in the preprocessing step, say
TOLA = max(M,N)*norm(A)*MACHEPS,
TOLB = max(P,N)*norm(B)*MACHEPS.
ALPHA
ALPHA is REAL array, dimension (N)
BETA
BETA is REAL array, dimension (N)
On exit, ALPHA
and BETA contain the generalized singular
value pairs of A and B;
ALPHA(1:K) = 1,
BETA(1:K) = 0,
and if M-K-L >= 0,
ALPHA(K+1:K+L) = diag(C),
BETA(K+1:K+L) = diag(S),
or if M-K-L < 0,
ALPHA(K+1:M)= C, ALPHA(M+1:K+L)= 0
BETA(K+1:M) = S, BETA(M+1:K+L) = 1.
Furthermore, if K+L < N,
ALPHA(K+L+1:N) = 0 and
BETA(K+L+1:N) = 0.
U
U is REAL
array, dimension (LDU,M)
On entry, if JOBU = βUβ, U must contain a matrix
U1 (usually
the orthogonal matrix returned by SGGSVP).
On exit,
if JOBU = βIβ, U contains the orthogonal matrix
U;
if JOBU = βUβ, U contains the product U1*U.
If JOBU = βNβ, U is not referenced.
LDU
LDU is INTEGER
The leading dimension of the array U. LDU >= max(1,M) if
JOBU = βUβ; LDU >= 1 otherwise.
V
V is REAL
array, dimension (LDV,P)
On entry, if JOBV = βVβ, V must contain a matrix
V1 (usually
the orthogonal matrix returned by SGGSVP).
On exit,
if JOBV = βIβ, V contains the orthogonal matrix
V;
if JOBV = βVβ, V contains the product V1*V.
If JOBV = βNβ, V is not referenced.
LDV
LDV is INTEGER
The leading dimension of the array V. LDV >= max(1,P) if
JOBV = βVβ; LDV >= 1 otherwise.
Q
Q is REAL
array, dimension (LDQ,N)
On entry, if JOBQ = βQβ, Q must contain a matrix
Q1 (usually
the orthogonal matrix returned by SGGSVP).
On exit,
if JOBQ = βIβ, Q contains the orthogonal matrix
Q;
if JOBQ = βQβ, Q contains the product Q1*Q.
If JOBQ = βNβ, Q is not referenced.
LDQ
LDQ is INTEGER
The leading dimension of the array Q. LDQ >= max(1,N) if
JOBQ = βQβ; LDQ >= 1 otherwise.
WORK
WORK is REAL array, dimension (2*N)
NCYCLE
NCYCLE is
INTEGER
The number of cycles required for convergence.
INFO
INFO is INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal
value.
= 1: the procedure does not converge after MAXIT cycles.
Internal
Parameters
===================
MAXIT INTEGER
MAXIT specifies the total loops that the iterative procedure
may take. If after MAXIT cycles, the routine fails to
converge, we return INFO = 1..fi
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Further Details:
STGSJA
essentially uses a variant of Kogbetliantz algorithm to
reduce
min(L,M-K)-by-L triangular (or trapezoidal) matrix A23 and
L-by-L
matrix B13 to the form:
U1**T *A13*Q1 = C1*R1; V1**T *B13*Q1 = S1*R1,
where U1, V1
and Q1 are orthogonal matrix, and Z**T is the transpose
of Z. C1 and S1 are diagonal matrices satisfying
C1**2 + S1**2 = I,
and R1 is an L-by-L nonsingular upper triangular matrix.
subroutine ztgsja (character jobu, character jobv, character jobq, integerm, integer p, integer n, integer k, integer l, complex*16, dimension(lda, * ) a, integer lda, complex*16, dimension( ldb, * ) b, integerldb, double precision tola, double precision tolb, double precision,dimension( * ) alpha, double precision, dimension( * ) beta,complex*16, dimension( ldu, * ) u, integer ldu, complex*16, dimension(ldv, * ) v, integer ldv, complex*16, dimension( ldq, * ) q, integerldq, complex*16, dimension( * ) work, integer ncycle, integer info)
ZTGSJA
Purpose:
ZTGSJA computes
the generalized singular value decomposition (GSVD)
of two complex upper triangular (or trapezoidal) matrices A
and B.
On entry, it is
assumed that matrices A and B have the following
forms, which may be obtained by the preprocessing subroutine
ZGGSVP
from a general M-by-N matrix A and P-by-N matrix B:
N-K-L K L
A = K ( 0 A12 A13 ) if M-K-L >= 0;
L ( 0 0 A23 )
M-K-L ( 0 0 0 )
N-K-L K L
A = K ( 0 A12 A13 ) if M-K-L < 0;
M-K ( 0 0 A23 )
N-K-L K L
B = L ( 0 0 B13 )
P-L ( 0 0 0 )
where the
K-by-K matrix A12 and L-by-L matrix B13 are nonsingular
upper triangular; A23 is L-by-L upper triangular if M-K-L
>= 0,
otherwise A23 is (M-K)-by-L upper trapezoidal.
On exit,
U**H *A*Q = D1*( 0 R ), V**H *B*Q = D2*( 0 R ),
where U, V and
Q are unitary matrices.
R is a nonsingular upper triangular matrix, and D1
and D2 are ββdiagonalββ matrices,
which are of the following
structures:
If M-K-L >= 0,
K L
D1 = K ( I 0 )
L ( 0 C )
M-K-L ( 0 0 )
K L
D2 = L ( 0 S )
P-L ( 0 0 )
N-K-L K L
( 0 R ) = K ( 0 R11 R12 ) K
L ( 0 0 R22 ) L
where
C = diag(
ALPHA(K+1), ... , ALPHA(K+L) ),
S = diag( BETA(K+1), ... , BETA(K+L) ),
C**2 + S**2 = I.
R is stored in A(1:K+L,N-K-L+1:N) on exit.
If M-K-L < 0,
K M-K K+L-M
D1 = K ( I 0 0 )
M-K ( 0 C 0 )
K M-K K+L-M
D2 = M-K ( 0 S 0 )
K+L-M ( 0 0 I )
P-L ( 0 0 0 )
N-K-L K M-K
K+L-M
( 0 R ) = K ( 0 R11 R12 R13 )
M-K ( 0 0 R22 R23 )
K+L-M ( 0 0 0 R33 )
where
C = diag( ALPHA(K+1), ... , ALPHA(M) ),
S = diag( BETA(K+1), ... , BETA(M) ),
C**2 + S**2 = I.
R = ( R11 R12
R13 ) is stored in A(1:M, N-K-L+1:N) and R33 is stored
( 0 R22 R23 )
in B(M-K+1:L,N+M-K-L+1:N) on exit.
The computation
of the unitary transformation matrices U, V or Q
is optional. These matrices may either be formed explicitly,
or they
may be postmultiplied into input matrices U1, V1, or Q1.
Parameters
JOBU
JOBU is
CHARACTER*1
= βUβ: U must contain a unitary matrix U1 on
entry, and
the product U1*U is returned;
= βIβ: U is initialized to the unit matrix, and
the
unitary matrix U is returned;
= βNβ: U is not computed.
JOBV
JOBV is
CHARACTER*1
= βVβ: V must contain a unitary matrix V1 on
entry, and
the product V1*V is returned;
= βIβ: V is initialized to the unit matrix, and
the
unitary matrix V is returned;
= βNβ: V is not computed.
JOBQ
JOBQ is
CHARACTER*1
= βQβ: Q must contain a unitary matrix Q1 on
entry, and
the product Q1*Q is returned;
= βIβ: Q is initialized to the unit matrix, and
the
unitary matrix Q is returned;
= βNβ: Q is not computed.
M
M is INTEGER
The number of rows of the matrix A. M >= 0.
P
P is INTEGER
The number of rows of the matrix B. P >= 0.
N
N is INTEGER
The number of columns of the matrices A and B. N >=
0.
K
K is INTEGER
L
L is INTEGER
K and L specify
the subblocks in the input matrices A and B:
A23 = A(K+1:MIN(K+L,M),N-L+1:N) and B13 = B(1:L,,N-L+1:N)
of A and B, whose GSVD is going to be computed by ZTGSJA.
See Further Details.
A
A is COMPLEX*16
array, dimension (LDA,N)
On entry, the M-by-N matrix A.
On exit, A(N-K+1:N,1:MIN(K+L,M) ) contains the triangular
matrix R or part of R. See Purpose for details.
LDA
LDA is INTEGER
The leading dimension of the array A. LDA >=
max(1,M).
B
B is COMPLEX*16
array, dimension (LDB,N)
On entry, the P-by-N matrix B.
On exit, if necessary, B(M-K+1:L,N+M-K-L+1:N) contains
a part of R. See Purpose for details.
LDB
LDB is INTEGER
The leading dimension of the array B. LDB >=
max(1,P).
TOLA
TOLA is DOUBLE PRECISION
TOLB
TOLB is DOUBLE PRECISION
TOLA and TOLB
are the convergence criteria for the Jacobi-
Kogbetliantz iteration procedure. Generally, they are the
same as used in the preprocessing step, say
TOLA = MAX(M,N)*norm(A)*MAZHEPS,
TOLB = MAX(P,N)*norm(B)*MAZHEPS.
ALPHA
ALPHA is DOUBLE PRECISION array, dimension (N)
BETA
BETA is DOUBLE PRECISION array, dimension (N)
On exit, ALPHA
and BETA contain the generalized singular
value pairs of A and B;
ALPHA(1:K) = 1,
BETA(1:K) = 0,
and if M-K-L >= 0,
ALPHA(K+1:K+L) = diag(C),
BETA(K+1:K+L) = diag(S),
or if M-K-L < 0,
ALPHA(K+1:M)= C, ALPHA(M+1:K+L)= 0
BETA(K+1:M) = S, BETA(M+1:K+L) = 1.
Furthermore, if K+L < N,
ALPHA(K+L+1:N) = 0 and
BETA(K+L+1:N) = 0.
U
U is COMPLEX*16
array, dimension (LDU,M)
On entry, if JOBU = βUβ, U must contain a matrix
U1 (usually
the unitary matrix returned by ZGGSVP).
On exit,
if JOBU = βIβ, U contains the unitary matrix U;
if JOBU = βUβ, U contains the product U1*U.
If JOBU = βNβ, U is not referenced.
LDU
LDU is INTEGER
The leading dimension of the array U. LDU >= max(1,M) if
JOBU = βUβ; LDU >= 1 otherwise.
V
V is COMPLEX*16
array, dimension (LDV,P)
On entry, if JOBV = βVβ, V must contain a matrix
V1 (usually
the unitary matrix returned by ZGGSVP).
On exit,
if JOBV = βIβ, V contains the unitary matrix V;
if JOBV = βVβ, V contains the product V1*V.
If JOBV = βNβ, V is not referenced.
LDV
LDV is INTEGER
The leading dimension of the array V. LDV >= max(1,P) if
JOBV = βVβ; LDV >= 1 otherwise.
Q
Q is COMPLEX*16
array, dimension (LDQ,N)
On entry, if JOBQ = βQβ, Q must contain a matrix
Q1 (usually
the unitary matrix returned by ZGGSVP).
On exit,
if JOBQ = βIβ, Q contains the unitary matrix Q;
if JOBQ = βQβ, Q contains the product Q1*Q.
If JOBQ = βNβ, Q is not referenced.
LDQ
LDQ is INTEGER
The leading dimension of the array Q. LDQ >= max(1,N) if
JOBQ = βQβ; LDQ >= 1 otherwise.
WORK
WORK is COMPLEX*16 array, dimension (2*N)
NCYCLE
NCYCLE is
INTEGER
The number of cycles required for convergence.
INFO
INFO is INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal
value.
= 1: the procedure does not converge after MAXIT cycles.
Internal Parameters:
MAXIT INTEGER
MAXIT specifies the total loops that the iterative procedure
may take. If after MAXIT cycles, the routine fails to
converge, we return INFO = 1.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Further Details:
ZTGSJA
essentially uses a variant of Kogbetliantz algorithm to
reduce
min(L,M-K)-by-L triangular (or trapezoidal) matrix A23 and
L-by-L
matrix B13 to the form:
U1**H *A13*Q1 = C1*R1; V1**H *B13*Q1 = S1*R1,
where U1, V1
and Q1 are unitary matrix.
C1 and S1 are diagonal matrices satisfying
C1**2 + S1**2 = I,
and R1 is an L-by-L nonsingular upper triangular matrix.
Author
Generated automatically by Doxygen for LAPACK from the source code.