SRC/ssytri_rook.f(3)

πŸ’… SRC/ssytri_rook.f β€” the LAPACK library manual, bestie edition ✨

okay so this page is literally from the LAPACK Library Functions Manual, and it's all about one iconic little subroutine. buckle up πŸŽ€


🌸 NAME 🌸

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


✨ SYNOPSIS ✨

Functions/Subroutines

  • subroutine ssytri_rook (uplo, n, a, lda, ipiv, work, info) β€” this is SSYTRI_ROOK, the main character πŸ‘‘

πŸ¦‹ Function/Subroutine Documentation πŸ¦‹

subroutine ssytri_rook (character uplo, integer n, real, dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv, real, dimension( * ) work, integer info)

SSYTRI_ROOK β€” say it with me, she's the inverse-finder 🫢

πŸ’– Purpose:

!>
!> SSYTRI_ROOK computes the inverse of a real symmetric
!> matrix A using the factorization A = U*D*U**T or A = L*D*L**T
!> computed by SSYTRF_ROOK.
!>

so basically: hand her a real symmetric matrix A plus the factorization A = U*D*U**T or A = L*D*L**T that SSYTRF_ROOK already cooked up, and she gives you the inverse. no cap, that's the whole gig πŸ”₯


🌈 Parameters 🌈

UPLO

!>          UPLO is CHARACTER*1
!>          Specifies whether the details of the factorization 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.
!>

it's a CHARACTER*1 that tells her whether the factorization details are chilling in an upper or lower triangular matrix. pick your fighter: 'U' for upper triangular (form is A = U*D*U**T), or 'L' for lower triangular (form is A = L*D*L**T). choose wisely bestie πŸ’€

N

!>          N is INTEGER
!>          The order of the matrix A.  N >= 0.
!>

an INTEGER, the order of the matrix A. and she has standards: N >= 0 ✨

A

!>          A is REAL array, dimension (LDA,N)
!>          On entry, the block diagonal matrix D and the multipliers
!>          used to obtain the factor U or L as computed by SSYTRF_ROOK.
!>
!>          On exit, if INFO = 0, the (symmetric) inverse of the original
!>          matrix.  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.
!>

a REAL array, dimension (LDA,N) and honestly she goes through a whole glow-up here:

  • on entry she's holding the block diagonal matrix D and the multipliers used to obtain the factor U or L, exactly as computed by SSYTRF_ROOK.
  • on exit, if INFO = 0, she's serving the (symmetric) inverse of the original matrix πŸŽ€ 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. respect the boundaries, periodt πŸ™ˆ

LDA

!>          LDA is INTEGER
!>          The leading dimension of the array A.  LDA >= max(1,N).
!>

an INTEGER, the leading dimension of the array A. the vibe check here is LDA >= max(1,N) πŸ’…

IPIV

!>          IPIV is INTEGER array, dimension (N)
!>          Details of the interchanges and the block structure of D
!>          as determined by SSYTRF_ROOK.
!>

an INTEGER array, dimension (N) β€” it's carrying the details of the interchanges and the block structure of D, as determined by SSYTRF_ROOK. she's got receipts πŸ“‹

WORK

!>          WORK is REAL array, dimension (N)
!>

a REAL array, dimension (N). she works hard but she's just workspace, ngl 🫢

INFO

!>          INFO is INTEGER
!>          = 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.
!>

an INTEGER, the report card πŸ“

  • = 0: successful exit, we ate πŸ“
  • < 0: if INFO = -i, the i-th argument had an illegal value β€” not cute, someone misbehaved
  • > 0: if INFO = i, D(i,i) = 0; the matrix is singular and its inverse could not be computed. so sorry bestie, no inverse today 😭

πŸ‘‘ Author πŸ‘‘

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

four whole institutions, the collab we deserved 🌟


🧚 Contributors: 🧚

!>
!>   April 2012, Igor Kozachenko,
!>                  Computer Science Division,
!>                  University of California, Berkeley
!>
!>  September 2007, Sven Hammarling, Nicholas J. Higham, Craig Lucas,
!>                  School of Mathematics,
!>                  University of Manchester
!>
!>
  • April 2012 β€” Igor Kozachenko, Computer Science Division, University of California, Berkeley
  • September 2007 β€” Sven Hammarling, Nicholas J. Higham, Craig Lucas, School of Mathematics, University of Manchester

a whole friend group of mathematicians carried this, we stan 🫢


πŸ’œ Definition at line 128 of file ssytri_rook.f. πŸ’œ

that's where she lives, line 128, iconic address ngl 🏠


⭐ Author ⭐

Generated automatically by Doxygen for LAPACK from the source code. the robots did the paperwork, we just vibe πŸ€–βœ¨


heads up bestie: INFO > 0 means D(i,i) = 0 β€” the matrix is singular and the inverse could not be computed. that's not a "try again" moment, that's a "the math said no" moment πŸ’€

and that's the whole page, fr fr πŸ’– this gem came to you from LAPACK, Version 3.12.0, dated with all the love β€” go inverse something iconic, mwah πŸŽ€πŸŒˆπŸ’…

πŸ“¦ where this page comes from