SRC/dla_gercond.f(3)
π SRC/dla_gercond.f
okay so bestie, this page is from the Library Functions Manual and honestly it's a whole vibe β it's all about one little function that does some very serious math. Let me walk you through it π«Ά
β¨ SYNOPSIS β¨
π Functions/Subroutines
double precision function dla_gercond (trans, n, a, lda, af, ldaf, ipiv,
cmode, c, info, work, iwork)
DLA_GERCOND estimates the Skeel condition number for a general matrix. that's it, that's the tweet π
πΈ Function/Subroutine Documentation πΈ
double precision function dla_gercond (character trans, integer n, double
precision, dimension( lda, * ) a, integer lda, double precision,
dimension( ldaf, * ) af, integer ldaf, integer, dimension( * ) ipiv,
integer cmode, double precision, dimension( * ) c, integer info, double
precision, dimension( * ) work, integer, dimension( * ) iwork)
DLA_GERCOND estimates the Skeel condition number for a general matrix. no cap, that's literally what it does β¨
π Purpose
!> !> DLA_GERCOND estimates the Skeel condition number of op(A) * op2(C) !> where op2 is determined by CMODE as follows !> CMODE = 1 op2(C) = C !> CMODE = 0 op2(C) = I !> CMODE = -1 op2(C) = inv(C) !> The Skeel condition number cond(A) = norminf( |inv(A)||A| ) !> is computed by computing scaling factors R such that !> diag(R)*A*op2(C) is row equilibrated and computing the standard !> infinity-norm condition number. !>
π Parameters
TRANSβ so this one's aCHARACTER*1and it specifies the form of the system of equations, okay? here's the tea:
!> = 'N': A * X = B (No transpose)
!> = 'T': A**T * X = B (Transpose)
!> = 'C': A**H * X = B (Conjugate Transpose = Transpose)
lowkey iconic that 'C' is just transpose again, iykyk π
NβNisINTEGER, and it's the number of linear equations, i.e., the order of the matrixA. and bestie:N >= 0. periodt.AβAisDOUBLE PRECISION array, dimension (LDA,N). on entry, it's theN-by-NmatrixA. main character energy fr πLDAβLDAisINTEGER, the leading dimension of the arrayA. and it's givingLDA >= max(1,N). no exceptions πAFβAFisDOUBLE PRECISION array, dimension (LDAF,N). these are the factorsLandUfrom the factorizationA = P*L*Uas computed byDGETRF. slay πLDAFβLDAFisINTEGER, the leading dimension of the arrayAF.LDAF >= max(1,N). yes ma'am β¨IPIVβIPIVisINTEGER array, dimension (N). these are the pivot indices from the factorizationA = P*L*Uas computed byDGETRF; rowiof the matrix was interchanged with rowIPIV(i). it's giving very organized chaos πCMODEβCMODEisINTEGERand it determinesop2(C)in the formulaop(A) * op2(C), like so:
!> CMODE = 1 op2(C) = C
!> CMODE = 0 op2(C) = I
!> CMODE = -1 op2(C) = inv(C)
CβCisDOUBLE PRECISION array, dimension (N). it's the vectorCin the formulaop(A) * op2(C). the moment π«ΆINFOβINFOisINTEGER, and here's the vibe check:
!> = 0: Successful exit.
!> i > 0: The ith argument is invalid.
so 0 means we ate and left no crumbs, and anything i > 0 means the *i*th argument is invalid π
WORKβWORKisDOUBLE PRECISION array, dimension (3*N). it's workspace, bestie. don't touch it, it's doing its job πIWORKβIWORKisINTEGER array, dimension (N).also workspace. also doing its job. π
β Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 149 of file dla_gercond.f. go look, it's literally right there π
π« Sign-off
this page was generated automatically by Doxygen for LAPACK from the source code β so like, don't come for me about the formatting, a robot made it π€β¨ it's LAPACK Version 3.12.0, and yeah, that's the whole thing. hope this helped bestie, go forth and estimate those condition numbers responsibly ππ¦π
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms