/home/abui.../zpoequb.f(3)
π zpoequb.f β LAPACK's Library Functions Manual π
okay so bestie, buckle up, because this is /home/abui.../zpoequb.f(3) and it's literally the glow-up era of matrix equilibration β¨
πΈ NAME πΈ
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/zpoequb.f
like, that's the whole name. it's a path. it's giving "my parents named me after the street they lived on" but honestly? iconic. π
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine ZPOEQUB (n, a, lda, s, scond, amax, info)
ZPOEQUB
π¦ Function/Subroutine Documentation π¦
subroutine ZPOEQUB (integer n, complex*16, dimension( lda, * ) a, integer
lda, double precision, dimension( * ) s, double precision scond, double
precision amax, integer info)
ZPOEQUB
π Purpose:
!>
!> ZPOEQUB computes row and column scalings intended to equilibrate a
!> Hermitian positive definite matrix A and reduce its condition number
!> (with respect to the two-norm). S contains the scale factors,
!> S(i) = 1/sqrt(A(i,i)), chosen so that the scaled matrix B with
!> elements B(i,j) = S(i)*A(i,j)*S(j) has ones on the diagonal. This
!> choice of S puts the condition number of B within a factor N of the
!> smallest possible condition number over all possible diagonal
!> scalings.
!>
!> This routine differs from ZPOEQU 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 diagonal entries are no longer approximately 1 but lie
!> between sqrt(radix) and 1/sqrt(radix).
!>
so real talk π«Ά β ZPOEQUB takes your Hermitian positive definite matrix A and figures out scale factors to equilibrate it, i.e. chill out its condition number (two-norm vibes only). S holds the scale factors, S(i) = 1/sqrt(A(i,i)), picked so that the scaled matrix B β with elements B(i,j) = S(i)*A(i,j)*S(j) β has ones on the diagonal. periodt. π―
and the way this choice of S works? it puts the condition number of B within a factor N of the smallest possible condition number over all possible diagonal scalings. lowkey genius.
the plot twist π: this routine differs from ZPOEQU by restricting the scaling factors to a power of the radix. barring over- and underflow, scaling by these factors introduces no additional rounding errors. the trade-off? the scaled diagonal entries are no longer approximately 1 β they lie between sqrt(radix) and 1/sqrt(radix). iykyk. π
π Parameters π
NβN is INTEGER. the order of the matrix A.N >= 0. no negatives, bestie, that's the rule. π
!> 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 positive definite matrix whose scaling factors are to be computed. only the diagonal elements of A are referenced β the rest of A is just there looking pretty. π
!> A is COMPLEX*16 array, dimension (LDA,N)
!> The N-by-N Hermitian positive definite matrix whose scaling
!> factors are to be computed. Only the diagonal elements of A
!> are referenced.
!>
LDAβLDA is INTEGER. the leading dimension of the array A.LDA >= max(1,N). respect the leading dimension, she's main character energy. π
!> LDA is INTEGER
!> The leading dimension of the array A. LDA >= max(1,N).
!>
SβS is DOUBLE PRECISION array, dimension (N). ifINFO = 0, S contains the scale factors for A. slay. π
!> S is DOUBLE PRECISION array, dimension (N)
!> If INFO = 0, S contains the scale factors for A.
!>
SCONDβSCOND is DOUBLE PRECISION. ifINFO = 0, S contains the ratio of the smallestS(i)to the largestS(i). ifSCOND >= 0.1and AMAX is neither too large nor too small, it is not worth scaling by S. no cap, sometimes the vibe check says "leave it alone". π
!> 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. absolute value of largest matrix element. if AMAX is very close to overflow or very close to underflow, the matrix should be scaled. like, urgently. π¨
!> 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.
!>
INFOβINFO is INTEGER. the receipts: π
!> 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.
!>
ngl, INFO > 0 means the i-th diagonal element is nonpositive, and since this is a positive definite matrix routine... that's a whole situation. π
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
the whole squad collaborated, we love a group project that actually worked π«Ά
Definition at line 118 of file zpoequb.f.
π Author (again, yes, two author sections, don't @ me) π
Generated automatically by Doxygen for LAPACK from the source code. so meta. so machine-made. so β¨ authentic β¨
LAPACK Β· Version 3.12.0 Β· /home/abui.../zpoequb.f(3)
and that's the page bestie!! ππ go forth and equilibrate responsibly β mwah πβ¨π¦
π¦ 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