ZPPEQU(3)

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

πŸ’… ZPPEQU(3) β€” zppequ.f

okay so first things first, bestie: this page lives in the Library Functions Manual, and the file it's documenting is literally:

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/zppequ.f

that's the whole NAME section, no notes. iconic of it honestly πŸŽ€


✨ SYNOPSIS ✨

Functions/Subroutines

subroutine ZPPEQU (uplo, n, ap, s, scond, amax, info)
ZPPEQU β€” that's the whole name, that's the whole vibe πŸ’«

πŸ¦‹ Function/Subroutine Documentation πŸ¦‹

subroutine ZPPEQU (character uplo, integer n, complex*16, dimension( * ) ap,
    double precision, dimension( * ) s, double precision scond, double
    precision amax, integer info)

ZPPEQU (again, yes, we know, she said her name twice πŸ’…)

🌸 Purpose 🌸

!>
!> ZPPEQU computes row and column scalings intended to equilibrate a
!> Hermitian positive definite matrix A in packed storage and reduce
!> its condition number (with respect to the two-norm).  S contains the
!> scale factors, S(i)=1/sqrt(A(i,i)), chosen so that the scaled matrix
!> B with elements B(i,j)=S(i)*A(i,j)*S(j) has ones on the diagonal.
!> This choice of S puts the condition number of B within a factor N of
!> the smallest possible condition number over all possible diagonal
!> scalings.
!>

so basically: you hand her a Hermitian positive definite matrix A in packed storage, and she figures out the glow-up ✨ β€” a set of scale factors S where S(i)=1/sqrt(A(i,i)), so that the scaled matrix B with B(i,j)=S(i)*A(i,j)*S(j) has ones on the diagonal. and the way she picks S puts the condition number of B within a factor N of the smallest possible condition number over all possible diagonal scalings. she ate that fr fr πŸ”₯

🧚 Parameters 🧚

  • UPLO β€” UPLO is CHARACTER*1
    • = 'U': Upper triangle of A is stored;
    • = 'L': Lower triangle of A is stored.

pick your fighter: upper or lower triangle, no in-between πŸ™ˆ

  • N β€” N is INTEGER

the order of the matrix A. and N >= 0, periodt.

  • AP β€” AP is COMPLEX*16 array, dimension (N*(N+1)/2)

this is literally the upper or lower triangle of the Hermitian matrix A, packed columnwise in a linear array. the j-th column of A is stored in AP like so:

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.

yes the index math is giving main character energy, copy it exactly bestie 🫢

  • S β€” S is DOUBLE PRECISION array, dimension (N)

if INFO = 0, S contains the scale factors for A. queen of delivery πŸ‘‘

  • SCOND β€” SCOND is DOUBLE PRECISION

if INFO = 0, S contains the ratio of the smallest S(i) to the largest S(i). and listen: if SCOND >= 0.1 and AMAX is neither too large nor too small, it is not worth scaling by S. so like, don't bother, it's fine 😌

  • AMAX β€” AMAX is DOUBLE PRECISION

absolute value of the largest matrix element. if AMAX is very close to overflow or very close to underflow, the matrix should be scaled. ⚠️ no cap, pay attention to this one.

  • INFO β€” INFO is INTEGER
    • = 0: successful exit πŸŽ‰
    • < 0: if INFO = -i, the i-th argument had an illegal value
    • > 0: if INFO = i, the i-th diagonal element is nonpositive

πŸ‘‘ Author πŸ‘‘

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

Definition at line 116 of file zppequ.f. πŸ“


⭐ Author ⭐

Generated automatically by Doxygen for LAPACK from the source code. (she's a bot, she's still slaying πŸ’–)


and that's the whole page, bestie β€” hope it slaps πŸ¦‹πŸ’œ

sign-off szn πŸŽ€: this beauty is LAPACK, Version 3.12.0, from /home/abui...RC/zppequ.f(3), generated by Doxygen for LAPACK straight from the source code. mwah πŸ’‹

πŸ“¦ where this page comes from