SRC/csytri.f(3)

πŸ’œ SRC/csytri.f πŸ’œ

okay so bestie, gather round, because this is the manual page for SRC/csytri.f, straight out of the Library Functions Manual β€” and it's genuinely iconic. no cap. ✨


πŸ¦‹ NAME πŸ¦‹

SRC/csytri.f β€” that's it, that's the name, she's mysterious like that πŸ’…


🌸 SYNOPSIS 🌸

Functions/Subroutines

  • subroutine csytri (uplo, n, a, lda, ipiv, work, info) β€” CSYTRI, the main character herself πŸ‘‘

πŸŽ€ Function/Subroutine Documentation πŸŽ€

subroutine csytri 🧚

here's the whole glow-up, full signature, nothing skipped:

subroutine csytri (character uplo, integer n, complex, dimension( lda, * )
a, integer lda, integer, dimension( * ) ipiv, complex, dimension( * )
work, integer info)

CSYTRI ✨

Purpose:

!> !> CSYTRI computes the inverse of a complex symmetric indefinite matrix !> A using the factorization A = U*D*U**T or A = L*D*L**T computed by !> CSYTRF. !>

so yeah β€” she doesn't invent the factorization, she takes what CSYTRF already did and flips it into an inverse. team effort fr fr 🫢


Parameters πŸ“

  • UPLO β€” UPLO is CHARACTER*1, and it's literally just telling you whether the factorization details are stored as an upper or lower triangular matrix:
    • = 'U': Upper triangular, form is A = U*D*U**T;
    • = 'L': Lower triangular, form is A = L*D*L**T.
  • N β€” N is INTEGER, aka the order of the matrix A. and listen: N >= 0. respect the boundary bestie πŸ’€
  • A β€” A is COMPLEX array, dimension (LDA,N). on entry? it's the block diagonal matrix D plus the multipliers used to obtain the factor U or L as computed by CSYTRF. on exit, if INFO = 0, it's the (symmetric) inverse of the original matrix 😭 iconic transformation honestly. and the details, because they matter:
    • If UPLO = 'U', the upper triangular part of the inverse is formed and the part of A below the diagonal is not referenced;
    • if UPLO = 'L' the lower triangular part of the inverse is formed and the part of A above the diagonal is not referenced.
  • LDA β€” LDA is INTEGER, the leading dimension of the array A. and the rule is LDA >= max(1,N) β€” no wiggle room, she said what she said πŸ’…
  • IPIV β€” IPIV is INTEGER array, dimension (N). this one's carrying the details of the interchanges and the block structure of D as determined by CSYTRF. iykyk 🌈
  • WORK β€” WORK is COMPLEX array, dimension (2*N) β€” just a workspace, doing her little job quietly, we love her πŸŽ€
  • INFO β€” INFO is INTEGER, the vibe check at the end:
    • = 0: successful exit πŸŽ‰
    • < 0: if INFO = -i, the i-th argument had an illegal value πŸ™ˆ
    • > 0: if INFO = i, D(i,i) = 0; the matrix is singular and its inverse could not be computed πŸ’€
lowkey important: that last one is the "she's singular, the inverse is NOT happening" case. not a warning to gloss over, bestie β€” no inverse for you. πŸ”₯

πŸ‘‘ Author πŸ‘‘

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

also: Definition at line 113 of file csytri.f. β€” go look, she's there 🌸


⭐ Author (again, but make it doxygen) ⭐

Generated automatically by Doxygen for LAPACK from the source code. πŸ€–βœ¨


so that's the whole page angel, every flag, every dimension, every >= max(1,N), untouched and accounted for πŸ’–

signing off from LAPACK, Version 3.12.0, dated SRC/csytri.f(3) β€” mwah, go invert something symmetric πŸ¦‹πŸ’…

πŸ“¦ where this page comes from