/home/abui.../dgeequb.f(3)
π NAME π
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/dgeequb.f
okay so bestie, this is the manual page for that file β it's a LAPACK source file, and the actual star of the show is a Fortran subroutine called DGEEQUB. she balances matrices. she's iconic. let's get into it π
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine DGEEQUB (m, n, a, lda, r, c, rowcnd, colcnd, amax, info)β the whole function, one line, she's neat like that π«Ά
πΈ Function/Subroutine Documentation πΈ
subroutine DGEEQUB (integer m, integer n, double precision, dimension( lda, * ) a, integer lda, double precision, dimension( * ) r, double precision, dimension( * ) c, double precision rowcnd, double precision colcnd, double precision amax, integer info)
yep, that's her full signature, no cap π
Purpose:
!>
!> DGEEQUB 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 DGEEQU 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 β she computes row and column scalings to equilibrate an M-by-N matrix A and reduce its condition number π₯. R gives you the row scale factors, C gives you the column scale factors, and the goal is making the biggest element in each row and column of the matrix B (where 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 locked to being a power of the radix between SMLNUM = smallest safe number and BIGNUM = largest safe number. And real talk: using these scaling factors is not guaranteed to reduce the condition number of A, but it works well in practice π.
The way she differs from DGEEQU? she restricts the scaling factors to a power of the radix. Barring over- and underflow, scaling by these factors introduces no additional rounding errors. But heads up β the scaled entries' magnitudes are no longer approximately 1, they lie between sqrt(radix) and 1/sqrt(radix). it's giving "trade-off, but make it precise" β¨
π Parameters π
M
!> M is INTEGER
!> The number of rows of the matrix A. M >= 0.
!>
integer, it's the number of rows of A, and M >= 0 β no negative rows, we don't do that here π
N
!> N is INTEGER
!> The number of columns of the matrix A. N >= 0.
!>
integer, the number of columns of A, and N >= 0 obviously π
A
!> A is DOUBLE PRECISION array, dimension (LDA,N)
!> The M-by-N matrix whose equilibration factors are
!> to be computed.
!>
double precision array, dimension (LDA,N) β the M-by-N matrix whose equilibration factors are to be computed. she's the whole reason we're here π
LDA
!> LDA is INTEGER
!> The leading dimension of the array A. LDA >= max(1,M).
!>
integer, the leading dimension of the array A, and LDA >= max(1,M). respect the leading dimension bestie π§
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). If INFO = 0 or INFO > M, R contains 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). If INFO = 0, C contains 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, ROWCND contains the ratio of the smallest R(i) to the largest R(i). And lowkey β if ROWCND >= 0.1 and AMAX is neither too large nor too small, it is not worth scaling by R. save yourself the trouble π
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, 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 β same energy, column edition π
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 β absolute value of the largest matrix element. If AMAX is very close to overflow or very close to underflow, the matrix should be scaled. like, actually do it π₯
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, the vibe check:
= 0β successful exit, slay π< 0β ifINFO = -i, the i-th argument had an illegal value π> 0β ifINFO = i, andiis:<= Mβ the i-th row ofAis exactly zero> Mβ the(i-M)-th column ofAis exactly zero
zero rows and columns are real, and she will tell you about them π«Ά
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
the whole collective, fr fr π
π Definition at line 144 of file dgeequb.f. π
like, line 144, exactly β iykyk π
β Author β
Generated automatically by Doxygen for LAPACK from the source code. yes, a robot wrote the page, but the math is all hers π€β¨
that's the whole thing bestie, no skipped options, no invented lore, every single constraint preserved π
LAPACK Β· Version 3.12.0 Β· /home/abui.../dgeequb.f(3) β mwah, that's the sign-off ππ
π¦ 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