SRC/dsytri2x.f(3)

πŸ’… SRC/dsytri2x.f β€” from the Library Functions Manual, bestie

okay so picture this: you're deep in SRC/dsytri2x.f (yes that's the file, section 3 of the Library Functions Manual, we're fancy) and you need the tea on dsytri2x. Sit down, I got you. 🫢


✨ SYNOPSIS ✨

Functions/Subroutines

  • subroutine dsytri2x (uplo, n, a, lda, ipiv, work, nb, info) β€” DSYTRI2X, that's the whole vibe πŸ’«

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

subroutine dsytri2x (character uplo, integer n, double precision, dimension(
    lda, * ) a, integer lda, integer, dimension( * ) ipiv, double precision,
    dimension( n+nb+1,* ) work, integer nb, integer info)

DSYTRI2X πŸ‘‘

πŸŽ€ Purpose:

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

so literally: it takes your real symmetric indefinite matrix A, and the factorization A = U*D*U**T or A = L*D*L**T that DSYTRF already made, and hands you back the inverse. no cap, that's the whole job. πŸ”₯


🌸 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.
!>

UPLO is a CHARACTER*1 and it's basically the vibe check for where your factorization lives β€” upper triangular or lower triangular, pick your fighter:

  • = 'U': upper triangular, form is A = U*D*U**T
  • = 'L': lower triangular, form is A = L*D*L**T

N

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

N is an INTEGER, it's the order of the matrix A, and it's gotta be N >= 0. no negative girlies allowed. πŸ™ˆ

A

!>          A is DOUBLE PRECISION array, dimension (LDA,N)
!>          On entry, the NNB diagonal matrix D and the multipliers
!>          used to obtain the factor U or L as computed by DSYTRF.
!>
!>          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 is a DOUBLE PRECISION array, dimension (LDA,N). two moods, bestie:

  • On entry: the NNB diagonal matrix D and the multipliers used to obtain the factor U or L, exactly as computed by DSYTRF. it's giving "I already did the hard part".
  • On exit, if INFO = 0: the (symmetric) inverse of the original matrix. and here's the important bit πŸ‘‡
    • 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.  LDA >= max(1,N).
!>

LDA is an INTEGER, it's the leading dimension of the array A, and the rule is LDA >= max(1,N). periodt. πŸ’…

IPIV

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

IPIV is an INTEGER array, dimension (N), and it's holding the details of the interchanges and the NNB structure of D as determined by DSYTRF. it's the receipts from the earlier factorization, iconic. 🧾

WORK

!>          WORK is DOUBLE PRECISION array, dimension (N+NB+1,NB+3)
!>

WORK is a DOUBLE PRECISION array, dimension (N+NB+1,NB+3). it's the workspace, it does the behind-the-scenes work, main character energy honestly. ✨

NB

!>          NB is INTEGER
!>          Block size
!>

NB is an INTEGER and it's the block size. short king, huge responsibility. πŸŽ€

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.
!>

INFO is an INTEGER and it's the final verdict:

  • = 0: successful exit, we ate. πŸ“
  • < 0: if INFO = -i, the i-th argument had an illegal value. not me passing bad arguments 😭
  • > 0: if INFO = i, D(i,i) = 0 β€” the matrix is singular and its inverse could not be computed. πŸ’€ that's a wrap, no inverse today.

πŸ‘‘ Author πŸ‘‘

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

Definition at line 119 of file dsytri2x.f. πŸ“


🌈 Author 🌈

Generated automatically by Doxygen for LAPACK from the source code. yes, the docs wrote themselves, slay. πŸ€–βœ¨


πŸ’– ok that's the whole page bestie, every flag, every array bound, every INFO case β€” nothing dropped, nothing invented. go inverse something symmetric and indefinite, you got this. πŸ¦‹

LAPACK, Version 3.12.0 β€” catch you on the next SRC/dsytri2x.f(3) read, muah πŸ’‹πŸŒΈ

πŸ“¦ where this page comes from