TESTING/LIN/ztrt05.f(3)

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

πŸ¦‹ 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 is LDXACT. 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