CBDT02(3)

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

πŸŽ€ NAME πŸŽ€

ok so bestie, buckle up β€” this page is from the Library Functions Manual, and the star of the show is this file:

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

like yes that's a whole mouthful of a path, we know. it's the cbdt02.f source file living in the LAPACK TESTING/EIG directory and it's iconic. πŸ’…


✨ SYNOPSIS ✨

🌸 Functions/Subroutines

ok here's the actual call, no cap:

subroutine CBDT02 (m, n, b, ldb, c, ldc, u, ldu, work, rwork, resid)
    CBDT02

that's it. that's the whole vibe. CBDT02 with eleven arguments and main character energy. πŸ‘‘


πŸ’– Function/Subroutine Documentation πŸ’–

πŸ¦‹ the full signature, in all its glory

subroutine CBDT02 (integer m, integer n, complex, dimension( ldb, * ) b,
    integer ldb, complex, dimension( ldc, * ) c, integer ldc, complex,
    dimension( ldu, * ) u, integer ldu, complex, dimension( * ) work, real,
    dimension( * ) rwork, real resid)
    CBDT02

look at her. so many arguments. so many dimensions. we love a thorough queen. 🫢

⭐ Purpose

ok so what does this actually do, you ask? CBDT02 tests the change of basis C = U**H * B by computing the residual β€” and here's the formula, exactly as written, because she's important:

RESID = norm(B - U * C) / ( max(m,n) * norm(B) * EPS ),

where B and C are M by N matrices, U is an M by M orthogonal matrix, and EPS is the machine precision. literally that's the whole job. measure how badly the change of basis went. slay. ✨

πŸŽ€ Parameters

ok parameter time, bestie, and there's a LOT of them so stay with me:

  • M β€” M is INTEGER, and it's The number of rows of the matrices B and C and the order of the matrix Q. (yes it really says Q in there β€” we did not make that up, that's canon, we're just reading it to you verbatim πŸ’€)
  • N β€” N is INTEGER, The number of columns of the matrices B and C.
  • B β€” B is COMPLEX array, dimension (LDB,N), and it's The m by n matrix B.
  • LDB β€” LDB is INTEGER, The leading dimension of the array B. LDB >= max(1,M). bestie, respect the >=, it's not a suggestion. πŸ™ˆ
  • C β€” C is COMPLEX array, dimension (LDC,N), and it's The m by n matrix C, assumed to contain U**H * B. assumed β€” meaning you better have put that there correctly or the whole test is giving nothing. πŸ’€
  • LDC β€” LDC is INTEGER, The leading dimension of the array C. LDC >= max(1,M).
  • U β€” U is COMPLEX array, dimension (LDU,M), and it's The m by m orthogonal matrix U. the main character matrix, honestly. πŸ‘‘
  • LDU β€” LDU is INTEGER, The leading dimension of the array U. LDU >= max(1,M).
  • WORK β€” WORK is COMPLEX array, dimension (M) β€” that's it, that's the whole description, no notes. 🫢
  • RWORK β€” RWORK is REAL array, dimension (M) β€” same deal, short and sweet. 🌸
  • RESID β€” RESID is REAL, and then the formula again for the people in the back:
RESID = norm(B - U * C) / ( max(m,n) * norm(B) * EPS ),

that's your answer, that's your output, that's the whole point of the function. periodt. πŸ’…

ngl, that RESID line is the payoff of the entire page β€” it's the residual the routine computes, so if you're comparing numbers later, that's the one. πŸ”₯

πŸ‘‘ Author

the brains behind the operation, take a bow:

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

Definition at line 118 of file cbdt02.f. β€” line 118, bestie, go look, we'll wait. πŸ¦‹


🌈 Author 🌈

Generated automatically by Doxygen for LAPACK from the source code.

yep, nobody hand-wrote this one, the robots did it, and honestly? they ate. πŸ€–βœ¨


and that's the whole page, bestie β€” go forth and test those bases πŸ§šπŸ’œ

cute little sign-off: this gorgeousness is LAPACK, Version 3.12.0, and it lives at /home/abui...IG/cbdt02.f(3). mwah. πŸ’‹πŸ“

πŸ“¦ where this page comes from