TESTING/LIN/zgbt02.f(3)

πŸ“¦
version 3.12.1 Β· 2 versions
, in arch rolling

πŸ’… 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