/home/abui.../cpoequb.f(3)

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

πŸ’… cpoequb.f β€” from the Library Functions Manual ✨

okay bestie, buckle up πŸŽ€ this one is a Fortran file sitting in the LAPACK library docs, and honestly? it's giving "quietly iconic math gremlin." let's get into it πŸ¦‹


✨ NAME ✨

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

like, yes, that's literally just the whole path πŸ’€ that's the name. it's a whole journey. iykyk.


🌸 SYNOPSIS 🌸

Functions/Subroutines

  • subroutine CPOEQUB (n, a, lda, s, scond, amax, info) β€” literally CPOEQUB. that's the whole vibe check πŸ’–

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

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

CPOEQUB. no cap, that's the name 🫢

🧚 Purpose:

!> !> CPOEQUB computes row and column scalings intended to equilibrate a !> Hermitian positive definite matrix A 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. !> !> This routine differs from CPOEQU by restricting the scaling factors !> to a power of the radix. Barring over- and underflow, scaling by !> these factors introduces no additional rounding errors. However, the !> scaled diagonal entries are no longer approximately 1 but lie !> between sqrt(radix) and 1/sqrt(radix). !>

so like, the tea β˜•: this subroutine equilibrates a Hermitian positive definite matrix A β€” balances it out, main character energy β€” and reduces its condition number (two-norm flavored, obviously). S holds the scale factors S(i) = 1/sqrt(A(i,i)), picked so the scaled matrix B with elements B(i,j) = S(i)*A(i,j)*S(j) has literal ones on the diagonal ✨. and this choice of S keeps the condition number of B within a factor N of the smallest possible condition number across every possible diagonal scaling β€” ate, no crumbs πŸ‘‘

the glow-up vs. CPOEQU: this routine restricts the scaling factors to a power of the radix. barring over- and underflow, scaling by these factors adds zero rounding errors 😌. but plot twist β€” the scaled diagonal entries are no longer approximately 1, they chill between sqrt(radix) and 1/sqrt(radix) instead. trade-offs, bestie πŸ’…

πŸ“ Parameters

  • N
!> N is INTEGER !> The order of the matrix A. N >= 0. !>

N is INTEGER β€” the order of the matrix A, and it must satisfy 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. !>

A is a COMPLEX array, dimension (LDA,N) β€” the N-by-N Hermitian positive definite matrix whose scaling factors are getting computed. fun fact: only the diagonal elements of A are referenced πŸ™ˆ so don't stress about the rest.

  • LDA
!> LDA is INTEGER !> The leading dimension of the array A. LDA >= max(1,N). !>

LDA is INTEGER, the leading dimension of A, and it's gotta be LDA >= max(1,N) πŸ’œ

  • S
!> S is REAL array, dimension (N) !> If INFO = 0, S contains the scale factors for A. !>

S is a 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. !>

SCOND is REAL. if INFO = 0, S contains the ratio of the smallest S(i) to the largest S(i) πŸ‘€. and heads up: if SCOND >= 0.1 and AMAX is neither too large nor too small, it's not worth scaling by S β€” so like, don't bother, bestie πŸ’€

  • 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. !>

AMAX is REAL β€” absolute value of the largest matrix element. if AMAX is very close to overflow or very close to underflow, the matrix should be scaled 🚨 like, that's your sign.

  • 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. !>

INFO is INTEGER, the status report 🫑:

  • = 0: successful exit β€” slay ✨
  • < 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.

(the whole squad 🫢)

Definition at line 118 of file cpoequb.f 🎯


πŸ¦‹ Author πŸ¦‹

Generated automatically by Doxygen for LAPACK from the source code β€” so like, no human wrote this one, it's a bot's magnum opus πŸ€–βœ¨


and that's the whole page! LAPACK, Version 3.12.0, /home/abui.../cpoequb.f(3) β€” mwah πŸ’‹ hope this helped bestie, go equilibrate something πŸ”₯πŸ‘‘

πŸ“¦ where this page comes from