CBDT05(3)
π CBDT05(3) β like, the Library Functions Manual page, bestie π
okay so first things first: this is a page out of the Library Functions Manual, and the star of the show lives at this exact address, no cap:
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/TESTING/EIG/cbdt05.f
that's the whole NAME situation. she's a Fortran file. she's in the TESTING/EIG folder. iconic behavior honestly.
β¨ SYNOPSIS β¨
Functions/Subroutines π¦
so there's literally one (1) subroutine here and she's the main character:
subroutine CBDT05 (m, n, a, lda, s, ns, u, ldu, vt, ldvt, work, resid)
yep. that's her. CBDT05. go off queen π
πΈ Function/Subroutine Documentation πΈ
subroutine CBDT05 β the full signature, spelled out π
subroutine CBDT05 (integer m, integer n, complex, dimension( lda, * ) a,
integer lda, real, dimension( * ) s, integer ns, complex, dimension( * )
u, integer ldu, complex, dimension( ldvt, * ) vt, integer ldvt, complex,
dimension( * ) work, real resid)
CBDT05. that's the name. that's the vibe.
π§ Purpose π§
okay so here's what she actually does:
CBDT05 reconstructs a bidiagonal matrix B from its (partial) SVD:
S = U' * B * V
where U and V are orthogonal matrices and S is diagonal. slay.
and the test ratio used to check the singular value decomposition is:
RESID = norm( S - U' * B * V ) / ( n * norm(B) * EPS )
where VT = V' and EPS is the machine precision. periodt. π
π Parameters π
every single one, in order, no skipping, i'm obsessed with being thorough:
MβINTEGER. the number of rows of the matricesAandU. that's it, that's her job.NβINTEGER. the number of columns of the matricesAandVT. same energy, different axis, we love to see it.AβCOMPLEXarray, dimension(LDA,N). it's the m by n matrixA. your actual data bestie πLDAβINTEGER. the leading dimension of the arrayA. and listen:LDA >= max(1,M). that's a requirement, not a suggestion πSβREALarray, dimension(NS). the singular values from the (partial) SVD of B, sorted in decreasing order. organized queen πNSβINTEGER. the number of singular values/vectors from the (partial) SVD of B. not all of them? that's fine, partial is valid β¨UβCOMPLEXarray, dimension(LDU,NS). the n by ns orthogonal matrix U inS = U' * B * V. go girl π«ΆLDUβINTEGER. the leading dimension of the arrayU, andLDU >= max(1,N). respect the constraint or perish πVTβCOMPLEXarray, dimension(LDVT,N). the n by ns orthogonal matrix V inS = U' * B * V. yes she's stored transposed, that's just her thing πLDVTβINTEGER. the leading dimension of the arrayVT. no inequality given, just vibes. βWORKβCOMPLEXarray, dimension(M,N). scratch space. the backstage crew who never get credit but honestly carry the whole show πRESIDβREAL. the test ratio:norm(S - U' * A * V) / ( n * norm(A) * EPS ). the moment of truth, the final grade, the vibe check π₯
π Author π
the legends behind this:
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
a whole squad. we stan an academic-industrial collab π
β Definition β
found her at line 123 of file cbdt05.f. go look, she's right there.
π Author (yes, again) π
Generated automatically by Doxygen for LAPACK from the source code.
so nobody hand-wrote this one, a robot did it. and honestly? the robot ate. π β¨
okay bestie that's the whole page!! mwah π this was LAPACK, version 3.12.0, and the whole thing came out of that same /home/abui...IG/cbdt05.f situation β 3οΈβ£ sections, 1οΈβ£2οΈβ£ parameters, 0οΈβ£ notes left behind ππ¦πΈ
π¦ 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