STPT05(3)

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

🌸 STPT05(3) β€” like, the triangular-packed error-bound tester, bestie 🌸

okay so first things first, the manual name here is Library Functions Manual, and the whole page lives at /home/abui...IN/stpt05.f(3). Cute. Let's get into it πŸ’…


✨ NAME ✨

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

that's the whole name section. yes, it's just a path. she's lowkey minimal, we respect it πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

subroutine STPT05 (uplo, trans, diag, n, nrhs, ap, b, ldb, x, ldx, xact,
    ldxact, ferr, berr, reslts)
    STPT05

πŸ‘‘ Function/Subroutine Documentation πŸ‘‘

subroutine STPT05 (character uplo, character trans, character diag, integer
    n, integer nrhs, real, dimension( * ) ap, real, dimension( ldb, * ) b,
    integer ldb, real, dimension( ldx, * ) x, integer ldx, real, dimension(
    ldxact, * ) xact, integer ldxact, real, dimension( * ) ferr, real,
    dimension( * ) berr, real, dimension( * ) reslts)
    STPT05

🧚 Purpose 🧚

ok so here's the vibe β€” STPT05 tests the error bounds from iterative refinement for the computed solution to a system of equations A*X = B, where A is a triangular matrix in packed storage format. iconic behavior honestly ✨

!>
!> STPT05 tests the error bounds from iterative refinement for the
!> computed solution to a system of equations A*X = B, where A is a
!> triangular matrix in packed storage format.
!>
!> 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 )
!>

one (1) thing to note, bestie β€” a large value comes back if that ratio is not less than one. so like, big number = bad vibes. noted 🫢


πŸ’– Parameters πŸ’–

UPLO

!>          UPLO is CHARACTER*1
!>          Specifies whether the matrix A is upper or lower triangular.
!>          = 'U':  Upper triangular
!>          = 'L':  Lower triangular
!>

which triangle are we even talking about. 'U' upper, 'L' lower, pick your fighter πŸ’…

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)
!>

'N' = no transpose, 'T' = transpose, 'C' = conjugate transpose β€” and for real matrices 'C' is literally just 'T', so she's giving the same energy twice 😭

DIAG

!>          DIAG is CHARACTER*1
!>          Specifies whether or not the matrix A is unit triangular.
!>          = 'N':  Non-unit triangular
!>          = 'U':  Unit triangular
!>

is the diagonal unit or not. 'N' = not unit, 'U' = unit. that's the whole thing πŸŽ€

N

!>          N is INTEGER
!>          The number of rows of the matrices X, B, and XACT, and the
!>          order of the matrix A.  N >= 0.
!>

number of rows of X, B, and XACT, and the order of A. N >= 0, no negatives allowed, periodt βœ‹

NRHS

!>          NRHS is INTEGER
!>          The number of columns of the matrices X, B, and XACT.
!>          NRHS >= 0.
!>

how many columns X, B, and XACT have. NRHS >= 0 πŸ’œ

AP

!>          AP is REAL array, dimension (N*(N+1)/2)
!>          The upper or lower triangular matrix A, packed columnwise in
!>          a linear array.  The j-th column of A is stored in the array
!>          AP as follows:
!>          if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
!>          if UPLO = 'L', AP(i + (j-1)*(2n-j)/2) = A(i,j) for j<=i<=n.
!>          If DIAG = 'U', the diagonal elements of A are not referenced
!>          and are assumed to be 1.
!>

the matrix A herself, packed columnwise into a linear array, dimension (N*(N+1)/2). the indexing is giving math girlie so here it is again, exactly:

  • if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
  • if UPLO = 'L', AP(i + (j-1)*(2n-j)/2) = A(i,j) for j<=i<=n.
and if DIAG = 'U', the diagonal elements of A are not referenced and are assumed to be 1. so don't go putting stuff there and expecting it to matter πŸ™ˆ

B

!>          B is REAL array, dimension (LDB,NRHS)
!>          The right hand side vectors for the system of linear
!>          equations.
!>

the right hand side vectors, dimension (LDB,NRHS). she's the "= B" in A*X = B πŸ’–

LDB

!>          LDB is INTEGER
!>          The leading dimension of the array B.  LDB >= max(1,N).
!>

leading dimension of B, and LDB >= max(1,N). don't test her on this one 🌸

X

!>          X is REAL array, dimension (LDX,NRHS)
!>          The computed solution vectors.  Each vector is stored as a
!>          column of the matrix X.
!>

the computed solution vectors, dimension (LDX,NRHS), one vector per column of X ✨

LDX

!>          LDX is INTEGER
!>          The leading dimension of the array X.  LDX >= max(1,N).
!>

leading dimension of X. LDX >= max(1,N), same drill πŸ¦‹

XACT

!>          XACT is REAL array, dimension (LDX,NRHS)
!>          The exact solution vectors.  Each vector is stored as a
!>          column of the matrix XACT.
!>

the exact solution vectors, dimension (LDX,NRHS), each stored as a column of XACT. yes the dimension says LDX and not LDXACT β€” that's what the page says, don't come for me 😭

LDXACT

!>          LDXACT is INTEGER
!>          The leading dimension of the array XACT.  LDXACT >= max(1,N).
!>

leading dimension of XACT. LDXACT >= max(1,N) πŸŽ€

FERR

!>          FERR is REAL 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.
!>

the estimated forward error bounds for each solution vector X, dimension (NRHS). 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. she's a bounder, she bounds πŸ’…

BERR

!>          BERR is REAL 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 componentwise relative backward error of each solution vector, dimension (NRHS) β€” i.e., the smallest relative change in any entry of A or B that makes X an exact solution. the way she's literally "how much do i gotta nudge you to make this correct" πŸ”₯

RESLTS

!>          RESLTS is REAL 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 + (*) )
!>

the payoff, dimension (2). it's the maximum over the NRHS solution vectors of the ratios:

RESLTS(1) = norm(X - XACT) / ( norm(X) * FERR )
RESLTS(2) = BERR / ( (n+1)*EPS + (*) )

main character array honestly πŸ‘‘


🌈 Author 🌈

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

and she's Definition at line 172 of file stpt05.f. β€” go look, it's right there πŸ“


⭐ Author ⭐

Generated automatically by Doxygen for LAPACK from the source code. a bot wrote this page, and honestly? she ate πŸ€–βœ¨


and that's the whole thing bestie, mwah 🫢

LAPACK β€” Version 3.12.0 β€” /home/abui...IN/stpt05.f(3) πŸ’– no cap, that's the version and the date-ish footer info, signed off with love from your favorite triangular-packed testing girlie 🌸
πŸ“¦ where this page comes from