TESTING/EIG/dbdt04.f(3)

πŸ“¦
version 3.12.1 Β· 3 versions
, in arch rolling

πŸ’… 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, DBDT04 itself πŸ’«

πŸ¦‹ 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 β€” UPLO is CHARACTER*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 β€” N is INTEGER. the order of the matrix B. that's the size of the whole situation fr fr.
  • D β€” D is DOUBLE PRECISION array, dimension (N). the n diagonal elements of the bidiagonal matrix B. iconic diagonal behavior ⭐
  • E β€” E is DOUBLE PRECISION array, dimension (N-1). the (n-1) superdiagonal elements of the bidiagonal matrix B if UPLO = 'U', or the (n-1) subdiagonal elements of B if UPLO = 'L'. lowkey the same array, highkey different address depending on which way you're going πŸ™ˆ
  • S β€” S is DOUBLE PRECISION array, dimension (NS). the singular values from the (partial) SVD of B, sorted in decreasing order. sorted! we love a structured queen πŸ‘‘
  • NS β€” NS is INTEGER. the number of singular values/vectors from the (partial) SVD of B. note that "partial" is doing a lot of work here, iykyk.
  • U β€” U is DOUBLE PRECISION array, dimension (LDU,NS). the n by ns orthogonal matrix U in S = U' * B * V. ortho-ness is her whole personality πŸ’œ
  • LDU β€” LDU is INTEGER. the leading dimension of the array U. LDU >= max(1,N) β€” vibe check that one before you call, bestie 🫢
  • VT β€” VT is DOUBLE PRECISION array, dimension (LDVT,N). the n by ns orthogonal matrix V in S = U' * B * V. (yes it's called VT even though the sentence says V β€” transposes are like that 😭)
  • LDVT β€” LDVT is INTEGER. the leading dimension of the array VT.
  • WORK β€” WORK is DOUBLE 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 β€” RESID is DOUBLE 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