hetri_3x(3)

πŸ’… hetri_3x(3) β€” {he,sy}tri_3x: inverse πŸ’…

Okay so this is the hetri_3x(3) page from the Library Functions Manual, and bestie, it's literally the "how do I invert this matrix" page. Six subroutines, all doing inverse things, all living their best blocked-algorithm life. Grab a snack πŸ“ β€” we're going in.


✨ NAME ✨

hetri_3x β€” {he,sy}tri_3x: inverse. That's it, that's the whole name. Short, iconic, to the point πŸ‘‘


πŸ¦‹ SYNOPSIS πŸ¦‹

🌈 Functions 🌈

Six little icons, each one an inverse machine:

  • subroutine chetri_3x (uplo, n, a, lda, e, ipiv, work, nb, info) β€” CHETRI_3X
  • subroutine csytri_3x (uplo, n, a, lda, e, ipiv, work, nb, info) β€” CSYTRI_3X
  • subroutine dsytri_3x (uplo, n, a, lda, e, ipiv, work, nb, info) β€” DSYTRI_3X
  • subroutine ssytri_3x (uplo, n, a, lda, e, ipiv, work, nb, info) β€” SSYTRI_3X
  • subroutine zhetri_3x (uplo, n, a, lda, e, ipiv, work, nb, info) β€” ZHETRI_3X
  • subroutine zsytri_3x (uplo, n, a, lda, e, ipiv, work, nb, info) β€” ZSYTRI_3X

πŸ”₯ Detailed Description πŸ”₯

There isn't a big paragraph here, just the vibes β€” the details live down in the Function Documentation section where every single one of these six gets its own moment. Keep scrolling, it's all below πŸ‘‡


πŸŽ€ Function Documentation πŸŽ€

πŸ’œ chetri_3x β€” CHETRI_3X

subroutine chetri_3x (character uplo, integer n, complex, dimension( lda, * ) a, integer lda, complex, dimension( * ) e, integer, dimension( * ) ipiv, complex, dimension( n+nb+1, * ) work, integer nb, integer info)
CHETRI_3X

✨ Purpose ✨

Okay so CHETRI_3X computes the inverse of a complex Hermitian indefinite matrix A, and it does it using the factorization that CHETRF_RK or CHETRF_BK already computed for you. No cap, you gotta hand it a factorized matrix β€” it's not doing the factorization from scratch.

The factorization it expects looks like this:

A = P*U*D*(U**H)*(P**T) or A = P*L*D*(L**H)*(P**T),

Where, quick rundown:

  • U (or L) is a unit upper (or lower) triangular matrix
  • U**H (or L**H) is the conjugate of U (or L)
  • P is a permutation matrix
  • P**T is the transpose of P
  • D is Hermitian and block diagonal, with 1-by-1 and 2-by-2 diagonal blocks

And this? This is the blocked version of the algorithm, calling Level 3 BLAS. Highkey efficient πŸ’…

🌸 Parameters 🌸

  • UPLO β€” well hello, UPLO is CHARACTER*1. It specifies whether the details of the factorization are stored as an upper or lower triangular matrix. = 'U': Upper triangle of A is stored; = 'L': Lower triangle of A is stored. Pick one, bestie, there is no third option.
  • N β€” N is INTEGER. The order of the matrix A. Constraint: N >= 0.
  • A β€” A is COMPLEX array, dimension (LDA,N). On entry, this holds the diagonal of the block diagonal matrix D and the factors U or L, exactly as computed by CHETRF_RK and CHETRF_BK:
    • a) ONLY the diagonal elements of the Hermitian block diagonal matrix D live on the diagonal of A, i.e. D(k,k) = A(k,k); the superdiagonal (or subdiagonal) elements of D should be provided on entry in array E β€” so don't try to sneak them into A, they go in E.
    • b) If UPLO = 'U': factor U sits in the superdiagonal part of A. If UPLO = 'L': factor L sits in the subdiagonal part of A.

On exit, if INFO = 0, you get the Hermitian 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. Constraint: LDA >= max(1,N).
  • E β€” E is COMPLEX array, dimension (N). On entry, it contains the superdiagonal (or subdiagonal) elements of the Hermitian block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks, where:
    • If UPLO = 'U': E(i) = D(i-1,i), i=2:N, E(1) not referenced;
    • If UPLO = 'L': E(i) = D(i+1,i), i=1:N-1, E(N) not referenced.
NOTE: For a 1-by-1 diagonal block D(k), where 1 <= k <= N, the element E(k) is not referenced in both the UPLO = 'U' and UPLO = 'L' cases. So don't stress about that slot πŸ™ˆ
  • IPIV β€” IPIV is INTEGER array, dimension (N). All the details of the interchanges and the block structure of D, as determined by CHETRF_RK or CHETRF_BK.
  • WORK β€” WORK is COMPLEX array, dimension (N+NB+1,NB+3). That's your scratch space, babes.
  • NB β€” NB is INTEGER. Block size. Yes, the block size is a parameter, this really is that blocked algorithm.
  • 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. Rough. Nothing we can do.

πŸ‘‘ Author πŸ‘‘

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

🫢 Contributors: 🫢

June 2017, Igor Kozachenko, Computer Science Division, University of California, Berkeley

Definition at line 158 of file chetri_3x.f.


πŸ’™ csytri_3x β€” CSYTRI_3X

subroutine csytri_3x (character uplo, integer n, complex, dimension( lda, * ) a, integer lda, complex, dimension( * ) e, integer, dimension( * ) ipiv, complex, dimension( n+nb+1, * ) work, integer nb, integer info)
CSYTRI_3X

✨ Purpose ✨

CSYTRI_3X computes the inverse of a complex symmetric indefinite matrix A using the factorization computed by CSYTRF_RK or CSYTRF_BK:

A = P*U*D*(U**T)*(P**T) or A = P*L*D*(L**T)*(P**T),

Breaking that down:

  • U (or L) is a unit upper (or lower) triangular matrix
  • U**T (or L**T) is the transpose of U (or L) β€” note: transpose, not conjugate-transpose, because symmetric not Hermitian, iykyk
  • P is a permutation matrix
  • P**T is the transpose of P
  • D is symmetric and block diagonal, with 1-by-1 and 2-by-2 diagonal blocks

And yeah β€” this is the blocked version of the algorithm, calling Level 3 BLAS. Same slay, different flavor.

🌸 Parameters 🌸

  • UPLO β€” UPLO is CHARACTER*1. Specifies whether the details of the factorization are stored as an upper or lower triangular matrix. = 'U': Upper triangle of A is stored; = 'L': Lower triangle of A is stored.
  • N β€” N is INTEGER. The order of the matrix A. Constraint: N >= 0.
  • A β€” A is COMPLEX array, dimension (LDA,N). On entry, diagonal of the block diagonal matrix D and factors U or L as computed by CSYTRF_RK and CSYTRF_BK:
    • a) ONLY diagonal elements of the symmetric block diagonal matrix D on the diagonal of A, i.e. D(k,k) = A(k,k); (superdiagonal (or subdiagonal) elements of D should be provided on entry in array E), and
    • b) If UPLO = 'U': factor U in the superdiagonal part of A. If UPLO = 'L': factor L in the subdiagonal part of A.

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. Constraint: LDA >= max(1,N).
  • E β€” E is COMPLEX array, dimension (N). On entry, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks, where:
    • If UPLO = 'U': E(i) = D(i-1,i), i=2:N, E(1) not referenced;
    • If UPLO = 'L': E(i) = D(i+1,i), i=1:N-1, E(N) not referenced.
NOTE: For 1-by-1 diagonal block D(k), where 1 <= k <= N, the element E(k) is not referenced in both UPLO = 'U' or UPLO = 'L' cases.
  • IPIV β€” IPIV is INTEGER array, dimension (N). Details of the interchanges and the block structure of D as determined by CSYTRF_RK or CSYTRF_BK.
  • WORK β€” WORK is COMPLEX array, dimension (N+NB+1,NB+3).
  • NB β€” NB is INTEGER. Block size.
  • 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. Singular matrix says no 😭

πŸ‘‘ Author πŸ‘‘

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

🫢 Contributors: 🫢

June 2017, Igor Kozachenko, Computer Science Division, University of California, Berkeley

Definition at line 158 of file csytri_3x.f.


πŸ’š dsytri_3x β€” DSYTRI_3X

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

✨ Purpose ✨

DSYTRI_3X computes the inverse of a real symmetric indefinite matrix A using the factorization computed by DSYTRF_RK or DSYTRF_BK:

A = P*U*D*(U**T)*(P**T) or A = P*L*D*(L**T)*(P**T),

Where:

  • U (or L) is a unit upper (or lower) triangular matrix
  • U**T (or L**T) is the transpose of U (or L)
  • P is a permutation matrix
  • P**T is the transpose of P
  • D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks

And yes bestie, this is the blocked version of the algorithm, calling Level 3 BLAS πŸ”₯

🌸 Parameters 🌸

  • UPLO β€” UPLO is CHARACTER*1. Specifies whether the details of the factorization are stored as an upper or lower triangular matrix. = 'U': Upper triangle of A is stored; = 'L': Lower triangle of A is stored.
  • N β€” N is INTEGER. The order of the matrix A. Constraint: N >= 0.
  • A β€” and part 1 of this page runs out of room right here 😭 the A section picks up where we left off in part 2, so don't touch that dial 🫢
  • A β€” DOUBLE PRECISION array, dimension (LDA,N)

okay so on entry, A is carrying the diagonal of the block diagonal matrix D and the factors U or L, exactly as DSYTRF_RK and DSYTRF_BK computed them, like:

  • a) ONLY the diagonal elements of the symmetric block diagonal matrix D sit on the diagonal of A, i.e. D(k,k) = A(k,k); (the superdiagonal (or subdiagonal) elements of D should be provided on entry in array E), and
  • b) if UPLO = 'U': factor U is in the superdiagonal part of A. If UPLO = 'L': factor L is in the subdiagonal part of A.

on exit, if INFO = 0, it's the symmetric inverse of the original matrix, no cap:

  • 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, don't go reading the half she didn't touch, bestie πŸ’…

  • LDA β€” INTEGER. the leading dimension of the array A. constraint era: LDA >= max(1,N). ✨
  • E β€” DOUBLE PRECISION array, dimension (N). on entry it contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks, where:
    • if UPLO = 'U': E(i) = D(i-1,i), i=2:N, E(1) not referenced;
    • if UPLO = 'L': E(i) = D(i+1,i), i=1:N-1, E(N) not referenced.
NOTE: for a 1-by-1 diagonal block D(k), where 1 <= k <= N, the element E(k) is not referenced in both the UPLO = 'U' or UPLO = 'L' cases. she's just sitting there, unbothered, unemployed 🫢
  • IPIV β€” INTEGER array, dimension (N). the deets on the interchanges and the block structure of D, as determined by DSYTRF_RK or DSYTRF_BK. πŸ”₯
  • WORK β€” DOUBLE PRECISION array, dimension (N+NB+1,NB+3). the workspace, she works hard so the rest of us don't have to ✨
  • NB β€” INTEGER. block size. that's it. that's the whole description. iconic minimalism πŸŽ€
  • INFO β€” 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. πŸ’€ so yeah, she's singular, it's giving "no inverse bestie", do not proceed.

🌸 Author 🌸

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

🌈 Contributors 🌈

June 2017, Igor Kozachenko, Computer Science Division, University of California, Berkeley

πŸ“Œ Definition πŸ“Œ

Definition at line 158 of file dsytri_3x.f.


πŸ’œ subroutine ssytri_3x β€” the single-precision twin πŸ’œ

subroutine ssytri_3x (character uplo, integer n, real, dimension( lda, * )
a, integer lda, real, dimension( * ) e, integer, dimension( * ) ipiv,
real, dimension( n+nb+1, * ) work, integer nb, integer info)

✨ Purpose ✨

SSYTRI_3X computes the inverse of a real symmetric indefinite matrix A using the factorization computed by SSYTRF_RK or SSYTRF_BK:

A = P*U*D*(U**T)*(P**T) or A = P*L*D*(L**T)*(P**T),

where U (or L) is unit upper (or lower) triangular matrix, U**T (or L**T) is the transpose of U (or L), P is a permutation matrix, P**T is the transpose of P, and D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.

and the flex? this is the blocked version of the algorithm, calling Level 3 BLAS. she's not doing this one element at a time, she's doing it in blocks, iykyk πŸ‘‘

πŸŽ€ Parameters πŸŽ€

  • UPLO β€” CHARACTER*1. specifies whether the details of the factorization are stored as an upper or lower triangular matrix:
    • = 'U': upper triangle of A is stored;
    • = 'L': lower triangle of A is stored.
  • N β€” INTEGER. the order of the matrix A. N >= 0.
  • A β€” REAL array, dimension (LDA,N). on entry: the diagonal of the block diagonal matrix D and the factors U or L as computed by SYTRF_RK and SSYTRF_BK:
    • a) ONLY the diagonal elements of the symmetric block diagonal matrix D go on the diagonal of A, i.e. D(k,k) = A(k,k); (the superdiagonal (or subdiagonal) elements of D should be provided on entry in array E), and
    • b) if UPLO = 'U': factor U in the superdiagonal part of A. If UPLO = 'L': factor L in the subdiagonal part of A.

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 β€” INTEGER. the leading dimension of the array A. LDA >= max(1,N). πŸ“
  • E β€” REAL array, dimension (N). on entry, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks, where:
    • if UPLO = 'U': E(i) = D(i-1,i), i=2:N, E(1) not referenced;
    • if UPLO = 'L': E(i) = D(i+1,i), i=1:N-1, E(N) not referenced.
NOTE: for a 1-by-1 diagonal block D(k), where 1 <= k <= N, the element E(k) is not referenced in both the UPLO = 'U' or UPLO = 'L' cases. she's off the clock in both scenarios fr πŸ’€
  • IPIV β€” INTEGER array, dimension (N). details of the interchanges and the block structure of D as determined by SSYTRF_RK or SSYTRF_BK. πŸ¦‹
  • WORK β€” REAL array, dimension (N+NB+1,NB+3). the workspace bestie, she's grinding ✨
  • NB β€” INTEGER. block size. short king of a description πŸŽ€
  • INFO β€” 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. πŸ’€ singular queen, inverse denied.

🌸 Author 🌸

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

🌈 Contributors 🌈

June 2017, Igor Kozachenko, Computer Science Division, University of California, Berkeley

πŸ“Œ Definition πŸ“Œ

Definition at line 158 of file ssytri_3x.f.


πŸ¦‹ subroutine zhetri_3x β€” complex Hermitian edition πŸ¦‹

subroutine zhetri_3x (character uplo, integer n, complex*16, dimension( lda,
* ) a, integer lda, complex*16, dimension( * ) e, integer, dimension( *
) ipiv, complex*16, dimension( n+nb+1, * ) work, integer nb, integer
info)

✨ Purpose ✨

ZHETRI_3X computes the inverse of a complex Hermitian indefinite matrix A using the factorization computed by ZHETRF_RK or ZHETRF_BK:

A = P*U*D*(U**H)*(P**T) or A = P*L*D*(L**H)*(P**T),

where U (or L) is unit upper (or lower) triangular matrix, U**H (or L**H) is the conjugate of U (or L), P is a permutation matrix, P**T is the transpose of P, and D is Hermitian and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.

and yeah β€” this is the blocked version of the algorithm, calling Level 3 BLAS. same energy, but make it complex and conjugate-transposed πŸ’…βœ¨

πŸŽ€ Parameters πŸŽ€

  • UPLO β€” CHARACTER*1. specifies whether the details of the factorization are stored as an upper or lower triangular matrix:
    • = 'U': upper triangle of A is stored;
    • = 'L': lower triangle of A is stored.
  • N β€” INTEGER. the order of the matrix A. N >= 0. πŸŽ€
  • A β€” COMPLEX*16 array, dimension (LDA,N). on entry, the diagonal of the block diagonal matrix D and the factors U or L as computed by ZHETRF_RK and ZHETRF_BK:
    • a) ONLY the diagonal elements of the Hermitian block diagonal matrix D on the diagonal of A, i.e. D(k,k) = A(k,k); (the superdiagonal (or subdiagonal) elements of D should be provided on entry in array E), and
    • b) if UPLO = 'U': factor U in the superdiagonal part of A. If UPLO = 'L': factor L in the subdiagonal part of A.

on exit, if INFO = 0, the Hermitian 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 β€” INTEGER. the leading dimension of the array A. LDA >= max(1,N). no notes, just vibes and a hard constraint πŸ“
  • E β€” COMPLEX*16 array, dimension (N). on entry, contains the superdiagonal (or subdiagonal) elements of the Hermitian block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks, where:
    • if UPLO = 'U': E(i) = D(i-1,i), i=2:N, E(1) not referenced;
    • if UPLO = 'L': E(i) = D(i+1,i), i=1:N-1, E(N) not referenced.
NOTE: for a 1-by-1 diagonal block D(k), where 1 <= k <= N, the element E(k) is not referenced in both the UPLO = 'U' or UPLO = 'L' cases. she does not get read, in either timeline πŸ™ˆ
  • IPIV β€” INTEGER array, dimension (N). details of the interchanges and the block structure of D as determined by ZHETRF_RK or ZHETRF_BK. πŸ”₯
  • WORK β€” COMPLEX*16 array, dimension (N+NB+1,NB+3). workspace, but make it complex 🧚
  • NB β€” INTEGER. block size. (still just block size. still iconic.) ⭐

…and INFO is up next, which is exactly where this chunk runs out β€” keep scrolling bestie, it picks right back up πŸ‘€

INFO is INTEGER β€” bestie, this is the final vibe check on your call πŸ”₯

  • = 0: successful exit, we ate and left no crumbs πŸ’…
  • < 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.

Contributors 🫢

!>
!>  June 2017,  Igor Kozachenko,
!>                  Computer Science Division,
!>                  University of California, Berkeley
!>
!>

Definition at line 158 of file zhetri_3x.f.


subroutine zsytri_3x (character uplo, integer n, complex*16, dimension( lda, * ) a, integer lda, complex*16, dimension( * ) e, integer, dimension( * ) ipiv, complex*16, dimension( n+nb+1, * ) work, integer nb, integer info) πŸ’–

   subroutine zsytri_3x (character uplo, integer n, complex*16, dimension( lda,
       * ) a, integer lda, complex*16, dimension( * ) e, integer, dimension( *
       ) ipiv, complex*16, dimension( n+nb+1, * ) work, integer nb, integer
       info)

ZSYTRI_3X

Purpose: ✨

ZSYTRI_3X computes the inverse of a complex symmetric indefinite matrix A using the factorization computed by ZSYTRF_RK or ZSYTRF_BK:

A = P*U*D*(U**T)*(P**T) or A = P*L*D*(L**T)*(P**T),

where U (or L) is unit upper (or lower) triangular matrix, U**T (or L**T) is the transpose of U (or L), P is a permutation matrix, P**T is the transpose of P, and D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.

This is the blocked version of the algorithm, calling Level 3 BLAS. πŸš€

Parameters πŸŽ€

  • UPLO β€” is CHARACTER*1. Specifies whether the details of the factorization are stored as an upper or lower triangular matrix.
    • = 'U': Upper triangle of A is stored;
    • = 'L': Lower triangle of A is stored.
  • N β€” is INTEGER. The order of the matrix A. N >= 0.
  • A β€” is COMPLEX*16 array, dimension (LDA,N). On entry, diagonal of the block diagonal matrix D and factors U or L as computed by ZSYTRF_RK and ZSYTRF_BK:
    • a) ONLY diagonal elements of the symmetric block diagonal matrix D on the diagonal of A, i.e. D(k,k) = A(k,k); (superdiagonal (or subdiagonal) elements of D should be provided on entry in array E), and
    • b) If UPLO = 'U': factor U in the superdiagonal part of A. If UPLO = 'L': factor L in the subdiagonal part of A.

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 β€” is INTEGER. The leading dimension of the array A. LDA >= max(1,N).
  • E β€” is COMPLEX*16 array, dimension (N). On entry, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks, where
    • If UPLO = 'U': E(i) = D(i-1,i), i=2:N, E(1) not referenced;
    • If UPLO = 'L': E(i) = D(i+1,i), i=1:N-1, E(N) not referenced.

NOTE: For 1-by-1 diagonal block D(k), where 1 <= k <= N, the element E(k) is not referenced in both UPLO = 'U' or UPLO = 'L' cases.

  • IPIV β€” is INTEGER array, dimension (N). Details of the interchanges and the block structure of D as determined by ZSYTRF_RK or ZSYTRF_BK.
  • WORK β€” is COMPLEX*16 array, dimension (N+NB+1,NB+3).
  • NB β€” is INTEGER. Block size.
  • 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.

Contributors 🫢

!>
!>  June 2017,  Igor Kozachenko,
!>                  Computer Science Division,
!>                  University of California, Berkeley
!>
!>

Definition at line 158 of file zsytri_3x.f.


This iconic page was generated automatically by Doxygen for LAPACK from the source code πŸ’–. LAPACK, Version 3.12.0, hetri_3x(3) β€” periodt. πŸŽ€
πŸ“¦ where this page comes from