ZGQRTS(3)
πΈ NAME πΈ
okay so bestie, this whole page is literally just one file, and its name is a journey:
/home/abuild/rpmbuild/BUILD/lapack-
static-3.12.0-build/lapack-3.12.0/TESTING/EIG/zgqrts.f
and up top the header calls it /home/abui...IG/zgqrts.f(3) from the Library Functions Manual, because paths in manpage headers are always doing the absolute most ππ
this is ZGQRTS β a test routine, and it's giving "I check the homework of the actual math routines" β¨
π SYNOPSIS π
Functions/Subroutines
subroutine ZGQRTS (n, m, p, a, af, q, r, lda, taua, b, bf, z, t, bwk, ldb, taub, work, lwork, rwork, result)β that's the whole cast, no understudies πZGQRTSβ again, because she said her name twice and honestly? iconic π
π Function/Subroutine Documentation π
subroutine ZGQRTS (integer n, integer m, integer p, complex*16, dimension( lda, * ) a, complex*16, dimension( lda, * ) af, complex*16, dimension( lda, * ) q, complex*16, dimension( lda, * ) r, integer lda, complex*16, dimension( * ) taua, complex*16, dimension( ldb, * ) b, complex*16, dimension( ldb, * ) bf, complex*16, dimension( ldb, * ) z, complex*16, dimension( ldb, * ) t, complex*16, dimension( ldb, * ) bwk, integer ldb, complex*16, dimension( * ) taub, complex*16, dimension( lwork ) work, integer lwork, double precision, dimension( * ) rwork, double precision, dimension( 4 ) result)
ZGQRTS
β¨ Purpose β¨
!>!> ZGQRTS tests ZGGQRF, 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.!>
no cap, that's the whole point: she's the vibe-check routine for ZGGQRF, which factors A = Q*R and B = Q*T*Z π¦
π§ Parameters π§
bestie there are so many parameters. we're going through all of them, nobody gets left behind π«Ά
N
!> N is INTEGER!> The number of rows of the matrices A and B. N >= 0.!>
rows of A and B, and N >= 0 fr fr.
M
!> M is INTEGER!> The number of columns of the matrix A. M >= 0.!>
columns of A, M >= 0 β¨
P
!> P is INTEGER!> The number of columns of the matrix B. P >= 0.!>
columns of B, P >= 0 π
A
!> A is COMPLEX*16 array, dimension (LDA,M)!> The N-by-M matrix A.!>
literally the N-by-M matrix A, dimension (LDA,M) πΈ
AF
!> AF is COMPLEX*16 array, dimension (LDA,N)!> Details of the GQR factorization of A and B, as returned!> by ZGGQRF, see CGGQRF for further details.!>
the factorization deets, dimension (LDA,N), handed back by ZGGQRF β and for the further details she's pointing you at CGGQRF, iykyk π
Q
!> Q is COMPLEX*16 array, dimension (LDA,N)!> The M-by-M unitary matrix Q.!>
the M-by-M unitary matrix Q, main character energy π
R
!> R is COMPLEX*16 array, dimension (LDA,MAX(M,N))!>
R, dimension (LDA,MAX(M,N)). that's it, that's the whole description, she's mysterious like that π
LDA
!> LDA is INTEGER!> The leading dimension of the arrays A, AF, R and Q.!> LDA >= max(M,N).!>
leading dimension of A, AF, R, and Q, and you must have LDA >= max(M,N) β
TAUA
!> TAUA is COMPLEX*16 array, dimension (min(M,N))!> The scalar factors of the elementary reflectors, as returned!> by ZGGQRF.!>
scalar factors of the elementary reflectors, dimension (min(M,N)), courtesy of ZGGQRF β¨
B
!> B is COMPLEX*16 array, dimension (LDB,P)!> On entry, the N-by-P matrix A.!>
okay so the manpage literally says "the N-by-P matrix A" here. not me fixing it, not me arguing, just reporting what it says π dimension (LDB,P) though, that part's clear.
BF
!> BF is COMPLEX*16 array, dimension (LDB,N)!> Details of the GQR factorization of A and B, as returned!> by ZGGQRF, see CGGQRF for further details.!>
same deal as AF but for B, dimension (LDB,N), again ZGGQRF and again "see CGGQRF for further details" π¦
Z
!> Z is COMPLEX*16 array, dimension (LDB,P)!> The P-by-P unitary matrix Z.!>
the P-by-P unitary matrix Z, dimension (LDB,P) π
T
!> T is COMPLEX*16 array, dimension (LDB,max(P,N))!>
T, dimension (LDB,max(P,N)). short and sweet, we respect it π
BWK
!> BWK is COMPLEX*16 array, dimension (LDB,N)!>
BWK, dimension (LDB,N). that's the entire paragraph. werk π
LDB
!> LDB is INTEGER!> The leading dimension of the arrays B, BF, Z and T.!> LDB >= max(P,N).!>
leading dimension of B, BF, Z, and T, with LDB >= max(P,N) β non-negotiable bestie β
TAUB
!> TAUB is COMPLEX*16 array, dimension (min(P,N))!> The scalar factors of the elementary reflectors, as returned!> by DGGRQF.!>
scalar factors of the elementary reflectors, dimension (min(P,N)), and this time the manpage says returned by DGGRQF β yep, D, we're keeping it exactly as written π
WORK
!> WORK is COMPLEX*16 array, dimension (LWORK)!>
workspace, dimension (LWORK) β¨
LWORK
!> LWORK is INTEGER!> The dimension of the array WORK, LWORK >= max(N,M,P)**2.!>
dimension of WORK, and the rule is LWORK >= max(N,M,P)**2 β yes, squared, she's not playing around π₯
RWORK
!> RWORK is DOUBLE PRECISION array, dimension (max(N,M,P))!>
DOUBLE PRECISION, dimension (max(N,M,P)) πΈ
RESULT
!> RESULT is DOUBLE PRECISION array, dimension (4)!> The test ratios:!> 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 )!>
okay this is the moment, the four test ratios, dimension (4), and here they are verbatim because numbers are sacred:
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 )
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
four institutions, one routine, absolute group project slay π«Ά
Definition at line 174 of file zgqrts.f. β
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
so nobody wrote this page, a robot did, and honestly? she ate π
LAPACK, Version 3.12.0, /home/abui...IG/zgqrts.f(3) β and that's the whole page bestie, mwah, go run your tests ππβ¨
π¦ 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