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

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

πŸŽ€ NAME πŸŽ€

ok so bestie, this page is literally all about /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/cgbequb.f β€” yes that's the whole path as the name, she's extra like that πŸ’… (it's a LAPACK source file, from the Library Functions Manual section 3, iykyk).


✨ SYNOPSIS ✨

Functions/Subroutines

  • subroutine CGBEQUB (m, n, kl, ku, ab, ldab, r, c, rowcnd, colcnd, amax, info)
  • CGBEQUB

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

subroutine CGBEQUB (integer m, integer n, integer kl, integer ku, complex,
    dimension( ldab, * ) ab, integer ldab, real, dimension( * ) r, real,
    dimension( * ) c, real rowcnd, real colcnd, real amax, integer info)

CGBEQUB

πŸ’– Purpose:

!> !> CGBEQUB 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 CGEEQU 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). !>

okay so real talk, this routine's whole vibe is equilibration β€” she computes row and column scalings that try to make an M-by-N matrix A behave and bring its condition number down. R comes back with the row scale factors, C with the column ones, and they're picked so that the biggest element in each row/column of the matrix B β€” where B(i,j)=R(i)*A(i,j)*C(j) β€” has an absolute value of at most the radix ✨

And here's the tea: R(i) and C(j) are restricted to be a power of the radix, sitting between SMLNUM = smallest safe number and BIGNUM = largest safe number. Using these factors is not guaranteed to reduce the condition number of A, but in practice it works well πŸ’…

Also she differs from CGEEQU by restricting the scaling factors to a power of the radix. Barring over- and underflow, scaling by these factors adds literally zero additional rounding errors. But (and this is the plot twist 😭) the scaled entries' magnitudes are no longer approximately 1 β€” they land between sqrt(radix) and 1/sqrt(radix).


🌸 Parameters 🌸

M

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

Number of rows in A, bestie. Requirement: M >= 0 🫢

N

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

Number of columns in A. Requirement: N >= 0 🫢

KL

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

How many subdiagonals live inside the band of A. Requirement: KL >= 0 πŸ‘‘

KU

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

How many superdiagonals live inside the band of A. Requirement: KU >= 0 πŸ‘‘

AB

!> AB is COMPLEX 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) !>

AB is a COMPLEX array with dimension (LDAB,N). On entry it's the matrix A in band storage, in rows 1 to KL+KU+1. The j-th column of A gets stored in the j-th column of the array AB, like this, fr fr:

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

LDAB

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

The leading dimension of the array A. Requirement: LDAB >= max(1,M) 🧚

R

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

REAL array, dimension (M). If INFO = 0 or INFO > M, R contains the row scale factors for A πŸ’–

C

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

REAL array, dimension (N). If INFO = 0, C contains the column scale factors for A πŸ’–

ROWCND

!> ROWCND is REAL !> 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. !>

REAL. If INFO = 0 or INFO > M, ROWCND holds the ratio of the smallest R(i) to the largest R(i). And heads up: if ROWCND >= 0.1 and AMAX is neither too large nor too small, it's not worth scaling by R β€” so like, don't bother πŸ™ˆ

COLCND

!> COLCND is REAL !> 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. !>

REAL. If INFO = 0, COLCND holds the ratio of the smallest C(i) to the largest C(i). If COLCND >= 0.1, it's not worth scaling by C πŸ™ˆ

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

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 β€” that's not a drill ⚠️

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

INTEGER, and she's the whole mood report:

  • = 0: successful exit, we ate πŸŽ‰
  • < 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.

Definition at line 159 of file cgbequb.f.


⭐ Author ⭐

Generated automatically by Doxygen for LAPACK from the source code. (not her writing it herself, she's a bot bestie, iconic behavior honestly πŸ€–πŸ’…)


LAPACK β€” Version 3.12.0 πŸ¦‹ and this icon is literally /home/abui.../cgbequb.f(3), mwah, go equilibrate something, ily, bye πŸ’–πŸŽ€βœ¨

πŸ“¦ where this page comes from