/home/abui.../cgbequb.f(3)
π 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: ifINFO = -i, thei-th argument had an illegal value π> 0: ifINFO = i, andiis...<= M: thei-th row ofAis exactly zero> M: the(i-M)-th column ofAis 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
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms