TESTING/LIN/zgbt02.f(3)
π TESTING/LIN/zgbt02.f(3)
ok so bestie, welcome to TESTING/LIN/zgbt02.f β she's a LAPACK test routine and honestly? iconic. this is the manpage for zgbt02, and she has exactly one job: check whether the answer to a banded system came out right. no cap, that's the whole vibe. π
β¨ NAME β¨
TESTING/LIN/zgbt02.f β the file you're looking at right now, and also the home of the subroutine zgbt02, which is the actual main character here. π
πΈ SYNOPSIS πΈ
Functions/Subroutines
subroutine zgbt02 (trans, m, n, kl, ku, nrhs, a, lda, x, ldx, b, ldb, rwork, resid)β that's her full government name.ZGBT02.
π¦ Function/Subroutine Documentation π¦
subroutine zgbt02 (character trans, integer m, integer n, integer kl,
integer ku, integer nrhs, complex*16, dimension( lda, * ) a, integer
lda, complex*16, dimension( ldx, * ) x, integer ldx, complex*16,
dimension( ldb, * ) b, integer ldb, double precision, dimension( * )
rwork, double precision resid)
ZGBT02 β the routine. she's here, she's serving, she's computing residuals. β¨
π― Purpose
!>!> ZGBT02 computes the residual for a solution of a banded system of!> equations op(A)*X = B:!> RESID = norm(B - op(A)*X) / ( norm(op(A)) * norm(X) * EPS ),!> where op(A) = A, A**T, or A**H, depending on TRANS, and EPS is the!> machine epsilon.!>
so basically bestie, she takes your solution, plugs it back in, and asks "does this actually work tho?" and the answer comes out as RESID. and op(A) is A, A**T, or A**H depending on TRANS, and EPS is the machine epsilon. lowkey elegant. π
π§ Parameters π§
TRANS
!> TRANS is CHARACTER*1!> Specifies the form of the system of equations:!> = 'N': A * X = B (No transpose)!> = 'T': A**T * X = B (Transpose)!> = 'C': A**H * X = B (Conjugate transpose)!>
a CHARACTER*1, and she picks which flavor of the system we're solving. 'N' = no transpose, 'T' = transpose, 'C' = conjugate transpose. pick your fighter. π
M
!> M is INTEGER!> The number of rows of the matrix A. M >= 0.!>
an INTEGER, the number of rows of A. and bestie, M >= 0. always. β
N
!> N is INTEGER!> The number of columns of the matrix A. N >= 0.!>
an INTEGER, number of columns of A, with N >= 0. she's consistent like that. π
KL
!> KL is INTEGER!> The number of subdiagonals within the band of A. KL >= 0.!>
an INTEGER β how many subdiagonals live inside the band of A. also KL >= 0. the band is the whole point, iykyk. π
KU
!> KU is INTEGER!> The number of superdiagonals within the band of A. KU >= 0.!>
an INTEGER β the superdiagonal count for the band of A. KU >= 0. yes she has both KL and KU, she's a banded girlie. π
NRHS
!> NRHS is INTEGER!> The number of columns of B. NRHS >= 0.!>
an INTEGER β number of columns of B, aka how many right-hand sides we're juggling. NRHS >= 0. π
A
!> A is COMPLEX*16 array, dimension (LDA,N)!> The original matrix A in band storage, stored in rows 1 to!> KL+KU+1.!>
a COMPLEX*16 array of dimension (LDA,N). it's the original matrix A, chillin' in band storage, living in rows 1 to KL+KU+1. π
LDA
!> LDA is INTEGER!> The leading dimension of the array A. LDA >= max(1,KL+KU+1).!>
an INTEGER, the leading dimension of A. and the rule is LDA >= max(1,KL+KU+1). respect the constraint, bestie. π«Ά
X
!> X is COMPLEX*16 array, dimension (LDX,NRHS)!> The computed solution vectors for the system of linear!> equations.!>
a COMPLEX*16 array of dimension (LDX,NRHS) β the computed solution vectors for the system. the thing we're literally checking. π
LDX
!> LDX is INTEGER!> The leading dimension of the array X. If TRANS = 'N',!> LDX >= max(1,N); if TRANS = 'T' or 'C', LDX >= max(1,M).!>
an INTEGER, leading dimension of X. it's conditional and she's very clear about it: if TRANS = 'N', then LDX >= max(1,N); if TRANS = 'T' or 'C', then LDX >= max(1,M). flip accordingly. π₯
B
!> B is COMPLEX*16 array, dimension (LDB,NRHS)!> On entry, the right hand side vectors for the system of!> linear equations.!> On exit, B is overwritten with the difference B - A*X.!>
a COMPLEX*16 array of dimension (LDB,NRHS). on entry she holds the right-hand side vectors; on exit she gets overwritten with the difference B - A*X. not me gasping β she does not survive the call. π
LDB
!> LDB is INTEGER!> The leading dimension of the array B. IF TRANS = 'N',!> LDB >= max(1,M); if TRANS = 'T' or 'C', LDB >= max(1,N).!>
an INTEGER, leading dimension of B. note the capital IF in the original, she's yelling a little. TRANS = 'N' β LDB >= max(1,M); TRANS = 'T' or 'C' β LDB >= max(1,N). π¦
RWORK
!> RWORK is DOUBLE PRECISION array, dimension (MAX(1,LRWORK)),!> where LRWORK >= M when TRANS = 'T' or 'C'; otherwise, RWORK!> is not referenced.!>
a DOUBLE PRECISION array of dimension (MAX(1,LRWORK)), where LRWORK >= M when TRANS = 'T' or 'C'. otherwise? RWORK is literally not referenced. she's only here when she's needed. π
RESID
!> RESID is DOUBLE PRECISION!> The maximum over the number of right hand sides of!> norm(B - op(A)*X) / ( norm(op(A)) * norm(X) * EPS ).!>
a DOUBLE PRECISION, and she is the moment: the maximum over the number of right-hand sides of norm(B - op(A)*X) / ( norm(op(A)) * norm(X) * EPS ). that's the whole verdict, right there. π
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
the whole squad contributed. shoutout. π
Definition at line 146 of file zgbt02.f.
β Author (again, but the meta one) β
Generated automatically by Doxygen for LAPACK from the source code. so like, nobody hand-wrote this, it's a bot doing its little thing. π€β¨
ok that's the whole page bestie, every flag and every constraint intact, no details dropped, we ate and left no crumbs. π
LAPACK β Version 3.12.0 π that's the version, that's the footer, and this manpage for TESTING/LIN/zgbt02.f(3) is officially done. periodt. π¦πΈπ
π¦ 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