TESTING/LIN/ztrt05.f(3)
π¦ TESTING/LIN/ztrt05.f β bestie, welcome to the ztrt05 page
okay so this is a page from the LAPACK manual gang (Library Functions Manual, no big deal π
), and the star of the show is ztrt05. sit down, grab a strawberry drink π, and let's get into it.
β¨ SYNOPSIS β¨
Functions/Subroutines π
like, the whole cast list:
subroutine ztrt05 (uplo, trans, diag, n, nrhs, a, lda, b, ldb, x, ldx,
xact, ldxact, ferr, berr, reslts)
ZTRT05 β that's her name, that's her whole vibe π
π Function/Subroutine Documentation π
here's the full signature in all its glory, literally not a single character changed:
subroutine ztrt05 (character uplo, character trans, character diag, integer
n, integer nrhs, complex*16, dimension( lda, * ) a, integer lda,
complex*16, dimension( ldb, * ) b, integer ldb, complex*16, dimension(
ldx, * ) x, integer ldx, complex*16, dimension( ldxact, * ) xact,
integer ldxact, double precision, dimension( * ) ferr, double precision,
dimension( * ) berr, double precision, dimension( * ) reslts)
ZTRT05 π«Ά
π§ Purpose π§
!>!> ZTRT05 tests the error bounds from iterative refinement for the!> computed solution to a system of equations A*X = B, where A is a!> triangular n by n matrix.!>!> RESLTS(1) = test of the error bound!> = norm(X - XACT) / ( norm(X) * FERR )!>!> A large value is returned if this ratio is not less than one.!>!> RESLTS(2) = residual from the iterative refinement routine!> = the maximum of BERR / ( (n+1)*EPS + (*) ), where!> (*) = (n+1)*UNFL / (min_i (abs(A)*abs(X) +abs(b))_i )!>
so basically she's the vibe check for your iterative refinement error bounds π if that ratio is not less than one, you're getting a large value back. that's the tea.
π Parameters π
UPLO
!> UPLO is CHARACTER*1!> Specifies whether the matrix A is upper or lower triangular.!> = 'U': Upper triangular!> = 'L': Lower triangular!>
short king of a flag, tells you which triangle of A is the main character π
TRANS
!> TRANS is CHARACTER*1!> Specifies the form of the system of equations.!> = 'N': A * X = B (No transpose)!> = 'T': A'* X = B (Transpose)!> = 'C': A'* X = B (Conjugate transpose = Transpose)!>
pick your transformation era β¨
DIAG
!> DIAG is CHARACTER*1!> Specifies whether or not the matrix A is unit triangular.!> = 'N': Non-unit triangular!> = 'U': Unit triangular!>
'U' means unit triangular, 'N' means not. iconic little binary moment π
N
!> N is INTEGER!> The number of rows of the matrices X, B, and XACT, and the!> order of the matrix A. N >= 0.!>
NRHS
!> NRHS is INTEGER!> The number of columns of the matrices X, B, and XACT.!> NRHS >= 0.!>
right-hand-side count, bestie. more columns, more problems (lovingly) π«Ά
A
!> A is COMPLEX*16 array, dimension (LDA,N)!> The triangular matrix A. If UPLO = 'U', the leading n by n!> upper triangular part of the array A contains the upper!> triangular matrix, and the strictly lower triangular part of!> A is not referenced. If UPLO = 'L', the leading n by n lower!> triangular part of the array A contains the lower triangular!> matrix, and the strictly upper triangular part of A is not!> referenced. If DIAG = 'U', the diagonal elements of A are!> also not referenced and are assumed to be 1.!>
the triangular queen herself π and yes, if DIAG = 'U' the diagonal isn't even looked at β it's just assumed to be 1. she doesn't need to prove anything.
LDA
!> LDA is INTEGER!> The leading dimension of the array A. LDA >= max(1,N).!>
B
!> B is COMPLEX*16 array, dimension (LDB,NRHS)!> The right hand side vectors for the system of linear!> equations.!>
LDB
!> LDB is INTEGER!> The leading dimension of the array B. LDB >= max(1,N).!>
X
!> X is COMPLEX*16 array, dimension (LDX,NRHS)!> The computed solution vectors. Each vector is stored as a!> column of the matrix X.!>
the computed solution β emphasis on computed, she's doing her best π
LDX
!> LDX is INTEGER!> The leading dimension of the array X. LDX >= max(1,N).!>
XACT
!> XACT is COMPLEX*16 array, dimension (LDX,NRHS)!> The exact solution vectors. Each vector is stored as a!> column of the matrix XACT.!>
the exact one. the standard. the one X is being compared against, no pressure babes π
heads up, the dimension in the doc is literally written as(LDX,NRHS)even though the argument's leading dimension isLDXACT. that's just how it's written, we're not editing it, periodt.
LDXACT
!> LDXACT is INTEGER!> The leading dimension of the array XACT. LDXACT >= max(1,N).!>
FERR
!> FERR is DOUBLE PRECISION array, dimension (NRHS)!> The estimated forward error bounds for each solution vector!> X. If XTRUE is the true solution, FERR bounds the magnitude!> of the largest entry in (X - XTRUE) divided by the magnitude!> of the largest entry in X.!>
BERR
!> BERR is DOUBLE PRECISION array, dimension (NRHS)!> The componentwise relative backward error of each solution!> vector (i.e., the smallest relative change in any entry of A!> or B that makes X an exact solution).!>
the smallest relative change in A or B that makes X exact. glow-up potential, honestly β¨
RESLTS
!> RESLTS is DOUBLE PRECISION array, dimension (2)!> The maximum over the NRHS solution vectors of the ratios:!> RESLTS(1) = norm(X - XACT) / ( norm(X) * FERR )!> RESLTS(2) = BERR / ( (n+1)*EPS + (*) )!>
two slots, two ratios, maximum over all the solution vectors. she's compact but she's serving π
πΈ Author πΈ
the legends behind it:
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 180 of file ztrt05.f. β yes, line 180, mark it π
β Author β
Generated automatically by Doxygen for LAPACK from the source code. (she was built by the robots, and honestly? slay π€π)
and that's the whole page bestie, every flag, every bound, every max(1,N). no cap, nothing skipped. π«Ά
LAPACK Β· Version 3.12.0 Β· TESTING/LIN/ztrt05.f(3) β mwah, thanks for reading, ily, go test those error bounds π
π
π¦ 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