DGQRTS(3)
π
DGQRTS(3) β like, the whole entire file /home/abui...IG/dgqrts.f(3)
okay so bestie, welcome to the LAPACK Library Functions Manual π this page is basically a very specific little corner of it, and honestly? it ate. we're talking one (1) subroutine that stress-tests another subroutine. very "let me test my friend's fit before we go out" energy. π
β¨ NAME β¨
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/TESTING/EIG/dgqrts.f
(yeah that's the whole name. it's giving full home address. no nickname, no vibe, just the entire filesystem path. π)
π¦ SYNOPSIS π¦
Functions/Subroutines πΈ
subroutine DGQRTS (n, m, p, a, af, q, r, lda, taua, b, bf, z, t, bwk,
ldb, taub, work, lwork, rwork, result)
DGQRTS β that's it, that's the subroutine. twenty-two arguments and not a single one of them is sorry. π€
π Function/Subroutine Documentation π
here's the full signature, character for character, no cap:
subroutine DGQRTS (integer n, integer m, integer p, double precision,
dimension( lda, * ) a, double precision, dimension( lda, * ) af, double
precision, dimension( lda, * ) q, double precision, dimension( lda, * )
r, integer lda, double precision, dimension( * ) taua, double precision,
dimension( ldb, * ) b, double precision, dimension( ldb, * ) bf, double
precision, dimension( ldb, * ) z, double precision, dimension( ldb, * )
t, double precision, dimension( ldb, * ) bwk, integer ldb, double
precision, dimension( * ) taub, double precision, dimension( lwork )
work, integer lwork, double precision, dimension( * ) rwork, double
precision, dimension( 4 ) result)
DGQRTS π (yes we're saying it twice, the docs say it twice, it's a whole thing)
π Purpose π
fr fr, here's the tea: DGQRTS tests DGGQRF, which computes the GQR factorization of an N-by-M matrix A and a N-by-P matrix B:
A = Q*R and B = Q*T*Z
so like... it's the vibe-checker. it makes sure DGGQRF didn't fumble. π₯
π Parameters π
NβNisINTEGER. the number of rows of the matricesAandB. constraint era:N >= 0. πMβMisINTEGER. the number of columns of the matrixA. constraint era:M >= 0. β¨PβPisINTEGER. the number of columns of the matrixB. constraint era:P >= 0. β¨AβAisDOUBLE PRECISIONarray, dimension(LDA,M). it's theN-by-MmatrixA. main character, honestly. πAFβAFisDOUBLE PRECISIONarray, dimension(LDA,N). details of the GQR factorization ofAandB, as returned byDGGQRF, seeSGGQRFfor further details. (yes, the docs really do point you at the single-precision one for the lore. iykyk. π)QβQisDOUBLE PRECISIONarray, dimension(LDA,N). theM-by-Morthogonal matrixQ. she's orthogonal AND she'sM-by-M, we love a consistent queen. πRβRisDOUBLE PRECISIONarray, dimension(LDA,MAX(M,N)). that's all the docs say and honestly? respect for the mystery. πLDAβLDAisINTEGER. the leading dimension of the arraysA,AF,RandQ. constraint era:LDA >= max(M,N). do not come in under that. π€TAUAβTAUAisDOUBLE PRECISIONarray, dimension(min(M,N)). the scalar factors of the elementary reflectors, as returned byDGGQRF. the little guys. the supporting cast. π«ΆBβBisDOUBLE PRECISIONarray, dimension(LDB,P). on entry, theN-by-PmatrixA. yep β it literally says matrixAin theBentry. that's not me, that's the source, we do not editorialize. πBFβBFisDOUBLE PRECISIONarray, dimension(LDB,N). details of the GQR factorization ofAandB, as returned byDGGQRF, seeSGGQRFfor further details. same lore drop asAF. πZβZisDOUBLE PRECISIONarray, dimension(LDB,P). theP-by-Porthogonal matrixZ. and she slays too. π¦TβTisDOUBLE PRECISIONarray, dimension(LDB,max(P,N)). short entry, no explanation, absolute icon behaviour. βBWKβBWKisDOUBLE PRECISIONarray, dimension(LDB,N). also no explanation. mysterious. love that for us. πΈLDBβLDBisINTEGER. the leading dimension of the arraysB,BF,ZandT. constraint era:LDB >= max(P,N). same energy asLDA, different letters. πTAUBβTAUBisDOUBLE PRECISIONarray, dimension(min(P,N)). the scalar factors of the elementary reflectors, as returned byDGGRQF. (notice: this one'sDGGRQF, notDGGQRFβ one letter different, big consequences, do not mix them up bestie. π)WORKβWORKisDOUBLE PRECISIONarray, dimension(LWORK). the workspace. the grind. πͺLWORKβLWORKisINTEGER. the dimension of the arrayWORK, and the constraint is:LWORK >= max(N,M,P)**2. note the**2. it's squared. it's not a suggestion. π«RWORKβRWORKisDOUBLE PRECISIONarray, dimension(max(N,M,P)). πRESULTβRESULTisDOUBLE PRECISIONarray, dimension(4). the test ratios, and here they are, in all their glory:
RESULT(1) = norm( R - Q'*A ) / ( MAX(M,N)*norm(A)*ULP)
RESULT(2) = norm( T*Z - Q'*B ) / (MAX(P,N)*norm(B)*ULP)
RESULT(3) = norm( I - Q'*Q ) / ( M*ULP )
RESULT(4) = norm( I - Z'*Z ) / ( P*ULP )
four ratios, four vibe checks. if these come back small, everything is, in the technical sense, immaculate. β¨
π§ Author π§
the whole squad showed up for this one:
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Definition π
Definition at line 174 of file dgqrts.f. (line one-seven-four. go look. we'll wait. π
)
π Author π
Generated automatically by Doxygen for LAPACK from the source code. so like, a robot wrote this and we're all just living in it. π€β¨
π«Ά quick reminder bestie: every number, dimension, bound and formula up there is load-bearing. don't come for me if you pass a badLDAβLDA >= max(M,N)is right there, in writing, with receipts.
and that's the page!! mwah π β brought to you by LAPACK, Version 3.12.0, filed under /home/abui...IG/dgqrts.f(3), no date on the footer so don't ask me for one, the manpage simply didn't provide it. periodt. ππβ
π¦ 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