DBDT05(3)

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

okay so bestie, you just opened DBDT05(3) from the Library Functions Manual β€” and yes, the LAPACK girlies are at it again πŸ’…βœ¨. This page is lowkey about checking a (partial) SVD by rebuilding the bidiagonal matrix B, and the math is giving main-character energy 🫢.

🌸 NAME 🌸

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/TESTING/EIG/dbdt05.f

that’s the source file, periodt πŸ’–.


✨ SYNOPSIS ✨

🧩 Functions/Subroutines 🧩

       subroutine DBDT05 (m, n, a, lda, s, ns, u, ldu, vt, ldvt, work, resid)
           DBDT05

πŸŽ€ Function/Subroutine Documentation πŸŽ€

here’s the full signature, wrapped exactly like the source page, because we respect the formatting 🫢:

   subroutine DBDT05 (integer m, integer n, double precision, dimension( lda, *
       ) a, integer lda, double precision, dimension( * ) s, integer ns, double
       precision, dimension( ldu, * ) u, integer ldu, double precision,
       dimension( ldvt, * ) vt, integer ldvt, double precision, dimension( * )
       work, double precision resid)
       DBDT05

🎯 Purpose: 🎯

okay so the whole point: DBDT05 reconstructs a bidiagonal matrix B from its (partial) SVD:

S = U' * B * V

where U and V are orthogonal matrices and S is diagonal πŸ¦‹.

the test ratio to test the singular value decomposition is:

RESID = norm( S - U' * B * V ) / ( n * norm(B) * EPS )

where VT = V' and EPS is the machine precision. no cap, that’s the whole vibe check 😭.

πŸ“ Parameters πŸ“

πŸ’œ M

M is INTEGER β€” the number of rows of the matrices A and U. slay.

πŸ’œ N

N is INTEGER β€” the number of columns of the matrices A and VT. periodt.

πŸ’œ A

A is DOUBLE PRECISION array, dimension (LDA,N) β€” the m by n matrix A πŸŽ€.

πŸ’œ LDA

LDA is INTEGER β€” the leading dimension of the array A. LDA >= max(1,M). bestie, respect the leading dimension πŸ’….

πŸ’œ S

S is DOUBLE PRECISION array, dimension (NS) β€” the singular values from the (partial) SVD of B, sorted in decreasing order. iconic ⭐.

πŸ’œ NS

NS is INTEGER β€” the number of singular values/vectors from the (partial) SVD of B πŸ¦‹.

πŸ’œ U

U is DOUBLE PRECISION array, dimension (LDU,NS) β€” the n by ns orthogonal matrix U in S = U' * B * V πŸ‘‘.

πŸ’œ LDU

LDU is INTEGER β€” the leading dimension of the array U. LDU >= max(1,N). yes, keep it valid ✨.

πŸ’œ VT

VT is DOUBLE PRECISION array, dimension (LDVT,N) β€” the n by ns orthogonal matrix V in S = U' * B * V 🌸.

πŸ’œ LDVT

LDVT is INTEGER β€” the leading dimension of the array VT πŸŽ€.

πŸ’œ WORK

WORK is DOUBLE PRECISION array, dimension (M,N). that’s the workspace, bestie 🧚.

πŸ’œ RESID

RESID is DOUBLE PRECISION β€” the test ratio: norm(S - U' * A * V) / ( n * norm(A) * EPS ). this is the number you’re side-eyeing πŸ’€.


πŸ‘‘ Author πŸ‘‘

shoutout to the institutions that brought you this page:

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

Definition at line 125 of file dbdt05.f. β€” yes, exact line, we don’t guess πŸ”₯.


🌈 Author 🌈

Generated automatically by Doxygen for LAPACK from the source code. β€” the robots did this one, and they ate πŸ€–πŸ’….


mwah πŸ’‹ β€” source/version vibes: LAPACK, Version 3.12.0, page path /home/abui...IG/dbdt05.f(3). bye bestie, go check those singular values 🫢✨.

πŸ“¦ where this page comes from