DLASD0(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

πŸ’… 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. β€” so N is the row count AND the size of D, 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: 0 means M = N, 1 means M = 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 if INFO = 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 exit E has 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 passed U in as an (N, N) Identity. That's the vibe check right there ✨
  • LDU β€” !> LDU is INTEGER / !> On entry, leading dimension of U. β€” leading dimension of U, 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 exit VT**T holds the right singular vectors, and again only if VT came in as an (M, M) Identity. Read it twice, iykyk πŸ¦‹
  • LDVT β€” !> LDVT is INTEGER / !> On entry, leading dimension of VT. β€” leading dimension of VT, 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: if INFO = -i, the i-th argument had an illegal value β€” someone messed up an argument, awkward 😭
    • > 0: if INFO = 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