TESTING/LIN/zqrt03.f(3)
π¦ TESTING/LIN/zqrt03.f π¦
okay so bestie, welcome to the little corner of LAPACK that's literally only job is checking whether ZUNMQR is doing its thing correctly. it's a test routine, it's iconic, it's giving "quality assurance but make it math." no cap. π
the manual here is TESTING/LIN/zqrt03.f(3) β that's the file, that's the vibe, iykyk.
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine zqrt03 (m, n, k, af, c, cc, q, lda, tau, work, lwork, rwork, result)β the one and only,ZQRT03herself π
π Function/Subroutine Documentation π
subroutine zqrt03 (integer m, integer n, integer k, complex*16, dimension(
lda, * ) af, complex*16, dimension( lda, * ) c, complex*16, dimension(
lda, * ) cc, complex*16, dimension( lda, * ) q, integer lda, complex*16,
dimension( * ) tau, complex*16, dimension( lwork ) work, integer lwork,
double precision, dimension( * ) rwork, double precision, dimension( * )
result)
ZQRT03 β say it with me, bestie. π«Ά
πΈ Purpose πΈ
so ZQRT03 tests ZUNMQR, which computes Q*C, Q'*C, C*Q or C*Q'. that's the whole assignment, and she ate. π₯
ZQRT03 compares the results of a call to ZUNMQR with the results of forming Q explicitly by a call to ZUNGQR and then performing matrix multiplication by a call to ZGEMM. like β two different routes to the same answer, and we're checking they actually match. main character energy fr fr. π
π Parameters π
MβM is INTEGER. the order of the orthogonal matrixQ.M >= 0. that's the rule, no exceptions. βNβN is INTEGER. the number of rows or columns of the matrixC;Cism-by-nifQis applied from the left, orn-by-mifQis applied from the right. and yes:N >= 0.KβK is INTEGER. the number of elementary reflectors whose product defines the orthogonal matrixQ.M >= K >= 0. respect the sandwich constraint, girlies. π₯ͺAFβAF is COMPLEX*16 array, dimension (LDA,N). details of the QR factorization of anm-by-nmatrix, as returned byZGEQRF. seeZGEQRFfor further details β she's the source of truth, go read her. πCβC is COMPLEX*16 array, dimension (LDA,N). that's it. that's the entry. she's just out here being an array. π¦CCβCC is COMPLEX*16 array, dimension (LDA,N). same energy, different name. πQβQ is COMPLEX*16 array, dimension (LDA,M). the star of the show honestly. πLDAβLDA is INTEGER. the leading dimension of the arraysAF,C,CC, andQ. one number, four arrays, so much responsibility. πTAUβTAU is COMPLEX*16 array, dimension (min(M,N)). the scalar factors of the elementary reflectors corresponding to the QR factorization inAF. tiny array, huge role. β¨WORKβWORK is COMPLEX*16 array, dimension (LWORK). the workspace. she's doing her best. π«ΆLWORKβLWORK is INTEGER. the length ofWORK.LWORKmust be at leastM, and should beM*NB, whereNBis the blocksize for this environment. so like, don't skimp on the workspace bestie, she has opinions. πRWORKβRWORK is DOUBLE PRECISION array, dimension (M). real ones only. πRESULTβRESULT is DOUBLE PRECISION array, dimension (4). the test ratios compare two techniques for multiplying a random matrixCby anm-by-morthogonal matrixQ, and here's the receipts:
RESULT(1) = norm( Q*C - Q*C ) / ( M * norm(C) * EPS )
RESULT(2) = norm( C*Q - C*Q ) / ( M * norm(C) * EPS )
RESULT(3) = norm( Q'*C - Q'*C )/ ( M * norm(C) * EPS )
RESULT(4) = norm( C*Q' - C*Q' )/ ( M * norm(C) * EPS )
four numbers, four verdicts, absolute slay. β
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
the whole squad, honestly. π«Ά
Definition at line 134 of file zqrt03.f.
π§ Author (again, but the meta one) π§
Generated automatically by Doxygen for LAPACK from the source code. so like, nobody hand-wrote this and honestly? you can tell, but she's still cute. π
okay bye bestie, go check your RESULT values and remember: LWORK must be at least M. π
LAPACK β Version 3.12.0 Β· TESTING/LIN/zqrt03.f(3) Β· mwah, see u on the next page β¨ππ
π¦ 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