heequb(3)

πŸ¦‹ heequb(3) πŸ¦‹

okay so this whole page lives in the Library Functions Manual, and the star of the show is heequb β€” which is really the squad name for {he,sy}equb: equilibration, power of 2. bestie, it's a whole family of Fortran subroutines that rescale your matrix so it stops being dramatic πŸ’…


🌸 NAME 🌸

heequb β€” {he,sy}equb: equilibration, power of 2 ✨


πŸŽ€ SYNOPSIS πŸŽ€

Functions

  • subroutine cheequb (uplo, n, a, lda, s, scond, amax, work, info) β€” CHEEQUB πŸ’–
  • subroutine csyequb (uplo, n, a, lda, s, scond, amax, work, info) β€” CSYEQUB πŸ¦‹
  • subroutine dsyequb (uplo, n, a, lda, s, scond, amax, work, info) β€” DSYEQUB 🌸
  • subroutine ssyequb (uplo, n, a, lda, s, scond, amax, work, info) β€” SSYEQUB ⭐
  • subroutine zheequb (uplo, n, a, lda, s, scond, amax, work, info) β€” ZHEEQUB πŸ‘‘
  • subroutine zsyequb (uplo, n, a, lda, s, scond, amax, work, info) β€” ZSYEQUB 🌈

πŸ’œ Detailed Description πŸ’œ

ngl the "Detailed Description" section is giving empty-group-chat energy β€” there's literally nothing in it here, so we go straight to the good stuff 🫢


πŸ”₯ Function Documentation πŸ”₯

🫢 cheequb β€” CHEEQUB

subroutine cheequb (character uplo, integer n, complex, dimension( lda, * )
a, integer lda, real, dimension( * ) s, real scond, real amax, complex,
dimension( * ) work, integer info)

✨ Purpose ✨

CHEEQUB computes row and column scalings intended to equilibrate a Hermitian matrix A (with respect to the Euclidean norm) and reduce its condition number. The scale factors S are computed by the BIN algorithm (see references) so that the scaled matrix B with elements B(i,j) = S(i)*A(i,j)*S(j) has a condition number within a factor N of the smallest possible condition number over all possible diagonal scalings. it's giving "make your matrix less of a mess" and honestly? iconic 😭

πŸŽ€ Parameters πŸŽ€

  • UPLO β€” UPLO is CHARACTER*1
= 'U':  Upper triangle of A is stored;
= 'L':  Lower triangle of A is stored.
  • 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 matrix whose scaling factors are to be computed.
  • 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. (lowkey "don't bother" energy 🫠)
  • AMAX β€” AMAX is REAL β€” largest absolute value of any matrix element. If AMAX is very close to overflow or very close to underflow, the matrix should be scaled.
  • WORK β€” WORK is COMPLEX array, dimension (2*N)
  • 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.

πŸ¦‹ References πŸ¦‹

Livne, O.E. and Golub, G.H., "Scaling by Binormalization", Numerical Algorithms, vol. 35, no. 1, pp. 97-120, January 2004. DOI 10.1023/B:NUMA.0000016606.32820.69 Tech report version: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.3.1679

Definition at line 131 of file cheequb.f.


πŸ¦‹ csyequb β€” CSYEQUB

subroutine csyequb (character uplo, integer n, complex, dimension( lda, * )
a, integer lda, real, dimension( * ) s, real scond, real amax, complex,
dimension( * ) work, integer info)

✨ Purpose ✨

CSYEQUB computes row and column scalings intended to equilibrate a symmetric matrix A (with respect to the Euclidean norm) and reduce its condition number. The scale factors S are computed by the BIN algorithm (see references) so that the scaled matrix B with elements B(i,j) = S(i)*A(i,j)*S(j) has a condition number within a factor N of the smallest possible condition number over all possible diagonal scalings. same energy as CHEEQUB but it's the symmetric sibling, periodt πŸ’…

πŸŽ€ Parameters πŸŽ€

  • UPLO β€” UPLO is CHARACTER*1
= 'U':  Upper triangle of A is stored;
= 'L':  Lower triangle of A is stored.
  • N β€” N is INTEGER β€” the order of the matrix A. N >= 0.
  • A β€” A is COMPLEX array, dimension (LDA,N) β€” the N-by-N symmetric matrix whose scaling factors are to be computed.
  • 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 β€” largest absolute value of any matrix element. If AMAX is very close to overflow or very close to underflow, the matrix should be scaled.
  • WORK β€” WORK is COMPLEX array, dimension (2*N)
  • 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.

πŸ¦‹ References πŸ¦‹

Livne, O.E. and Golub, G.H., "Scaling by Binormalization", Numerical Algorithms, vol. 35, no. 1, pp. 97-120, January 2004. DOI 10.1023/B:NUMA.0000016606.32820.69 Tech report version: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.3.1679

Definition at line 131 of file csyequb.f.


🌸 dsyequb β€” DSYEQUB

subroutine dsyequb (character uplo, integer n, double precision, dimension(
lda, * ) a, integer lda, double precision, dimension( * ) s, double
precision scond, double precision amax, double precision, dimension( * )
work, integer info)

✨ Purpose ✨

DSYEQUB computes row and column scalings intended to equilibrate a symmetric matrix A (with respect to the Euclidean norm) and reduce its condition number. The scale factors S are computed by the BIN algorithm (see references) so that the scaled matrix B with elements B(i,j) = S(i)*A(i,j)*S(j) has a condition number within a factor N of the smallest possible condition number over all possible diagonal scalings. double precision edition, no cap 🧚

πŸŽ€ Parameters πŸŽ€

  • UPLO β€” UPLO is CHARACTER*1
= 'U':  Upper triangle of A is stored;
= 'L':  Lower triangle of A is stored.
  • 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 matrix whose scaling factors are to be computed.
  • 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 β€” largest absolute value of any matrix element. If AMAX is very close to overflow or very close to underflow, the matrix should be scaled.
  • WORK β€” WORK is DOUBLE PRECISION array, dimension (2*N)
  • 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.

πŸ¦‹ References πŸ¦‹

Livne, O.E. and Golub, G.H., "Scaling by Binormalization", Numerical Algorithms, vol. 35, no. 1, pp. 97-120, January 2004. DOI 10.1023/B:NUMA.0000016606.32820.69 Tech report version: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.3.1679

Definition at line 130 of file dsyequb.f.


⭐ ssyequb β€” SSYEQUB

subroutine ssyequb (character uplo, integer n, real, dimension( lda, * ) a,
integer lda, real, dimension( * ) s, real scond, real amax, real,
dimension( * ) work, integer info)

✨ Purpose ✨

SSYEQUB computes row and column scalings intended to equilibrate a symmetric matrix A (with respect to the Euclidean norm) and reduce its condition number. The scale factors S are computed by the BIN algorithm (see references) so that the scaled matrix B with elements B(i,j) = S(i)*A(i,j)*S(j) has a condition number within a factor N of the smallest possible condition number over all possible diagonal scalings. single precision but make it fashion ⭐

πŸŽ€ Parameters πŸŽ€

  • UPLO β€” UPLO is CHARACTER*1
= 'U':  Upper triangle of A is stored;
= 'L':  Lower triangle of A is stored.
  • 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 matrix whose scaling factors are to be computed.
  • 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
  • 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. πŸ’… like, don't bother, bestie, it's already fine.
  • AMAX β€” AMAX is REAL. Largest absolute value of any matrix element. If AMAX is very close to overflow or very close to underflow, the matrix should be scaled. 🚨 like hello?? danger zone, scale it.
  • WORK β€” WORK is REAL array, dimension (2*N).
  • 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.

(no cap, the whole academic avengers assembled for this one 🫢)

πŸ“š References:

Livne, O.E. and Golub, G.H., "Scaling by Binormalization", Numerical Algorithms, vol. 35, no. 1, pp. 97-120, January 2004. DOI 10.1023/B:NUMA.0000016606.32820.69 Tech report version: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.3.1679

Definition at line 130 of file ssyequb.f.


πŸ¦‹ subroutine zheequb

subroutine zheequb (character uplo, integer n, complex*16, dimension( lda, * ) a, integer lda, double precision, dimension( * ) s, double precision scond, double precision amax, complex*16, dimension( * ) work, integer info)

ZHEEQUB β€” the complex*16 Hermitian girlie πŸ’œ

✨ Purpose:

ZHEEQUB computes row and column scalings intended to equilibrate a Hermitian matrix A (with respect to the Euclidean norm) and reduce its condition number. The scale factors S are computed by the BIN algorithm (see references) so that the scaled matrix B with elements B(i,j) = S(i)*A(i,j)*S(j) has a condition number within a factor N of the smallest possible condition number over all possible diagonal scalings.

like, it's out here finding the glow-up for your matrix ✨ so the condition number is, at worst, a factor N off from the absolute best possible diagonal scaling. iconic behaviour, honestly. πŸ‘‘

πŸŽ€ Parameters

  • UPLO β€” UPLO is CHARACTER*1
    • = 'U': Upper triangle of A is stored;
    • = 'L': Lower triangle of A is stored.
  • 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 matrix whose scaling factors are to be computed.
  • 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. πŸ’… save yourself the effort babes.
  • AMAX β€” AMAX is DOUBLE PRECISION. Largest absolute value of any matrix element. If AMAX is very close to overflow or very close to underflow, the matrix should be scaled. ⚠️ fr fr, scale it before it becomes a whole crisis.
  • WORK β€” WORK is COMPLEX*16 array, dimension (2*N).
  • 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.

πŸ“š References:

Livne, O.E. and Golub, G.H., "Scaling by Binormalization", Numerical Algorithms, vol. 35, no. 1, pp. 97-120, January 2004. DOI 10.1023/B:NUMA.0000016606.32820.69 Tech report version: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.3.1679

Definition at line 131 of file zheequb.f.


🌈 subroutine zsyequb

subroutine zsyequb (character uplo, integer n, complex*16, dimension( lda, * ) a, integer lda, double precision, dimension( * ) s, double precision scond, double precision amax, complex*16, dimension( * ) work, integer info)

ZSYEQUB β€” same energy, but symmetric this time πŸ¦‹ (Hermitian's chill cousin, iykyk)

✨ Purpose:

ZSYEQUB computes row and column scalings intended to equilibrate a symmetric matrix A (with respect to the Euclidean norm) and reduce its condition number. The scale factors S are computed by the BIN algorithm (see references) so that the scaled matrix B with elements B(i,j) = S(i)*A(i,j)*S(j) has a condition number within a factor N of the smallest possible condition number over all possible diagonal scalings.

literally the same slay as ZHEEQUB but for a symmetric A β€” the BIN algorithm does the work, and your condition number ends up within a factor N of the best possible diagonal scaling. no notes. πŸŽ€

πŸŽ€ Parameters

  • UPLO β€” UPLO is CHARACTER*1
    • = 'U': Upper triangle of A is stored;
    • = 'L': Lower triangle of A is stored.
  • 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 symmetric matrix whose scaling factors are to be computed.
  • 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. Largest absolute value of any matrix element. If AMAX is very close to overflow or very close to underflow, the matrix should be scaled. 🚨
  • WORK β€” WORK is COMPLEX*16 array, dimension (2*N).
  • 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.

πŸ“š References:

Livne, O.E. and Golub, G.H., "Scaling by Binormalization", Numerical Algorithms, vol. 35, no. 1, pp. 97-120, January 2004. DOI 10.1023/B:NUMA.0000016606.32820.69 Tech report version: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.3.1679

Definition at line 131 of file zsyequb.f.


πŸ‘‘ Author

Generated automatically by Doxygen for LAPACK from the source code.


and that's the whole page, bestie!! πŸŽ€βœ¨ this little beauty is from LAPACK, Version 3.12.0, and you clocked it as heequb(3) β€” auto-generated by Doxygen straight from the LAPACK source code, so every word up there is canon. go scale something responsibly. πŸ’–πŸ¦‹πŸ’…

πŸ“¦ where this page comes from