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 a CHARACTER*1 and 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 β€” N is INTEGER, and it's the number of linear equations, i.e., the order of the matrix A. and bestie: N >= 0. periodt.
  • A β€” A is DOUBLE PRECISION array, dimension (LDA,N). on entry, it's the N-by-N matrix A. main character energy fr πŸ’œ
  • LDA β€” LDA is INTEGER, the leading dimension of the array A. and it's giving LDA >= max(1,N). no exceptions πŸ’…
  • AF β€” AF is DOUBLE PRECISION array, dimension (LDAF,N). these are the factors L and U from the factorization A = P*L*U as computed by DGETRF. slay πŸŽ€
  • LDAF β€” LDAF is INTEGER, the leading dimension of the array AF. LDAF >= max(1,N). yes ma'am ✨
  • IPIV β€” IPIV is INTEGER array, dimension (N). these are the pivot indices from the factorization A = P*L*U as computed by DGETRF; row i of the matrix was interchanged with row IPIV(i). it's giving very organized chaos πŸŒ€
  • CMODE β€” CMODE is INTEGER and it determines op2(C) in the formula op(A) * op2(C), like so:
!>     CMODE =  1    op2(C) = C
!>     CMODE =  0    op2(C) = I
!>     CMODE = -1    op2(C) = inv(C)
  • C β€” C is DOUBLE PRECISION array, dimension (N). it's the vector C in the formula op(A) * op2(C). the moment 🫢
  • INFO β€” INFO is INTEGER, 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 β€” WORK is DOUBLE PRECISION array, dimension (3*N). it's workspace, bestie. don't touch it, it's doing its job πŸ’€
  • IWORK β€” IWORK is INTEGER 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