/home/abui.../cpoequb.f(3)
π cpoequb.f β from the Library Functions Manual β¨
okay bestie, buckle up π this one is a Fortran file sitting in the LAPACK library docs, and honestly? it's giving "quietly iconic math gremlin." let's get into it π¦
β¨ NAME β¨
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/cpoequb.f
like, yes, that's literally just the whole path π that's the name. it's a whole journey. iykyk.
πΈ SYNOPSIS πΈ
Functions/Subroutines
subroutine CPOEQUB (n, a, lda, s, scond, amax, info)β literally CPOEQUB. that's the whole vibe check π
π Function/Subroutine Documentation π
subroutine CPOEQUB (integer n, complex, dimension( lda, * ) a, integer lda,
real, dimension( * ) s, real scond, real amax, integer info)
CPOEQUB. no cap, that's the name π«Ά
π§ Purpose:
!> !> CPOEQUB 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 CPOEQU 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 like, the tea β: this subroutine equilibrates a Hermitian positive definite matrix A β balances it out, main character energy β and reduces its condition number (two-norm flavored, obviously). S holds the scale factors S(i) = 1/sqrt(A(i,i)), picked so the scaled matrix B with elements B(i,j) = S(i)*A(i,j)*S(j) has literal ones on the diagonal β¨. and this choice of S keeps the condition number of B within a factor N of the smallest possible condition number across every possible diagonal scaling β ate, no crumbs π
the glow-up vs. CPOEQU: this routine restricts the scaling factors to a power of the radix. barring over- and underflow, scaling by these factors adds zero rounding errors π. but plot twist β the scaled diagonal entries are no longer approximately 1, they chill between sqrt(radix) and 1/sqrt(radix) instead. trade-offs, bestie π
π Parameters
N
!> N is INTEGER !> The order of the matrix A. N >= 0. !>
N is INTEGER β the order of the matrix A, and it must satisfy N >= 0 β
A
!> A is COMPLEX 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. !>
A is a COMPLEX array, dimension (LDA,N) β the N-by-N Hermitian positive definite matrix whose scaling factors are getting computed. fun fact: only the diagonal elements of A are referenced π so don't stress about the rest.
LDA
!> LDA is INTEGER !> The leading dimension of the array A. LDA >= max(1,N). !>
LDA is INTEGER, the leading dimension of A, and it's gotta be LDA >= max(1,N) π
S
!> S is REAL array, dimension (N) !> If INFO = 0, S contains the scale factors for A. !>
S is a REAL array, dimension (N). if INFO = 0, S contains the scale factors for A π
SCOND
!> SCOND is REAL !> 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. !>
SCOND is REAL. if INFO = 0, S contains the ratio of the smallest S(i) to the largest S(i) π. and heads up: if SCOND >= 0.1 and AMAX is neither too large nor too small, it's not worth scaling by S β so like, don't bother, bestie π
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. !>
AMAX is 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 π¨ like, that's your sign.
INFO
!> 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. !>
INFO is INTEGER, the status report π«‘:
= 0: successful exit β slay β¨< 0: ifINFO = -i, thei-th argument had an illegal value π> 0: ifINFO = i, thei-th diagonal element is nonpositive π©
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
(the whole squad π«Ά)
Definition at line 118 of file cpoequb.f π―
π¦ Author π¦
Generated automatically by Doxygen for LAPACK from the source code β so like, no human wrote this one, it's a bot's magnum opus π€β¨
and that's the whole page! LAPACK, Version 3.12.0, /home/abui.../cpoequb.f(3) β mwah π hope this helped bestie, go equilibrate something π₯π
π¦ 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