SRC/cpoequb.f(3)

hey bestie πŸ’– welcome to the SRC/cpoequb.f(3) page from the Library Functions Manual β€” the file in the spotlight is SRC/cpoequb.f, and it's giving β€œsubroutine with main character energy.” πŸŽ€

✨ NAME ✨

SRC/cpoequb.f β€” that's the name. Short, sweet, and absolutely ate. πŸ’…

πŸ¦‹ SYNOPSIS πŸ¦‹

🧚 Functions/Subroutines 🧚

okay so the synopsis has exactly one little star:

subroutine cpoequb (n, a, lda, s, scond, amax, info)
    CPOEQUB

That's CPOEQUB, no cap. ⭐

🌸 Function/Subroutine Documentation 🌸

subroutine cpoequb (integer n, complex, dimension( lda, * ) a, integer lda,
       real, dimension( * ) s, real scond, real amax, integer info)
       CPOEQUB

πŸ’– Purpose πŸ’–

okay so CPOEQUB computes row and column scalings that are intended to equilibrate a Hermitian positive definite matrix A and reduce its condition number (with respect to the two-norm). The scale factors are in S, with 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. ✨

okay, the glow-up from CPOEQU is that this routine restricts the scaling factors to a power of the radix. Barring over- and underflow, scaling by these factors introduces no additional rounding errors. The catch is that the scaled diagonal entries are no longer approximately 1 β€” instead they lie between sqrt(radix) and 1/sqrt(radix). Trade-off acknowledged, still iconic. πŸ’…

πŸŽ€ Parameters πŸŽ€

  • N β€” N is INTEGER: the order of the matrix A. N >= 0. 🌸
  • A β€” A is COMPLEX array, dimension (LDA,N): the N-by-N Hermitian positive definite matrix whose scaling factors are to be computed. Only the diagonal elements of A are referenced. πŸ¦‹
  • LDA β€” LDA is INTEGER: the leading dimension of the array A. LDA >= max(1,N). ⭐
  • S β€” S is REAL array, dimension (N): if INFO = 0, S contains the scale factors for A. πŸ’–
  • SCOND β€” SCOND is REAL: if INFO = 0, S contains the ratio of the smallest S(i) to the largest S(i). If SCOND >= 0.1 and AMAX is neither too large nor too small, it is not worth scaling by S. (yes, the page says S right there β€” I'm just the messenger 😭) 🫢
  • AMAX β€” AMAX is REAL: absolute value of largest matrix element. If AMAX is very close to overflow or very close to underflow, the matrix should be scaled. πŸ”₯
  • 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 118 of file cpoequb.f.

🌈 Author 🌈

Generated automatically by Doxygen for LAPACK from the source code.


and that's the whole page, bestie 🫢 the footer stamps this as LAPACK Version 3.12.0 / SRC/cpoequb.f(3) β€” mwah, go scale something safely. πŸ’œ

πŸ“¦ where this page comes from