Man page - gesdd(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
gesdd
NAMESYNOPSIS
Functions
Detailed Description
Function Documentation
subroutine cgesdd (character jobz, integer m, integer n, complex,dimension( lda, * ) a, integer lda, real, dimension( * ) s, complex,dimension( ldu, * ) u, integer ldu, complex, dimension( ldvt, * ) vt,integer ldvt, complex, dimension( * ) work, integer lwork, real,dimension( * ) rwork, integer, dimension( * ) iwork, integer info)
subroutine dgesdd (character jobz, integer m, integer n, double precision,dimension( lda, * ) a, integer lda, double precision, dimension( * ) s,double precision, dimension( ldu, * ) u, integer ldu, double precision,dimension( ldvt, * ) vt, integer ldvt, double precision, dimension( * )work, integer lwork, integer, dimension( * ) iwork, integer info)
subroutine sgesdd (character jobz, integer m, integer n, real, dimension(lda, * ) a, integer lda, real, dimension( * ) s, real, dimension( ldu,* ) u, integer ldu, real, dimension( ldvt, * ) vt, integer ldvt, real,dimension( * ) work, integer lwork, integer, dimension( * ) iwork,integer info)
subroutine zgesdd (character jobz, integer m, integer n, complex*16,dimension( lda, * ) a, integer lda, double precision, dimension( * ) s,complex*16, dimension( ldu, * ) u, integer ldu, complex*16, dimension(ldvt, * ) vt, integer ldvt, complex*16, dimension( * ) work, integerlwork, double precision, dimension( * ) rwork, integer, dimension( * )iwork, integer info)
Author
NAME
gesdd - gesdd: SVD, divide and conquer
SYNOPSIS
Functions
subroutine
cgesdd
(jobz, m, n, a, lda, s, u, ldu, vt, ldvt,
work, lwork, rwork, iwork, info)
CGESDD
subroutine
dgesdd
(jobz, m, n, a, lda, s, u, ldu, vt,
ldvt, work, lwork, iwork, info)
DGESDD
subroutine
sgesdd
(jobz, m, n, a, lda, s, u, ldu, vt,
ldvt, work, lwork, iwork, info)
SGESDD
subroutine
zgesdd
(jobz, m, n, a, lda, s, u, ldu, vt,
ldvt, work, lwork, rwork, iwork, info)
ZGESDD
Detailed Description
Function Documentation
subroutine cgesdd (character jobz, integer m, integer n, complex,dimension( lda, * ) a, integer lda, real, dimension( * ) s, complex,dimension( ldu, * ) u, integer ldu, complex, dimension( ldvt, * ) vt,integer ldvt, complex, dimension( * ) work, integer lwork, real,dimension( * ) rwork, integer, dimension( * ) iwork, integer info)
CGESDD
Purpose:
CGESDD computes
the singular value decomposition (SVD) of a complex
M-by-N matrix A, optionally computing the left and/or right
singular
vectors, by using divide-and-conquer method. The SVD is
written
A = U * SIGMA * conjugate-transpose(V)
where SIGMA is
an M-by-N matrix which is zero except for its
min(m,n) diagonal elements, U is an M-by-M unitary matrix,
and
V is an N-by-N unitary matrix. The diagonal elements of
SIGMA
are the singular values of A; they are real and
non-negative, and
are returned in descending order. The first min(m,n) columns
of
U and V are the left and right singular vectors of A.
Note that the routine returns VT = V**H, not V.
Parameters
JOBZ
JOBZ is
CHARACTER*1
Specifies options for computing all or part of the matrix U:
= āAā: all M columns of U and all N rows of V**H
are
returned in the arrays U and VT;
= āSā: the first min(M,N) columns of U and the
first
min(M,N) rows of V**H are returned in the arrays U
and VT;
= āOā: If M >= N, the first N columns of U
are overwritten
in the array A and all rows of V**H are returned in
the array VT;
otherwise, all columns of U are returned in the
array U and the first M rows of V**H are overwritten
in the array A;
= āNā: no columns of U or rows of V**H are
computed.
M
M is INTEGER
The number of rows of the input matrix A. M >= 0.
N
N is INTEGER
The number of columns of the input matrix A. N >= 0.
A
A is COMPLEX
array, dimension (LDA,N)
On entry, the M-by-N matrix A.
On exit,
if JOBZ = āOā, A is overwritten with the first N
columns
of U (the left singular vectors, stored
columnwise) if M >= N;
A is overwritten with the first M rows
of V**H (the right singular vectors, stored
rowwise) otherwise.
if JOBZ .ne. āOā, the contents of A are
destroyed.
LDA
LDA is INTEGER
The leading dimension of the array A. LDA >=
max(1,M).
S
S is REAL
array, dimension (min(M,N))
The singular values of A, sorted so that S(i) >=
S(i+1).
U
U is COMPLEX
array, dimension (LDU,UCOL)
UCOL = M if JOBZ = āAā or JOBZ = āOā
and M < N;
UCOL = min(M,N) if JOBZ = āSā.
If JOBZ = āAā or JOBZ = āOā and M
< N, U contains the M-by-M
unitary matrix U;
if JOBZ = āSā, U contains the first min(M,N)
columns of U
(the left singular vectors, stored columnwise);
if JOBZ = āOā and M >= N, or JOBZ =
āNā, U is not referenced.
LDU
LDU is INTEGER
The leading dimension of the array U. LDU >= 1;
if JOBZ = āSā or āAā or JOBZ =
āOā and M < N, LDU >= M.
VT
VT is COMPLEX
array, dimension (LDVT,N)
If JOBZ = āAā or JOBZ = āOā and M
>= N, VT contains the
N-by-N unitary matrix V**H;
if JOBZ = āSā, VT contains the first min(M,N)
rows of
V**H (the right singular vectors, stored rowwise);
if JOBZ = āOā and M < N, or JOBZ =
āNā, VT is not referenced.
LDVT
LDVT is INTEGER
The leading dimension of the array VT. LDVT >= 1;
if JOBZ = āAā or JOBZ = āOā and M
>= N, LDVT >= N;
if JOBZ = āSā, LDVT >= min(M,N).
WORK
WORK is COMPLEX
array, dimension (MAX(1,LWORK))
On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
LWORK
LWORK is
INTEGER
The dimension of the array WORK. LWORK >= 1.
If LWORK = -1, a workspace query is assumed. The optimal
size for the WORK array is calculated and stored in WORK(1),
and no other work except argument checking is performed.
Let mx =
max(M,N) and mn = min(M,N).
If JOBZ = āNā, LWORK >= 2*mn + mx.
If JOBZ = āOā, LWORK >= 2*mn*mn + 2*mn + mx.
If JOBZ = āSā, LWORK >= mn*mn + 3*mn.
If JOBZ = āAā, LWORK >= mn*mn + 2*mn + mx.
These are not tight minimums in all cases; see comments
inside code.
For good performance, LWORK should generally be larger;
a query is recommended.
RWORK
RWORK is REAL
array, dimension (MAX(1,LRWORK))
Let mx = max(M,N) and mn = min(M,N).
If JOBZ = āNā, LRWORK >= 5*mn (LAPACK <=
3.6 needs 7*mn);
else if mx >> mn, LRWORK >= 5*mn*mn + 5*mn;
else LRWORK >= max( 5*mn*mn + 5*mn,
2*mx*mn + 2*mn*mn + mn ).
IWORK
IWORK is INTEGER array, dimension (8*min(M,N))
INFO
INFO is INTEGER
< 0: if INFO = -i, the i-th argument had an illegal
value.
= -4: if A had a NAN entry.
> 0: The updating process of SBDSDC did not converge.
= 0: successful exit.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Contributors:
Ming Gu and Huan Ren, Computer Science Division, University of California at Berkeley, USA
subroutine dgesdd (character jobz, integer m, integer n, double precision,dimension( lda, * ) a, integer lda, double precision, dimension( * ) s,double precision, dimension( ldu, * ) u, integer ldu, double precision,dimension( ldvt, * ) vt, integer ldvt, double precision, dimension( * )work, integer lwork, integer, dimension( * ) iwork, integer info)
DGESDD
Purpose:
DGESDD computes
the singular value decomposition (SVD) of a real
M-by-N matrix A, optionally computing the left and right
singular
vectors. If singular vectors are desired, it uses a
divide-and-conquer algorithm.
The SVD is written
A = U * SIGMA * transpose(V)
where SIGMA is
an M-by-N matrix which is zero except for its
min(m,n) diagonal elements, U is an M-by-M orthogonal
matrix, and
V is an N-by-N orthogonal matrix. The diagonal elements of
SIGMA
are the singular values of A; they are real and
non-negative, and
are returned in descending order. The first min(m,n) columns
of
U and V are the left and right singular vectors of A.
Note that the routine returns VT = V**T, not V.
Parameters
JOBZ
JOBZ is
CHARACTER*1
Specifies options for computing all or part of the matrix U:
= āAā: all M columns of U and all N rows of V**T
are
returned in the arrays U and VT;
= āSā: the first min(M,N) columns of U and the
first
min(M,N) rows of V**T are returned in the arrays U
and VT;
= āOā: If M >= N, the first N columns of U
are overwritten
on the array A and all rows of V**T are returned in
the array VT;
otherwise, all columns of U are returned in the
array U and the first M rows of V**T are overwritten
in the array A;
= āNā: no columns of U or rows of V**T are
computed.
M
M is INTEGER
The number of rows of the input matrix A. M >= 0.
N
N is INTEGER
The number of columns of the input matrix A. N >= 0.
A
A is DOUBLE
PRECISION array, dimension (LDA,N)
On entry, the M-by-N matrix A.
On exit,
if JOBZ = āOā, A is overwritten with the first N
columns
of U (the left singular vectors, stored
columnwise) if M >= N;
A is overwritten with the first M rows
of V**T (the right singular vectors, stored
rowwise) otherwise.
if JOBZ .ne. āOā, the contents of A are
destroyed.
LDA
LDA is INTEGER
The leading dimension of the array A. LDA >=
max(1,M).
S
S is DOUBLE
PRECISION array, dimension (min(M,N))
The singular values of A, sorted so that S(i) >=
S(i+1).
U
U is DOUBLE
PRECISION array, dimension (LDU,UCOL)
UCOL = M if JOBZ = āAā or JOBZ = āOā
and M < N;
UCOL = min(M,N) if JOBZ = āSā.
If JOBZ = āAā or JOBZ = āOā and M
< N, U contains the M-by-M
orthogonal matrix U;
if JOBZ = āSā, U contains the first min(M,N)
columns of U
(the left singular vectors, stored columnwise);
if JOBZ = āOā and M >= N, or JOBZ =
āNā, U is not referenced.
LDU
LDU is INTEGER
The leading dimension of the array U. LDU >= 1; if
JOBZ = āSā or āAā or JOBZ =
āOā and M < N, LDU >= M.
VT
VT is DOUBLE
PRECISION array, dimension (LDVT,N)
If JOBZ = āAā or JOBZ = āOā and M
>= N, VT contains the
N-by-N orthogonal matrix V**T;
if JOBZ = āSā, VT contains the first min(M,N)
rows of
V**T (the right singular vectors, stored rowwise);
if JOBZ = āOā and M < N, or JOBZ =
āNā, VT is not referenced.
LDVT
LDVT is INTEGER
The leading dimension of the array VT. LDVT >= 1;
if JOBZ = āAā or JOBZ = āOā and M
>= N, LDVT >= N;
if JOBZ = āSā, LDVT >= min(M,N).
WORK
WORK is DOUBLE
PRECISION array, dimension (MAX(1,LWORK))
On exit, if INFO = 0, WORK(1) returns the optimal LWORK;
LWORK
LWORK is
INTEGER
The dimension of the array WORK. LWORK >= 1.
If LWORK = -1, a workspace query is assumed. The optimal
size for the WORK array is calculated and stored in WORK(1),
and no other work except argument checking is performed.
Let mx =
max(M,N) and mn = min(M,N).
If JOBZ = āNā, LWORK >= 3*mn + max( mx, 7*mn
).
If JOBZ = āOā, LWORK >= 3*mn + max( mx,
5*mn*mn + 4*mn ).
If JOBZ = āSā, LWORK >= 4*mn*mn + 7*mn.
If JOBZ = āAā, LWORK >= 4*mn*mn + 6*mn + mx.
These are not tight minimums in all cases; see comments
inside code.
For good performance, LWORK should generally be larger;
a query is recommended.
IWORK
IWORK is INTEGER array, dimension (8*min(M,N))
INFO
INFO is INTEGER
< 0: if INFO = -i, the i-th argument had an illegal
value.
= -4: if A had a NAN entry.
> 0: DBDSDC did not converge, updating process failed.
= 0: successful exit.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Contributors:
Ming Gu and Huan Ren, Computer Science Division, University of California at Berkeley, USA
subroutine sgesdd (character jobz, integer m, integer n, real, dimension(lda, * ) a, integer lda, real, dimension( * ) s, real, dimension( ldu,* ) u, integer ldu, real, dimension( ldvt, * ) vt, integer ldvt, real,dimension( * ) work, integer lwork, integer, dimension( * ) iwork,integer info)
SGESDD
Purpose:
SGESDD computes
the singular value decomposition (SVD) of a real
M-by-N matrix A, optionally computing the left and right
singular
vectors. If singular vectors are desired, it uses a
divide-and-conquer algorithm.
The SVD is written
A = U * SIGMA * transpose(V)
where SIGMA is
an M-by-N matrix which is zero except for its
min(m,n) diagonal elements, U is an M-by-M orthogonal
matrix, and
V is an N-by-N orthogonal matrix. The diagonal elements of
SIGMA
are the singular values of A; they are real and
non-negative, and
are returned in descending order. The first min(m,n) columns
of
U and V are the left and right singular vectors of A.
Note that the routine returns VT = V**T, not V.
Parameters
JOBZ
JOBZ is
CHARACTER*1
Specifies options for computing all or part of the matrix U:
= āAā: all M columns of U and all N rows of V**T
are
returned in the arrays U and VT;
= āSā: the first min(M,N) columns of U and the
first
min(M,N) rows of V**T are returned in the arrays U
and VT;
= āOā: If M >= N, the first N columns of U
are overwritten
on the array A and all rows of V**T are returned in
the array VT;
otherwise, all columns of U are returned in the
array U and the first M rows of V**T are overwritten
in the array A;
= āNā: no columns of U or rows of V**T are
computed.
M
M is INTEGER
The number of rows of the input matrix A. M >= 0.
N
N is INTEGER
The number of columns of the input matrix A. N >= 0.
A
A is REAL
array, dimension (LDA,N)
On entry, the M-by-N matrix A.
On exit,
if JOBZ = āOā, A is overwritten with the first N
columns
of U (the left singular vectors, stored
columnwise) if M >= N;
A is overwritten with the first M rows
of V**T (the right singular vectors, stored
rowwise) otherwise.
if JOBZ .ne. āOā, the contents of A are
destroyed.
LDA
LDA is INTEGER
The leading dimension of the array A. LDA >=
max(1,M).
S
S is REAL
array, dimension (min(M,N))
The singular values of A, sorted so that S(i) >=
S(i+1).
U
U is REAL
array, dimension (LDU,UCOL)
UCOL = M if JOBZ = āAā or JOBZ = āOā
and M < N;
UCOL = min(M,N) if JOBZ = āSā.
If JOBZ = āAā or JOBZ = āOā and M
< N, U contains the M-by-M
orthogonal matrix U;
if JOBZ = āSā, U contains the first min(M,N)
columns of U
(the left singular vectors, stored columnwise);
if JOBZ = āOā and M >= N, or JOBZ =
āNā, U is not referenced.
LDU
LDU is INTEGER
The leading dimension of the array U. LDU >= 1; if
JOBZ = āSā or āAā or JOBZ =
āOā and M < N, LDU >= M.
VT
VT is REAL
array, dimension (LDVT,N)
If JOBZ = āAā or JOBZ = āOā and M
>= N, VT contains the
N-by-N orthogonal matrix V**T;
if JOBZ = āSā, VT contains the first min(M,N)
rows of
V**T (the right singular vectors, stored rowwise);
if JOBZ = āOā and M < N, or JOBZ =
āNā, VT is not referenced.
LDVT
LDVT is INTEGER
The leading dimension of the array VT. LDVT >= 1;
if JOBZ = āAā or JOBZ = āOā and M
>= N, LDVT >= N;
if JOBZ = āSā, LDVT >= min(M,N).
WORK
WORK is REAL
array, dimension (MAX(1,LWORK))
On exit, if INFO = 0, WORK(1) returns the optimal LWORK;
LWORK
LWORK is
INTEGER
The dimension of the array WORK. LWORK >= 1.
If LWORK = -1, a workspace query is assumed. The optimal
size for the WORK array is calculated and stored in WORK(1),
and no other work except argument checking is performed.
Let mx =
max(M,N) and mn = min(M,N).
If JOBZ = āNā, LWORK >= 3*mn + max( mx, 7*mn
).
If JOBZ = āOā, LWORK >= 3*mn + max( mx,
5*mn*mn + 4*mn ).
If JOBZ = āSā, LWORK >= 4*mn*mn + 7*mn.
If JOBZ = āAā, LWORK >= 4*mn*mn + 6*mn + mx.
These are not tight minimums in all cases; see comments
inside code.
For good performance, LWORK should generally be larger;
a query is recommended.
IWORK
IWORK is INTEGER array, dimension (8*min(M,N))
INFO
INFO is INTEGER
< 0: if INFO = -i, the i-th argument had an illegal
value.
= -4: if A had a NAN entry.
> 0: SBDSDC did not converge, updating process failed.
= 0: successful exit.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Contributors:
Ming Gu and Huan Ren, Computer Science Division, University of California at Berkeley, USA
subroutine zgesdd (character jobz, integer m, integer n, complex*16,dimension( lda, * ) a, integer lda, double precision, dimension( * ) s,complex*16, dimension( ldu, * ) u, integer ldu, complex*16, dimension(ldvt, * ) vt, integer ldvt, complex*16, dimension( * ) work, integerlwork, double precision, dimension( * ) rwork, integer, dimension( * )iwork, integer info)
ZGESDD
Purpose:
ZGESDD computes
the singular value decomposition (SVD) of a complex
M-by-N matrix A, optionally computing the left and/or right
singular
vectors, by using divide-and-conquer method. The SVD is
written
A = U * SIGMA * conjugate-transpose(V)
where SIGMA is
an M-by-N matrix which is zero except for its
min(m,n) diagonal elements, U is an M-by-M unitary matrix,
and
V is an N-by-N unitary matrix. The diagonal elements of
SIGMA
are the singular values of A; they are real and
non-negative, and
are returned in descending order. The first min(m,n) columns
of
U and V are the left and right singular vectors of A.
Note that the routine returns VT = V**H, not V.
Parameters
JOBZ
JOBZ is
CHARACTER*1
Specifies options for computing all or part of the matrix U:
= āAā: all M columns of U and all N rows of V**H
are
returned in the arrays U and VT;
= āSā: the first min(M,N) columns of U and the
first
min(M,N) rows of V**H are returned in the arrays U
and VT;
= āOā: If M >= N, the first N columns of U
are overwritten
in the array A and all rows of V**H are returned in
the array VT;
otherwise, all columns of U are returned in the
array U and the first M rows of V**H are overwritten
in the array A;
= āNā: no columns of U or rows of V**H are
computed.
M
M is INTEGER
The number of rows of the input matrix A. M >= 0.
N
N is INTEGER
The number of columns of the input matrix A. N >= 0.
A
A is COMPLEX*16
array, dimension (LDA,N)
On entry, the M-by-N matrix A.
On exit,
if JOBZ = āOā, A is overwritten with the first N
columns
of U (the left singular vectors, stored
columnwise) if M >= N;
A is overwritten with the first M rows
of V**H (the right singular vectors, stored
rowwise) otherwise.
if JOBZ .ne. āOā, the contents of A are
destroyed.
LDA
LDA is INTEGER
The leading dimension of the array A. LDA >=
max(1,M).
S
S is DOUBLE
PRECISION array, dimension (min(M,N))
The singular values of A, sorted so that S(i) >=
S(i+1).
U
U is COMPLEX*16
array, dimension (LDU,UCOL)
UCOL = M if JOBZ = āAā or JOBZ = āOā
and M < N;
UCOL = min(M,N) if JOBZ = āSā.
If JOBZ = āAā or JOBZ = āOā and M
< N, U contains the M-by-M
unitary matrix U;
if JOBZ = āSā, U contains the first min(M,N)
columns of U
(the left singular vectors, stored columnwise);
if JOBZ = āOā and M >= N, or JOBZ =
āNā, U is not referenced.
LDU
LDU is INTEGER
The leading dimension of the array U. LDU >= 1;
if JOBZ = āSā or āAā or JOBZ =
āOā and M < N, LDU >= M.
VT
VT is
COMPLEX*16 array, dimension (LDVT,N)
If JOBZ = āAā or JOBZ = āOā and M
>= N, VT contains the
N-by-N unitary matrix V**H;
if JOBZ = āSā, VT contains the first min(M,N)
rows of
V**H (the right singular vectors, stored rowwise);
if JOBZ = āOā and M < N, or JOBZ =
āNā, VT is not referenced.
LDVT
LDVT is INTEGER
The leading dimension of the array VT. LDVT >= 1;
if JOBZ = āAā or JOBZ = āOā and M
>= N, LDVT >= N;
if JOBZ = āSā, LDVT >= min(M,N).
WORK
WORK is
COMPLEX*16 array, dimension (MAX(1,LWORK))
On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
LWORK
LWORK is
INTEGER
The dimension of the array WORK. LWORK >= 1.
If LWORK = -1, a workspace query is assumed. The optimal
size for the WORK array is calculated and stored in WORK(1),
and no other work except argument checking is performed.
Let mx =
max(M,N) and mn = min(M,N).
If JOBZ = āNā, LWORK >= 2*mn + mx.
If JOBZ = āOā, LWORK >= 2*mn*mn + 2*mn + mx.
If JOBZ = āSā, LWORK >= mn*mn + 3*mn.
If JOBZ = āAā, LWORK >= mn*mn + 2*mn + mx.
These are not tight minimums in all cases; see comments
inside code.
For good performance, LWORK should generally be larger;
a query is recommended.
RWORK
RWORK is DOUBLE
PRECISION array, dimension (MAX(1,LRWORK))
Let mx = max(M,N) and mn = min(M,N).
If JOBZ = āNā, LRWORK >= 5*mn (LAPACK <=
3.6 needs 7*mn);
else if mx >> mn, LRWORK >= 5*mn*mn + 5*mn;
else LRWORK >= max( 5*mn*mn + 5*mn,
2*mx*mn + 2*mn*mn + mn ).
IWORK
IWORK is INTEGER array, dimension (8*min(M,N))
INFO
INFO is INTEGER
< 0: if INFO = -i, the i-th argument had an illegal
value.
= -4: if A had a NAN entry.
> 0: The updating process of DBDSDC did not converge.
= 0: successful exit.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Contributors:
Ming Gu and Huan Ren, Computer Science Division, University of California at Berkeley, USA
Author
Generated automatically by Doxygen for LAPACK from the source code.