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

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

πŸ’… NAME πŸ’…

okay so this page is literally all about /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/zgbequb.f β€” that's the file, bestie, the whole vibe of this manual page lives right there in section 3 (Library Functions Manual, iykyk) 🫢


✨ SYNOPSIS ✨

Functions/Subroutines

  • subroutine ZGBEQUB (m, n, kl, ku, ab, ldab, r, c, rowcnd, colcnd, amax, info) β€” that's the icon herself, ZGBEQUB πŸ‘‘

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

subroutine ZGBEQUB (integer m, integer n, integer kl, integer ku,
    complex*16, dimension( ldab, * ) ab, integer ldab, double precision,
    dimension( * ) r, double precision, dimension( * ) c, double precision
    rowcnd, double precision colcnd, double precision amax, integer info)

ZGBEQUB β€” she's the main character here, no cap 🌟

πŸŽ€ Purpose πŸŽ€

!> !> ZGBEQUB computes row and column scalings intended to equilibrate an !> M-by-N matrix A and reduce its condition number. R returns the row !> scale factors and C the column scale factors, chosen to try to make !> the largest element in each row and column of the matrix B with !> elements B(i,j)=R(i)*A(i,j)*C(j) have an absolute value of at most !> the radix. !> !> R(i) and C(j) are restricted to be a power of the radix between !> SMLNUM = smallest safe number and BIGNUM = largest safe number. Use !> of these scaling factors is not guaranteed to reduce the condition !> number of A but works well in practice. !> !> This routine differs from ZGEEQU 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 entries' magnitudes are no longer approximately 1 but lie !> between sqrt(radix) and 1/sqrt(radix). !>

so like, the whole point is making your matrix behave πŸ’– she picks row scales R and column scales C so that the biggest element of B (where B(i,j)=R(i)*A(i,j)*C(j) fr fr) lands at most at the radix. and the cute part? the scale factors are restricted to powers of the radix between SMLNUM (smallest safe number) and BIGNUM (largest safe number) 🌸 also important: this is NOT guaranteed to reduce the condition number of A, it just works well in practice β€” noted, always noted πŸ’€ and the tea about how she differs from ZGEEQU? no extra rounding errors barring over- and underflow, but the scaled entries' magnitudes aren't approximately 1 anymore, they sit between sqrt(radix) and 1/sqrt(radix). periodt ✨

🌈 Parameters 🌈

M

!> M is INTEGER !> The number of rows of the matrix A. M >= 0. !>

the row count of A, and she's gotta be M >= 0 πŸ’œ

N

!> N is INTEGER !> The number of columns of the matrix A. N >= 0. !>

column count of A, N >= 0 babes πŸŽ€

KL

!> KL is INTEGER !> The number of subdiagonals within the band of A. KL >= 0. !>

how many subdiagonals live inside the band of A, KL >= 0 πŸ’«

KU

!> KU is INTEGER !> The number of superdiagonals within the band of A. KU >= 0. !>

and how many superdiagonals are in the band of A, KU >= 0 πŸ¦‹

AB

!> AB is COMPLEX*16 array, dimension (LDAB,N) !> On entry, the matrix A in band storage, in rows 1 to KL+KU+1. !> The j-th column of A is stored in the j-th column of the !> array AB as follows: !> AB(KU+1+i-j,j) = A(i,j) for max(1,j-KU)<=i<=min(N,j+kl) !>

this is A but in band storage, dimension (LDAB,N), sitting in rows 1 to KL+KU+1. the mapping is iconic:

AB(KU+1+i-j,j) = A(i,j) for max(1,j-KU)<=i<=min(N,j+kl)

write that down, bestie, you WILL be tested πŸ“

LDAB

!> LDAB is INTEGER !> The leading dimension of the array A. LDAB >= max(1,M). !>

leading dimension of the array A, and it's LDAB >= max(1,M) β€” no arguing πŸ’…

R

!> R is DOUBLE PRECISION array, dimension (M) !> If INFO = 0 or INFO > M, R contains the row scale factors !> for A. !>

double precision array, dimension (M), and when INFO = 0 or INFO > M she's carrying the row scale factors for A 🌟

C

!> C is DOUBLE PRECISION array, dimension (N) !> If INFO = 0, C contains the column scale factors for A. !>

double precision array, dimension (N), and if INFO = 0, C holds the column scale factors for A πŸ“

ROWCND

!> ROWCND is DOUBLE PRECISION !> If INFO = 0 or INFO > M, ROWCND contains the ratio of the !> smallest R(i) to the largest R(i). If ROWCND >= 0.1 and !> AMAX is neither too large nor too small, it is not worth !> scaling by R. !>

double precision. if INFO = 0 or INFO > M, she's the ratio of the smallest R(i) to the largest R(i). and like β€” if ROWCND >= 0.1 AND AMAX is neither too big nor too small, then lowkey it's not worth scaling by R at all πŸ™ˆ

COLCND

!> COLCND is DOUBLE PRECISION !> If INFO = 0, COLCND contains the ratio of the smallest !> C(i) to the largest C(i). If COLCND >= 0.1, it is not !> worth scaling by C. !>

double precision. if INFO = 0, she's the ratio of the smallest C(i) to the largest C(i), and if COLCND >= 0.1, not worth scaling by C, simple as πŸ’€

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

double precision, the absolute value of the largest matrix element. if AMAX is very close to overflow or very close to underflow β€” girl, scale that matrix, 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, and i is !> <= M: the i-th row of A is exactly zero !> > M: the (i-M)-th column of A is exactly zero !>

the receipts, integer style:

  • = 0: successful exit, slay πŸŽ‰
  • < 0: if INFO = -i, the i-th argument had an illegal value 😭
  • > 0: if INFO = i, and i is:
    • <= M: the i-th row of A is exactly zero πŸ‘€
    • > M: the (i-M)-th column of A is exactly zero πŸ’€

πŸ‘‘ Author πŸ‘‘

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

the whole squad came through 🫢

Definition at line 159 of file zgbequb.f β€” yes, line 159, mark it ⭐


πŸ’– Author πŸ’–

Generated automatically by Doxygen for LAPACK from the source code. not a human, just Doxygen doing her little thing πŸ€–βœ¨


okay that's the whole page bestie, and for the cute sign-off: this fine piece of documentation is LAPACK, Version 3.12.0, and it's the zgbequb.f(3) page, mwah πŸ’‹ go equilibrate something πŸ’…πŸŒˆ

πŸ“¦ where this page comes from