ZHPT01(3)

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

πŸ’œ ZHPT01(3) β€” like, the LAPACK test-routine era πŸ’œ

okay so bestie, quick vibe check: this is a page from the LAPACK Library Functions Manual, and it lives at this absolutely unhinged path:

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

(also written as /home/abui...IN/zhpt01.f(3) up in the corner, because paths are long and life is short ✨)


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

  • subroutine ZHPT01 (uplo, n, a, afac, ipiv, c, ldc, rwork, resid) β€” ZHPT01

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

subroutine ZHPT01 (character uplo, integer n, complex*16, dimension( * ) a, complex*16, dimension( * ) afac, integer, dimension( * ) ipiv, complex*16, dimension( ldc, * ) c, integer ldc, double precision, dimension( * ) rwork, double precision resid)

ZHPT01

✨ Purpose ✨

!>
!> ZHPT01 reconstructs a Hermitian indefinite packed matrix A from its
!> block L*D*L' or U*D*U' factorization and computes the residual
!>    norm( C - A ) / ( N * norm(A) * EPS ),
!> where C is the reconstructed matrix, EPS is the machine epsilon,
!> L' is the conjugate transpose of L, and U' is the conjugate transpose
!> of U.
!>

so basically: take a Hermitian indefinite packed matrix A, rebuild it from its block L*D*L' or U*D*U' factorization, and then check how close you got with norm( C - A ) / ( N * norm(A) * EPS ). C is the reconstructed matrix, EPS is machine epsilon, L' is the conjugate transpose of L, and U' is the conjugate transpose of U. that's it, that's the whole personality πŸ’…


🌸 Parameters 🌸

  • UPLO β€” UPLO is CHARACTER*1. tells us which triangle of the Hermitian matrix A is stored: = 'U' means upper triangular, = 'L' means lower triangular. pick a side, bestie 🫢
  • N β€” N is INTEGER. the number of rows and columns of the matrix A. constraint era: N >= 0 (yes, zero counts, we don't discriminate).
  • A β€” A is COMPLEX*16 array, dimension (N*(N+1)/2). the original Hermitian matrix A, stored as a packed triangular matrix. packed. no wasted space. lowkey iconic πŸ’€
  • AFAC β€” AFAC is COMPLEX*16 array, dimension (N*(N+1)/2). the factored form of the matrix A, also stored as a packed triangular matrix. AFAC contains the block diagonal matrix D and the multipliers used to obtain the factor L or U from the block L*D*L' or U*D*U' factorization, as computed by ZHPTRF. the receipts, basically 🧾
  • IPIV β€” IPIV is INTEGER array, dimension (N). the pivot indices from ZHPTRF. 🎯
  • C β€” C is COMPLEX*16 array, dimension (LDC,N). that's the output-ish matrix, the glow-up version πŸ¦‹
  • LDC β€” LDC is INTEGER. the leading dimension of the array C. rule: LDC >= max(1,N). respect the constraint or don't come to the group chat πŸ™ˆ
  • RWORK β€” RWORK is DOUBLE PRECISION array, dimension (N). scratch space, doing the real work behind the scenes πŸ’–
  • RESID β€” RESID is DOUBLE PRECISION. the final answer, the whole point:
    • if UPLO = 'L': norm(L*D*L' - A) / ( N * norm(A) * EPS )
    • if UPLO = 'U': norm(U*D*U' - A) / ( N * norm(A) * EPS )

copy it character for character, i don't make the rules ✨


πŸ‘‘ Author πŸ‘‘

the legends themselves:

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

Definition at line 112 of file zhpt01.f.


⭐ Author (again, yes really) ⭐

Generated automatically by Doxygen for LAPACK from the source code. no human wrote this bit, the robot did πŸ€–πŸ’…


so yeah, that's ZHPT01. check your Hermitian packed reconstruction residual, hydrate, and stan LAPACK. periodt. πŸŒˆπŸ’–

β€” cute sign-off: this was LAPACK, Version 3.12.0, and the page you were reading is /home/abui...IN/zhpt01.f(3) πŸŽ€πŸ«Άβœ¨

πŸ“¦ where this page comes from