Man page - unbdb2(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
unbdb2
NAMESYNOPSIS
Functions
Detailed Description
Function Documentation
subroutine cunbdb2 (integer m, integer p, integer q, complex,dimension(ldx11,*) x11, integer ldx11, complex, dimension(ldx21,*) x21,integer ldx21, real, dimension(*) theta, real, dimension(*) phi,complex, dimension(*) taup1, complex, dimension(*) taup2, complex,dimension(*) tauq1, complex, dimension(*) work, integer lwork, integerinfo)
subroutine dorbdb2 (integer m, integer p, integer q, double precision,dimension(ldx11,*) x11, integer ldx11, double precision,dimension(ldx21,*) x21, integer ldx21, double precision, dimension(*)theta, double precision, dimension(*) phi, double precision,dimension(*) taup1, double precision, dimension(*) taup2, doubleprecision, dimension(*) tauq1, double precision, dimension(*) work,integer lwork, integer info)
subroutine sorbdb2 (integer m, integer p, integer q, real,dimension(ldx11,*) x11, integer ldx11, real, dimension(ldx21,*) x21,integer ldx21, real, dimension(*) theta, real, dimension(*) phi, real,dimension(*) taup1, real, dimension(*) taup2, real, dimension(*) tauq1,real, dimension(*) work, integer lwork, integer info)
subroutine zunbdb2 (integer m, integer p, integer q, complex*16,dimension(ldx11,*) x11, integer ldx11, complex*16, dimension(ldx21,*)x21, integer ldx21, double precision, dimension(*) theta, doubleprecision, dimension(*) phi, complex*16, dimension(*) taup1,complex*16, dimension(*) taup2, complex*16, dimension(*) tauq1,complex*16, dimension(*) work, integer lwork, integer info)
Author
NAME
unbdb2 - {un,or}bdb2: step in uncsd2by1
SYNOPSIS
Functions
subroutine
cunbdb2
(m, p, q, x11, ldx11, x21, ldx21, theta, phi,
taup1, taup2, tauq1, work, lwork, info)
CUNBDB2
subroutine
dorbdb2
(m, p, q, x11, ldx11, x21, ldx21,
theta, phi, taup1, taup2, tauq1, work, lwork, info)
DORBDB2
subroutine
sorbdb2
(m, p, q, x11, ldx11, x21, ldx21,
theta, phi, taup1, taup2, tauq1, work, lwork, info)
SORBDB2
subroutine
zunbdb2
(m, p, q, x11, ldx11, x21, ldx21,
theta, phi, taup1, taup2, tauq1, work, lwork, info)
ZUNBDB2
Detailed Description
Function Documentation
subroutine cunbdb2 (integer m, integer p, integer q, complex,dimension(ldx11,*) x11, integer ldx11, complex, dimension(ldx21,*) x21,integer ldx21, real, dimension(*) theta, real, dimension(*) phi,complex, dimension(*) taup1, complex, dimension(*) taup2, complex,dimension(*) tauq1, complex, dimension(*) work, integer lwork, integerinfo)
CUNBDB2
Purpose:
CUNBDB2
simultaneously bidiagonalizes the blocks of a tall and
skinny
matrix X with orthonormal columns:
[ B11 ]
[ X11 ] [ P1 | ] [ 0 ]
[-----] = [---------] [-----] Q1**T .
[ X21 ] [ | P2 ] [ B21 ]
[ 0 ]
X11 is P-by-Q,
and X21 is (M-P)-by-Q. P must be no larger than M-P,
Q, or M-Q. Routines CUNBDB1, CUNBDB3, and CUNBDB4 handle
cases in
which P is not the minimum dimension.
The unitary
matrices P1, P2, and Q1 are P-by-P, (M-P)-by-(M-P),
and (M-Q)-by-(M-Q), respectively. They are represented
implicitly by
Householder vectors.
B11 and B12 are
P-by-P bidiagonal matrices represented implicitly by
angles THETA, PHI.
Parameters
M
M is INTEGER
The number of rows X11 plus the number of rows in X21.
P
P is INTEGER
The number of rows in X11. 0 <= P <=
min(M-P,Q,M-Q).
Q
Q is INTEGER
The number of columns in X11 and X21. 0 <= Q <= M.
X11
X11 is COMPLEX
array, dimension (LDX11,Q)
On entry, the top block of the matrix X to be reduced. On
exit, the columns of tril(X11) specify reflectors for P1 and
the rows of triu(X11,1) specify reflectors for Q1.
LDX11
LDX11 is
INTEGER
The leading dimension of X11. LDX11 >= P.
X21
X21 is COMPLEX
array, dimension (LDX21,Q)
On entry, the bottom block of the matrix X to be reduced. On
exit, the columns of tril(X21) specify reflectors for
P2.
LDX21
LDX21 is
INTEGER
The leading dimension of X21. LDX21 >= M-P.
THETA
THETA is REAL
array, dimension (Q)
The entries of the bidiagonal blocks B11, B21 are defined by
THETA and PHI. See Further Details.
PHI
PHI is REAL
array, dimension (Q-1)
The entries of the bidiagonal blocks B11, B21 are defined by
THETA and PHI. See Further Details.
TAUP1
TAUP1 is
COMPLEX array, dimension (P-1)
The scalar factors of the elementary reflectors that define
P1.
TAUP2
TAUP2 is
COMPLEX array, dimension (Q)
The scalar factors of the elementary reflectors that define
P2.
TAUQ1
TAUQ1 is
COMPLEX array, dimension (Q)
The scalar factors of the elementary reflectors that define
Q1.
WORK
WORK is COMPLEX array, dimension (LWORK)
LWORK
LWORK is
INTEGER
The dimension of the array WORK. LWORK >= M-Q.
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
upper-bidiagonal blocks B11, B21 are represented implicitly
by
angles THETA(1), ..., THETA(Q) and PHI(1), ..., PHI(Q-1).
Every entry
in each bidiagonal band is a product of a sine or cosine of
a THETA
with a sine or cosine of a PHI. See [1] or CUNCSD for
details.
P1, P2, and Q1
are represented as products of elementary reflectors.
See CUNCSD2BY1 for details on generating P1, P2, and Q1
using CUNGQR
and CUNGLQ.
References:
[1] Brian D. Sutton. Computing the complete CS decomposition. Numer. Algorithms, 50(1):33-65, 2009.
subroutine dorbdb2 (integer m, integer p, integer q, double precision,dimension(ldx11,*) x11, integer ldx11, double precision,dimension(ldx21,*) x21, integer ldx21, double precision, dimension(*)theta, double precision, dimension(*) phi, double precision,dimension(*) taup1, double precision, dimension(*) taup2, doubleprecision, dimension(*) tauq1, double precision, dimension(*) work,integer lwork, integer info)
DORBDB2
Purpose:
DORBDB2
simultaneously bidiagonalizes the blocks of a tall and
skinny
matrix X with orthonormal columns:
[ B11 ]
[ X11 ] [ P1 | ] [ 0 ]
[-----] = [---------] [-----] Q1**T .
[ X21 ] [ | P2 ] [ B21 ]
[ 0 ]
X11 is P-by-Q,
and X21 is (M-P)-by-Q. P must be no larger than M-P,
Q, or M-Q. Routines DORBDB1, DORBDB3, and DORBDB4 handle
cases in
which P is not the minimum dimension.
The orthogonal
matrices P1, P2, and Q1 are P-by-P, (M-P)-by-(M-P),
and (M-Q)-by-(M-Q), respectively. They are represented
implicitly by
Householder vectors.
B11 and B12 are
P-by-P bidiagonal matrices represented implicitly by
angles THETA, PHI.
Parameters
M
M is INTEGER
The number of rows X11 plus the number of rows in X21.
P
P is INTEGER
The number of rows in X11. 0 <= P <=
min(M-P,Q,M-Q).
Q
Q is INTEGER
The number of columns in X11 and X21. 0 <= Q <= M.
X11
X11 is DOUBLE
PRECISION array, dimension (LDX11,Q)
On entry, the top block of the matrix X to be reduced. On
exit, the columns of tril(X11) specify reflectors for P1 and
the rows of triu(X11,1) specify reflectors for Q1.
LDX11
LDX11 is
INTEGER
The leading dimension of X11. LDX11 >= P.
X21
X21 is DOUBLE
PRECISION array, dimension (LDX21,Q)
On entry, the bottom block of the matrix X to be reduced. On
exit, the columns of tril(X21) specify reflectors for
P2.
LDX21
LDX21 is
INTEGER
The leading dimension of X21. LDX21 >= M-P.
THETA
THETA is DOUBLE
PRECISION array, dimension (Q)
The entries of the bidiagonal blocks B11, B21 are defined by
THETA and PHI. See Further Details.
PHI
PHI is DOUBLE
PRECISION array, dimension (Q-1)
The entries of the bidiagonal blocks B11, B21 are defined by
THETA and PHI. See Further Details.
TAUP1
TAUP1 is DOUBLE
PRECISION array, dimension (P-1)
The scalar factors of the elementary reflectors that define
P1.
TAUP2
TAUP2 is DOUBLE
PRECISION array, dimension (Q)
The scalar factors of the elementary reflectors that define
P2.
TAUQ1
TAUQ1 is DOUBLE
PRECISION array, dimension (Q)
The scalar factors of the elementary reflectors that define
Q1.
WORK
WORK is DOUBLE PRECISION array, dimension (LWORK)
LWORK
LWORK is
INTEGER
The dimension of the array WORK. LWORK >= M-Q.
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
upper-bidiagonal blocks B11, B21 are represented implicitly
by
angles THETA(1), ..., THETA(Q) and PHI(1), ..., PHI(Q-1).
Every entry
in each bidiagonal band is a product of a sine or cosine of
a THETA
with a sine or cosine of a PHI. See [1] or DORCSD for
details.
P1, P2, and Q1
are represented as products of elementary reflectors.
See DORCSD2BY1 for details on generating P1, P2, and Q1
using DORGQR
and DORGLQ.
References:
[1] Brian D. Sutton. Computing the complete CS decomposition. Numer. Algorithms, 50(1):33-65, 2009.
subroutine sorbdb2 (integer m, integer p, integer q, real,dimension(ldx11,*) x11, integer ldx11, real, dimension(ldx21,*) x21,integer ldx21, real, dimension(*) theta, real, dimension(*) phi, real,dimension(*) taup1, real, dimension(*) taup2, real, dimension(*) tauq1,real, dimension(*) work, integer lwork, integer info)
SORBDB2
Purpose:
SORBDB2
simultaneously bidiagonalizes the blocks of a tall and
skinny
matrix X with orthonormal columns:
[ B11 ]
[ X11 ] [ P1 | ] [ 0 ]
[-----] = [---------] [-----] Q1**T .
[ X21 ] [ | P2 ] [ B21 ]
[ 0 ]
X11 is P-by-Q,
and X21 is (M-P)-by-Q. P must be no larger than M-P,
Q, or M-Q. Routines SORBDB1, SORBDB3, and SORBDB4 handle
cases in
which P is not the minimum dimension.
The orthogonal
matrices P1, P2, and Q1 are P-by-P, (M-P)-by-(M-P),
and (M-Q)-by-(M-Q), respectively. They are represented
implicitly by
Householder vectors.
B11 and B12 are
P-by-P bidiagonal matrices represented implicitly by
angles THETA, PHI.
Parameters
M
M is INTEGER
The number of rows X11 plus the number of rows in X21.
P
P is INTEGER
The number of rows in X11. 0 <= P <=
min(M-P,Q,M-Q).
Q
Q is INTEGER
The number of columns in X11 and X21. 0 <= Q <= M.
X11
X11 is REAL
array, dimension (LDX11,Q)
On entry, the top block of the matrix X to be reduced. On
exit, the columns of tril(X11) specify reflectors for P1 and
the rows of triu(X11,1) specify reflectors for Q1.
LDX11
LDX11 is
INTEGER
The leading dimension of X11. LDX11 >= P.
X21
X21 is REAL
array, dimension (LDX21,Q)
On entry, the bottom block of the matrix X to be reduced. On
exit, the columns of tril(X21) specify reflectors for
P2.
LDX21
LDX21 is
INTEGER
The leading dimension of X21. LDX21 >= M-P.
THETA
THETA is REAL
array, dimension (Q)
The entries of the bidiagonal blocks B11, B21 are defined by
THETA and PHI. See Further Details.
PHI
PHI is REAL
array, dimension (Q-1)
The entries of the bidiagonal blocks B11, B21 are defined by
THETA and PHI. See Further Details.
TAUP1
TAUP1 is REAL
array, dimension (P-1)
The scalar factors of the elementary reflectors that define
P1.
TAUP2
TAUP2 is REAL
array, dimension (Q)
The scalar factors of the elementary reflectors that define
P2.
TAUQ1
TAUQ1 is REAL
array, dimension (Q)
The scalar factors of the elementary reflectors that define
Q1.
WORK
WORK is REAL array, dimension (LWORK)
LWORK
LWORK is
INTEGER
The dimension of the array WORK. LWORK >= M-Q.
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
upper-bidiagonal blocks B11, B21 are represented implicitly
by
angles THETA(1), ..., THETA(Q) and PHI(1), ..., PHI(Q-1).
Every entry
in each bidiagonal band is a product of a sine or cosine of
a THETA
with a sine or cosine of a PHI. See [1] or SORCSD for
details.
P1, P2, and Q1
are represented as products of elementary reflectors.
See SORCSD2BY1 for details on generating P1, P2, and Q1
using SORGQR
and SORGLQ.
References:
[1] Brian D. Sutton. Computing the complete CS decomposition. Numer. Algorithms, 50(1):33-65, 2009.
subroutine zunbdb2 (integer m, integer p, integer q, complex*16,dimension(ldx11,*) x11, integer ldx11, complex*16, dimension(ldx21,*)x21, integer ldx21, double precision, dimension(*) theta, doubleprecision, dimension(*) phi, complex*16, dimension(*) taup1,complex*16, dimension(*) taup2, complex*16, dimension(*) tauq1,complex*16, dimension(*) work, integer lwork, integer info)
ZUNBDB2
Purpose:
ZUNBDB2
simultaneously bidiagonalizes the blocks of a tall and
skinny
matrix X with orthonormal columns:
[ B11 ]
[ X11 ] [ P1 | ] [ 0 ]
[-----] = [---------] [-----] Q1**T .
[ X21 ] [ | P2 ] [ B21 ]
[ 0 ]
X11 is P-by-Q,
and X21 is (M-P)-by-Q. P must be no larger than M-P,
Q, or M-Q. Routines ZUNBDB1, ZUNBDB3, and ZUNBDB4 handle
cases in
which P is not the minimum dimension.
The unitary
matrices P1, P2, and Q1 are P-by-P, (M-P)-by-(M-P),
and (M-Q)-by-(M-Q), respectively. They are represented
implicitly by
Householder vectors.
B11 and B12 are
P-by-P bidiagonal matrices represented implicitly by
angles THETA, PHI.
Parameters
M
M is INTEGER
The number of rows X11 plus the number of rows in X21.
P
P is INTEGER
The number of rows in X11. 0 <= P <=
min(M-P,Q,M-Q).
Q
Q is INTEGER
The number of columns in X11 and X21. 0 <= Q <= M.
X11
X11 is
COMPLEX*16 array, dimension (LDX11,Q)
On entry, the top block of the matrix X to be reduced. On
exit, the columns of tril(X11) specify reflectors for P1 and
the rows of triu(X11,1) specify reflectors for Q1.
LDX11
LDX11 is
INTEGER
The leading dimension of X11. LDX11 >= P.
X21
X21 is
COMPLEX*16 array, dimension (LDX21,Q)
On entry, the bottom block of the matrix X to be reduced. On
exit, the columns of tril(X21) specify reflectors for
P2.
LDX21
LDX21 is
INTEGER
The leading dimension of X21. LDX21 >= M-P.
THETA
THETA is DOUBLE
PRECISION array, dimension (Q)
The entries of the bidiagonal blocks B11, B21 are defined by
THETA and PHI. See Further Details.
PHI
PHI is DOUBLE
PRECISION array, dimension (Q-1)
The entries of the bidiagonal blocks B11, B21 are defined by
THETA and PHI. See Further Details.
TAUP1
TAUP1 is
COMPLEX*16 array, dimension (P-1)
The scalar factors of the elementary reflectors that define
P1.
TAUP2
TAUP2 is
COMPLEX*16 array, dimension (Q)
The scalar factors of the elementary reflectors that define
P2.
TAUQ1
TAUQ1 is
COMPLEX*16 array, dimension (Q)
The scalar factors of the elementary reflectors that define
Q1.
WORK
WORK is COMPLEX*16 array, dimension (LWORK)
LWORK
LWORK is
INTEGER
The dimension of the array WORK. LWORK >= M-Q.
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
upper-bidiagonal blocks B11, B21 are represented implicitly
by
angles THETA(1), ..., THETA(Q) and PHI(1), ..., PHI(Q-1).
Every entry
in each bidiagonal band is a product of a sine or cosine of
a THETA
with a sine or cosine of a PHI. See [1] or ZUNCSD for
details.
P1, P2, and Q1
are represented as products of elementary reflectors.
See ZUNCSD2BY1 for details on generating P1, P2, and Q1
using ZUNGQR
and ZUNGLQ.
References:
[1] Brian D. Sutton. Computing the complete CS decomposition. Numer. Algorithms, 50(1):33-65, 2009.
Author
Generated automatically by Doxygen for LAPACK from the source code.