ZPOT05(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

πŸ’… ZPOT05(3) β€” like, the zpot05.f page from the LAPACK manual, bestie

okay so this is a Library Functions Manual page, and literally the whole thing lives at:

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/TESTING/LIN/zpot05.f

like that's the whole vibe. it's a Fortran file in the LAPACK TESTING/LIN directory and it's about to test somebody's error bounds. no cap. 🧚


✨ SYNOPSIS ✨

🌸 Functions/Subroutines

subroutine ZPOT05 (uplo, n, nrhs, a, lda, b, ldb, x, ldx, xact, ldxact,
    ferr, berr, reslts)
    ZPOT05

πŸŽ€ Function/Subroutine Documentation πŸŽ€

πŸ¦‹ the signature, in full, verbatim, no edits

subroutine ZPOT05 (character uplo, 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)
    ZPOT05

honestly? iconic. look at all those arguments. she's got range. πŸ’œ


πŸ”₯ Purpose πŸ”₯

bestie, listen. ZPOT05 tests the error bounds from iterative refinement for the computed solution to a system of equations A*X = B, where A is a Hermitian n by n matrix. that's the whole job. that's her main character energy.

here's the math, and i'm giving it to you exactly how she wrote it:

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. 🫢 (so like... big number = bad news, iykyk.)

and then:

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 )

periodt. that's it. that's the purpose.


⭐ Parameters ⭐

🌈 UPLO

UPLO is CHARACTER*1 β€” it specifies whether the upper or lower triangular part of the Hermitian matrix A is stored. that's the vibe check for where your data lives:

  • = 'U': Upper triangular
  • = 'L': Lower triangular

🌈 N

N is INTEGER β€” the number of rows of the matrices X, B, and XACT, and the order of the matrix A. so N >= 0, obviously. πŸ’…

🌈 NRHS

NRHS is INTEGER β€” the number of columns of the matrices X, B, and XACT. NRHS >= 0. slay.

🌈 A

A is COMPLEX*16 array, dimension (LDA,N) β€” the Hermitian matrix A. here's the tea:

  • if UPLO = 'U', the leading n by n upper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced.
  • if UPLO = 'L', the leading n by n lower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced.

🌈 LDA

LDA is INTEGER β€” the leading dimension of the array A. LDA >= max(1,N). don't come at her with a smaller number, she will know. πŸ™ˆ

🌈 B

B is COMPLEX*16 array, dimension (LDB,NRHS) β€” the right hand side vectors for the system of linear equations. the "= B" part of A*X = B. iconic.

🌈 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. note the word computed, she's being precise about it. πŸ’–

🌈 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. yes the dimension is written as LDX here, that's not a typo on my part, that's literally what the page says. πŸ¦‹

🌈 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. so like, 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. that's the definition, i'm not paraphrasing that one, it's load-bearing. 🫢

🌈 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). lowkey the most interesting one ngl.

🌈 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 NRHS vectors. she contains multitudes. ✨


πŸ‘‘ Author πŸ‘‘

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

a whole committee of legends, fr fr. 🫢

πŸ“Œ Definition at line 163 of file zpot05.f. β€” go look, it's really there.

πŸ’€ Author (the other one) πŸ’€

Generated automatically by Doxygen for LAPACK from the source code. so nobody hand-wrote this part, the robot did. respect the robot. πŸ€–


and that's the page!! πŸ’… this whole thing ships with LAPACK, Version 3.12.0, and the file it came from is that /home/abui...IN/zpot05.f(3) path at the bottom (yeah, the truncated one β€” that's literally how it's printed, don't @ me). mwah, go test those error bounds bestie πŸ’–πŸŽ€πŸ¦‹πŸŒΈ

πŸ“¦ where this page comes from