poequ(3)

πŸ’– poequ(3) β€” the LAPACK equilibration girlies πŸ’–

okay so bestie, welcome to poequ, a whole family of LAPACK subroutines that do equilibration, and yes that is the actual name in the NAME section, no cap. This page lives in the Library Functions Manual and honestly? It's giving "four nearly identical siblings and they're all iconic in their own typing way." Let's get into it πŸŽ€


✨ SYNOPSIS ✨

Like, here's the whole squad, all four of them, same vibe, different precision:

subroutine cpoequ (n, a, lda, s, scond, amax, info)
subroutine dpoequ (n, a, lda, s, scond, amax, info)
subroutine spoequ (n, a, lda, s, scond, amax, info)
subroutine zpoequ (n, a, lda, s, scond, amax, info)
  • cpoequ β€” the CPOEQU one πŸ’…
  • dpoequ β€” the DPOEQU one πŸ’…
  • spoequ β€” the SPOEQU one πŸ’…
  • zpoequ β€” the ZPOEQU one πŸ’…

πŸ¦‹ Detailed Description πŸ¦‹

The whole page is basically a Function Documentation situation β€” four subroutines, each one equilibration, each one documented below with its full signature, purpose, parameters, author credits, and the exact source line it lives on. No skipping, we're doing all of them, periodt.


🌸 Function Documentation 🌸

πŸ’œ subroutine cpoequ

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

CPOEQU

🫢 Purpose:

so the actual job: CPOEQU 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. And like, 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. slay πŸ’…

πŸŽ€ 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. (yes, only the diagonal, she's low-maintenance like that)
  • 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. (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.
  • 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 112 of file cpoequ.f.


πŸ’œ subroutine dpoequ

subroutine dpoequ (integer n, double precision, dimension( lda, * ) a,
    integer lda, double precision, dimension( * ) s, double precision scond,
    double precision amax, integer info)

DPOEQU

🫢 Purpose:

DPOEQU computes row and column scalings intended to equilibrate a symmetric 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. same energy, double the precision 🧚

πŸŽ€ Parameters

  • N β€” N is INTEGER. The order of the matrix A. N >= 0.
  • A β€” A is DOUBLE PRECISION array, dimension (LDA,N). The N-by-N symmetric 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 DOUBLE PRECISION array, dimension (N). If INFO = 0, S contains the scale factors for A.
  • SCOND β€” SCOND is DOUBLE PRECISION. 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.
  • AMAX β€” AMAX is DOUBLE PRECISION. 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 111 of file dpoequ.f.


πŸ’œ subroutine spoequ

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

SPOEQU

🫢 Purpose:

SPOEQU computes row and column scalings intended to equilibrate a symmetric 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. single precision but make it fashion πŸ“

πŸŽ€ Parameters

  • N β€” N is INTEGER. The order of the matrix A. N >= 0.
  • A β€” A is REAL array, dimension (LDA,N). The N-by-N symmetric 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.
  • 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 111 of file spoequ.f.


πŸ’œ subroutine zpoequ

subroutine zpoequ (integer n, complex*16, dimension( lda, * ) a, integer
    lda, double precision, dimension( * ) s, double precision scond, double
    precision amax, integer info)

ZPOEQU

🫢 Purpose:

ZPOEQU 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. complex*16 and serving main character energy, we love to see it πŸ‘‘

πŸŽ€ Parameters

  • N β€” N is INTEGER. The order of the matrix A. N >= 0.
  • A β€” A is COMPLEX*16 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 DOUBLE PRECISION array, dimension (N). If INFO = 0, S contains the scale factors for A.
  • SCOND β€” SCOND is DOUBLE PRECISION. 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.
  • AMAX β€” AMAX is DOUBLE PRECISION. 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 112 of file zpoequ.f.


ok tiny note bestie: SCOND and AMAX are only meaningful when INFO = 0, and if SCOND >= 0.1 with AMAX neither too big nor too small, scaling by S is literally not worth it. Also if INFO > 0 you got a nonpositive diagonal element, which for a positive definite matrix is a whole crisis πŸ’€

🌈 Author 🌈

Generated automatically by Doxygen for LAPACK from the source code. (she was built by the machines, and she ate 🫢)


and that's the whole page, bestie πŸ’– LAPACK, Version 3.12.0, dated poequ(3) β€” you're officially caught up, iykyk βœ¨πŸŽ€πŸ’…

πŸ“¦ where this page comes from