CBDT02(3)
π 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'sThe number of rows of the matrices B and C and the order of the matrix Q.(yes it really saysQin 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'sThe 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'sThe 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'sThe 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
- 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