TESTING/EIG/dbdt04.f(3)
π TESTING/EIG/dbdt04.f β Library Functions Manual β¨
okay so bestie, you just opened the manpage for TESTING/EIG/dbdt04.f and honestly? it's a whole vibe. it's a Fortran testing routine from LAPACK land, and we're gonna get into it together π«Ά
πΈ SYNOPSIS πΈ
Functions/Subroutines
subroutine dbdt04 (uplo, n, d, e, s, ns, u, ldu, vt, ldvt, work, resid)β the one and only,DBDT04itself π«
π¦ Function/Subroutine Documentation π¦
subroutine dbdt04 (character uplo, integer n, double precision, dimension( * ) d, double precision, dimension( * ) e, 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)
DBDT04 β main character energy, no cap π
π Purpose π
DBDT04 reconstructs a bidiagonal matrix B from its (partial) SVD: S = U' * B * V
where U and V are orthogonal matrices and S is diagonal. yes, that's the whole plot π
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. literally the receipts π
β¨ Parameters β¨
UPLOβUPLOisCHARACTER*1. it specifies whether the matrix B is upper or lower bidiagonal, and honestly it's giving "pick a lane":= 'U': Upper bidiagonal= 'L': Lower bidiagonal
NβNisINTEGER. the order of the matrix B. that's the size of the whole situation fr fr.DβDisDOUBLE PRECISION array, dimension (N). the n diagonal elements of the bidiagonal matrix B. iconic diagonal behavior βEβEisDOUBLE PRECISION array, dimension (N-1). the (n-1) superdiagonal elements of the bidiagonal matrix B ifUPLO = 'U', or the (n-1) subdiagonal elements of B ifUPLO = 'L'. lowkey the same array, highkey different address depending on which way you're going πSβSisDOUBLE PRECISION array, dimension (NS). the singular values from the (partial) SVD of B, sorted in decreasing order. sorted! we love a structured queen πNSβNSisINTEGER. the number of singular values/vectors from the (partial) SVD of B. note that "partial" is doing a lot of work here, iykyk.UβUisDOUBLE PRECISION array, dimension (LDU,NS). the n by ns orthogonal matrix U inS = U' * B * V. ortho-ness is her whole personality πLDUβLDUisINTEGER. the leading dimension of the array U.LDU >= max(1,N)β vibe check that one before you call, bestie π«ΆVTβVTisDOUBLE PRECISION array, dimension (LDVT,N). the n by ns orthogonal matrix V inS = U' * B * V. (yes it's called VT even though the sentence says V β transposes are like that π)LDVTβLDVTisINTEGER. the leading dimension of the array VT.WORKβWORKisDOUBLE PRECISION array, dimension (2*N). it's the scratch space. it's doing the behind-the-scenes labor and getting zero credit, we stan πRESIDβRESIDisDOUBLE PRECISION. the test ratio:norm(S - U' * B * V) / ( n * norm(B) * EPS ). if this number is bad, the SVD is bad, and we do not claim it π
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 129 of file dbdt04.f. go check it out, it's right there π
β¨ cute lil sign-off β¨
so basically this page got generated automatically by Doxygen for LAPACK from the source code β not me, I'm just the messenger π§ it's from LAPACK Version 3.12.0, dated for this TESTING/EIG/dbdt04.f(3) page. slay, bye bestie ππΈ
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms