hetri2(3)

πŸ’… hetri2(3) πŸ’…

So bestie, hetri2 is the manpage for {he,sy}tri2: inverse β€” aka the whole little family of LAPACK routines that take your factored matrix and hand you back its inverse. Come sit, we're doing all six of them. ✨


πŸ¦‹ SYNOPSIS πŸ¦‹

✨ Functions ✨

  • subroutine chetri2 (uplo, n, a, lda, ipiv, work, lwork, info) β€” CHETRI2
  • subroutine csytri2 (uplo, n, a, lda, ipiv, work, lwork, info) β€” CSYTRI2
  • subroutine dsytri2 (uplo, n, a, lda, ipiv, work, lwork, info) β€” DSYTRI2
  • subroutine ssytri2 (uplo, n, a, lda, ipiv, work, lwork, info) β€” SSYTRI2
  • subroutine zhetri2 (uplo, n, a, lda, ipiv, work, lwork, info) β€” ZHETRI2
  • subroutine zsytri2 (uplo, n, a, lda, ipiv, work, lwork, info) β€” ZSYTRI2

πŸ‘‘ Detailed Description πŸ‘‘

Yeah, so this is the part where it's just… function documentation, one after another, six times, like a group chat where everyone sends the same message. Each one has a Purpose, a big old Parameters list, an Author, and a Definition at line so you can go find it in the source. Let's go one by one, no skipping, I know you'd never. 🫢


🌈 Function Documentation 🌈

πŸ’– subroutine chetri2 πŸ’–

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

CHETRI2

🌸 Purpose 🌸

Okay so here's the deal: CHETRI2 computes the inverse of a COMPLEX hermitian indefinite matrix A, using the factorization A = U*D*U**T or A = L*D*L**T that somebody (hi, CHETRF) already computed for you. And bc it's extra, CHETRI2 sets the LEADING DIMENSION of the workspace before it calls CHETRI2X, which is the one that actually does the inverse. Middle-management energy, honestly. πŸ’…

🌸 Parameters 🌸

  • UPLO β€” UPLO is CHARACTER*1. Tells you whether the details of the factorization got stored as an upper or lower triangular matrix, bestie:
    • = '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. (Zero is allowed, we don't judge. 🫢)
  • A β€” A is COMPLEX 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 CHETRF.
    • On exit, if INFO = 0, it's 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. So like, half of it is just vibes. πŸ™ˆ
  • LDA β€” LDA is INTEGER. The leading dimension of the array A. LDA >= max(1,N). No cap.
  • IPIV β€” IPIV is INTEGER array, dimension (N). Details of the interchanges and the block structure of D, as determined by CHETRF. So it's the receipts. 🧾
  • WORK β€” WORK is COMPLEX array, dimension (MAX(1,LWORK)).
  • LWORK β€” LWORK is INTEGER. The dimension of the array WORK. If N = 0, LWORK >= 1, else LWORK >= (N+NB+1)*(NB+3). And if LWORK = -1, then a workspace query is assumed, meaning the routine:
    • calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array,
    • and no error message related to LWORK is issued by XERBLA. Literally refuses to yell at you. Iconic.
  • 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. 😭 Sorry bestie. It's giving "not today."

🌸 Author 🌸

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

🌸 Definition at line 126 of file chetri2.f. 🌸


πŸ’œ subroutine csytri2 πŸ’œ

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

CSYTRI2

🌸 Purpose 🌸

CSYTRI2 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. Same deal as its hermitian sibling up there β€” CSYTRI2 sets the LEADING DIMENSION of the workspace before calling CSYTRI2X, which actually computes the inverse. ✨

🌸 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.
  • N β€” N is INTEGER. The order of the matrix A. N >= 0.
  • A β€” A is COMPLEX 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 CSYTRF.
    • 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.
  • LDA β€” LDA is INTEGER. The leading dimension of the array A. LDA >= max(1,N).
  • IPIV β€” IPIV is INTEGER array, dimension (N). Details of the interchanges and the block structure of D, as determined by CSYTRF.
  • WORK β€” WORK is COMPLEX array, dimension (N+NB+1)*(NB+3). Note this one spells the size out instead of doing the MAX(1,LWORK) thing, and yes that's intentional, iykyk. πŸŽ€
  • LWORK β€” LWORK is INTEGER. The dimension of the array WORK. WORK is size >= (N+NB+1)*(NB+3). If LWORK = -1, then a workspace query is assumed; the routine:
    • calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array,
    • and no error message related to LWORK is issued by XERBLA.
  • 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. πŸ’€

🌸 Author 🌸

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

🌸 Definition at line 126 of file csytri2.f. 🌸


πŸ“ subroutine dsytri2 πŸ“

subroutine dsytri2 (character uplo, integer n, double precision, dimension(
lda, * ) a, integer lda, integer, dimension( * ) ipiv, double precision,
dimension( * ) work, integer lwork, integer info)

DSYTRI2

🌸 Purpose 🌸

DSYTRI2 computes the inverse of a DOUBLE PRECISION symmetric indefinite matrix A using the factorization A = U*D*U**T or A = L*D*L**T computed by DSYTRF. And yeah, DSYTRI2 sets the LEADING DIMENSION of the workspace before calling DSYTRI2X that actually computes the inverse. Same ritual, double the precision. πŸ”₯

🌸 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.
  • N β€” N is INTEGER. The order of the matrix A. N >= 0.
  • A β€” A is DOUBLE PRECISION 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 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.
  • LDA β€” LDA is INTEGER. The leading dimension of the array A. LDA >= max(1,N).
  • IPIV β€” IPIV is INTEGER array, dimension (N). Details of the interchanges and the block structure of D, as determined by DSYTRF.
  • WORK β€” WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)).
  • LWORK β€” LWORK is INTEGER. The dimension of the array WORK. If N = 0, LWORK >= 1, else LWORK >= (N+NB+1)*(NB+3). If LWORK = -1, then a workspace query is assumed; the routine:
    • calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array,
    • and no error message related to LWORK is issued by XERBLA.
  • 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.

🌸 Author 🌸

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

🌸 Definition at line 126 of file dsytri2.f. 🌸


🧚 subroutine ssytri2 🧚

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

SSYTRI2

🌸 Purpose 🌸

SSYTRI2 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 SSYTRF. And bestie, you already know: SSYTRI2 sets the LEADING DIMENSION of the workspace before calling SSYTRI2X that actually computes the inverse. The whole family is like this, it's a bit. πŸ’…

🌸 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.
  • N β€” N is INTEGER. The order of the matrix A. N >= 0.
  • A β€” …and okay we're literally out of page here, the rest of this one is rolling in with the next chunk, hold that thought 🫢

Okay so picking up right in the middle of ssytri2’s parameter list β€” no biggie, we’re carrying on like a group chat that never sleeps πŸ’…

  • A β€” A is REAL array, dimension (LDA,N). On entry, it’s the block diagonal matrix D and the multipliers used to obtain the factor U or L as computed by SSYTRF. On exit, if INFO = 0, it’s 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. 🫢
  • LDA β€” LDA is INTEGER. The leading dimension of the array A. 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. πŸŽ€
  • WORK β€” WORK is REAL array, dimension (MAX(1,LWORK)). 🌸
  • LWORK β€” LWORK is INTEGER. The dimension of the array WORK. If N = 0, LWORK >= 1, else LWORK >= (N+NB+1)*(NB+3). If LWORK = -1, then a workspace query is assumed; the routine calculates:
    • the optimal size of the WORK array, returns this value as the first entry of the WORK array,
    • and no error message related to LWORK is issued by XERBLA. πŸ”₯
  • 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. πŸ’€

🌸 Author 🌸

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

Definition at line 126 of file ssytri2.f. πŸ“Œ


πŸ’œ subroutine zhetri2 πŸ’œ

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

✨ Purpose ✨

ZHETRI2 computes the inverse of a COMPLEX*16 hermitian indefinite matrix A using the factorization A = U*D*U**T or A = L*D*L**T computed by ZHETRF. ZHETRI2 sets the LEADING DIMENSION of the workspace before calling ZHETRI2X that actually computes the inverse. Iconic delegation, honestly πŸ‘‘

πŸŽ€ 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. πŸ¦‹
  • N β€” N is INTEGER. The order of the matrix A. N >= 0. ✨
  • A β€” A is COMPLEX*16 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 ZHETRF. 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. 🫢
  • LDA β€” LDA is INTEGER. The leading dimension of the array A. LDA >= max(1,N). πŸ’…
  • IPIV β€” IPIV is INTEGER array, dimension (N). Details of the interchanges and the block structure of D as determined by ZHETRF. πŸŽ€
  • WORK β€” WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)). 🌸
  • LWORK β€” LWORK is INTEGER. The dimension of the array WORK. If N = 0, LWORK >= 1, else LWORK >= (N+NB+1)*(NB+3). If LWORK = -1, then a workspace query is assumed; the routine calculates:
    • the optimal size of the WORK array, returns this value as the first entry of the WORK array,
    • and no error message related to LWORK is issued by XERBLA. πŸ”₯
  • 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. 😭

🌸 Author 🌸

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

Definition at line 126 of file zhetri2.f. πŸ“Œ


πŸ’™ subroutine zsytri2 πŸ’™

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

✨ Purpose ✨

ZSYTRI2 computes the inverse of a COMPLEX*16 symmetric indefinite matrix A using the factorization A = U*D*U**T or A = L*D*L**T computed by ZSYTRF. ZSYTRI2 sets the LEADING DIMENSION of the workspace before calling ZSYTRI2X that actually computes the inverse. Main character energy from start to finish 🌈

πŸŽ€ 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. πŸ¦‹
  • N β€” N is INTEGER. The order of the matrix A. N >= 0. ✨
  • A β€” A is COMPLEX*16 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 ZSYTRF. 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. 🫢
  • LDA β€” LDA is INTEGER. The leading dimension of the array A. LDA >= max(1,N). πŸ’…
  • IPIV β€” IPIV is INTEGER array, dimension (N). Details of the interchanges and the block structure of D as determined by ZSYTRF. πŸŽ€
  • WORK β€” WORK is COMPLEX*16 array, dimension (N+NB+1)*(NB+3) 🌸
  • LWORK β€” LWORK is INTEGER. The dimension of the array WORK. WORK is size >= (N+NB+1)*(NB+3). If LDWORK = -1, then a workspace query is assumed; the routine calculates:
    • the optimal size of the WORK array, returns this value as the first entry of the WORK array,
    • and no error message related to LDWORK is issued by XERBLA. πŸ”₯
  • 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. 😭

🌸 Author 🌸

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

Definition at line 126 of file zsytri2.f. πŸ“Œ


🌈 Author 🌈

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


Source/version: LAPACK Version 3.12.0. Page: hetri2(3). Date: the date Doxygen generated this β€” it’s in the footer, bestie, iykyk πŸ’…πŸŽ€

πŸ“¦ where this page comes from