DLASD0(3)
π dlasd0.f(3) β LAPACK Library Functions Manual
ok so this page lives in the LAPACK Library Functions Manual and the file path is dlasd0.f(3) β the actual source is at /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/dlasd0.f (yes the header shows it squished, like /home/abui...RC/dlasd0.f(3), but that's just the truncation being dramatic π). Bestie, we're looking at a Fortran file. A .f file. It's giving vintage. It's giving "my compiler is older than me". Anyway!! β¨
β¨ NAME β¨
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/dlasd0.f β that's the whole name, she's just a whole file path, no cap π«Ά
π¦ SYNOPSIS π¦
Functions/Subroutines
subroutine DLASD0 (n, sqre, d, e, u, ldu, vt, ldvt, smlsiz, iwork, work,
info)
DLASD0 computes the singular values of a real upper bidiagonal n-by-m matrix B with diagonal d and off-diagonal e. Used by sbdsdc. π₯
π Function/Subroutine Documentation π
subroutine DLASD0 (integer n, integer sqre, double precision, dimension( * )
d, double precision, dimension( * ) e, double precision, dimension( ldu,
* ) u, integer ldu, double precision, dimension( ldvt, * ) vt, integer
ldvt, integer smlsiz, integer, dimension( * ) iwork, double precision,
dimension( * ) work, integer info)
DLASD0 computes the singular values of a real upper bidiagonal n-by-m matrix B with diagonal d and off-diagonal e. Used by sbdsdc. β¨
π Purpose π
!>
!> Using a divide and conquer approach, DLASD0 computes the singular
!> value decomposition (SVD) of a real upper bidiagonal N-by-M
!> matrix B with diagonal D and offdiagonal E, where M = N + SQRE.
!> The algorithm computes orthogonal matrices U and VT such that
!> B = U * S * VT. The singular values S are overwritten on D.
!>
!> A related subroutine, DLASDA, computes only the singular values,
!> and optionally, the singular vectors in compact form.
!>
ok so like β divide and conquer, classic main character algorithm energy π. It gives you the SVD of that real upper bidiagonal N-by-M matrix B where M = N + SQRE. You get orthogonal U and VT with B = U * S * VT. The singular values S get overwritten onto D (so yes, your D is not surviving this intact, guard it with your life fr fr π).
And shoutout to the side character: DLASDA, which only computes the singular values, and optionally the singular vectors in compact form. Supporting cast but still iconic π«Ά
πΈ Parameters πΈ
Nβ!> N is INTEGER/!> On entry, the row dimension of the upper bidiagonal matrix./!> This is also the dimension of the main diagonal array D.β soNis the row count AND the size ofD, two jobs, she's working overtime πSQREβ!> SQRE is INTEGER/!> Specifies the column dimension of the bidiagonal matrix./!> = 0: The bidiagonal matrix has column dimension M = N;/!> = 1: The bidiagonal matrix has column dimension M = N+1;β literally just a switch:0meansM = N,1meansM = N+1. Pick one, bestie πDβ!> D is DOUBLE PRECISION array, dimension (N)/!> On entry D contains the main diagonal of the bidiagonal/!> matrix./!> On exit D, if INFO = 0, contains its singular values.β main diagonal going in, singular values coming out (only ifINFO = 0, so like... conditional slay β)Eβ!> E is DOUBLE PRECISION array, dimension (M-1)/!> Contains the subdiagonal entries of the bidiagonal matrix./!> On exit, E has been destroyed.β subdiagonal entries live here, and on exitEhas been destroyed π no survivors. Copy it first if you care, I'm serious πUβ!> U is DOUBLE PRECISION array, dimension (LDU, N)/!> On exit, U contains the left singular vectors,/!> if U passed in as (N, N) Identity.β left singular vectors on exit, but ONLY if you passedUin as an(N, N)Identity. That's the vibe check right there β¨LDUβ!> LDU is INTEGER/!> On entry, leading dimension of U.β leading dimension ofU, given on entry, that's it, that's the whole job πVTβ!> VT is DOUBLE PRECISION array, dimension (LDVT, M)/!> On exit, VT**T contains the right singular vectors,/!> if VT passed in as (M, M) Identity.β note the transpose!! On exitVT**Tholds the right singular vectors, and again only ifVTcame in as an(M, M)Identity. Read it twice, iykyk π¦LDVTβ!> LDVT is INTEGER/!> On entry, leading dimension of VT.β leading dimension ofVT, on entry, periodt πSMLSIZβ!> SMLSIZ is INTEGER/!> On entry, maximum size of the subproblems at the/!> bottom of the computation tree.β the max size of the subproblems chilling at the bottom of the computation tree πIWORKβ!> IWORK is INTEGER array, dimension (8*N)β integer workspace, dimension(8*N), no notes, just vibes π§WORKβ!> WORK is DOUBLE PRECISION array, dimension (3*M**2+2*M)β double precision workspace, dimension(3*M**2+2*M). Not tiny. Prepare her πINFOβ!> INFO is INTEGER/!> = 0: successful exit./!> < 0: if INFO = -i, the i-th argument had an illegal value./!> > 0: if INFO = 1, a singular value did not convergeβ the whole mood report:= 0: successful exit, we ate π₯< 0: ifINFO = -i, the i-th argument had an illegal value β someone messed up an argument, awkward π> 0: ifINFO = 1, a singular value did not converge β it just... didn't. Undefined behavior territory, handle it, don't ignore it fr fr π
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
like, a whole group project and they all showed up π«Ά
π Contributors: π
Ming Gu and Huan Ren, Computer Science Division, University of California at Berkeley, USA β take a bow, icons π
β Definition at line 150 of file dlasd0.f. β
yep, line 150 of dlasd0.f, go look, it's right there π
π Author π
Generated automatically by Doxygen for LAPACK from the source code. Not a human, just Doxygen doing its little automatic thing π€β¨
ok final sign-off bestie: this page is LAPACK, Version 3.12.0, and the header stamp on it reads /home/abui...RC/dlasd0.f(3). That's the whole footer, cute and done ππ
π¦ where this page comes from
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms