hetrs(3)

🌈 hetrs β€” {he,sy}trs: triangular solve using factor 🌈

hiii bestie πŸ’– okay so this is the hetrs(3) page from the Library Functions Manual, and it's basically the back-half of the LU-ish factorization story for symmetric/Hermitian matrices. You know how ?hetrf / ?sytrf factor your matrix and hand you back a pile of blocks? Yeah β€” these routines are the "ok now actually solve it" part. Six flavors, all serving the same energy: chetrs, csytrs, dsytrs, ssytrs, zhetrs, zsytrs. Slay. ✨


πŸŽ€ NAME πŸŽ€

hetrs β€” {he,sy}trs: triangular solve using factor

(that's the whole name section, she's short and to the point πŸ’…)


πŸ¦‹ SYNOPSIS πŸ¦‹

✨ Functions ✨

subroutine chetrs (uplo, n, nrhs, a, lda, ipiv, b, ldb, info)
    CHETRS
subroutine csytrs (uplo, n, nrhs, a, lda, ipiv, b, ldb, info)
    CSYTRS
subroutine dsytrs (uplo, n, nrhs, a, lda, ipiv, b, ldb, info)
    DSYTRS
subroutine ssytrs (uplo, n, nrhs, a, lda, ipiv, b, ldb, info)
    SSYTRS
subroutine zhetrs (uplo, n, nrhs, a, lda, ipiv, b, ldb, info)
    ZHETRS
subroutine zsytrs (uplo, n, nrhs, a, lda, ipiv, b, ldb, info)
    ZSYTRS

Same argument list across the board β€” uplo, n, nrhs, a, lda, ipiv, b, ldb, info β€” which honestly? iconic. Learn it once, use it six times 🫢


🌸 Detailed Description 🌸

So the original page has this heading and then… literally nothing under it before the next section. No cap. It's giving "heading as a personality trait" 😭 but we move, the real content lives in Function Documentation right below πŸ‘‡


πŸ‘‘ Function Documentation πŸ‘‘

πŸ’œ chetrs πŸ’œ

subroutine chetrs (character uplo, integer n, integer nrhs, complex, dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv, complex, dimension( ldb, * ) b, integer ldb, integer info)

CHETRS

πŸŽ€ Purpose πŸŽ€

Okay so β€” CHETRS solves a system of linear equations A*X = B with a complex Hermitian matrix A using the factorization A = U*D*U**H or A = L*D*L**H computed by CHETRF. πŸ’–

Translation: CHETRF already did the heavy lifting, you're just here to cash in the solve. Periodt.

πŸ“ Parameters πŸ“

  • UPLO β€” is CHARACTER*1. Tells us whether the deets of the factorization were stored as an upper or lower triangular matrix. Your choices:
    • = 'U': Upper triangular, form is A = U*D*U**H;
    • = 'L': Lower triangular, form is A = L*D*L**H.
  • N β€” is INTEGER. The order of the matrix A. Has to satisfy N >= 0.
  • NRHS β€” is INTEGER. The number of right hand sides, i.e., the number of columns of the matrix B. Has to satisfy NRHS >= 0.
  • A β€” is COMPLEX array, dimension (LDA,N). The block diagonal matrix D and the multipliers used to obtain the factor U or L as computed by CHETRF. (so: the leftovers from your factorization, lovingly preserved 😌)
  • LDA β€” is INTEGER. The leading dimension of the array A. LDA >= max(1,N).
  • IPIV β€” is INTEGER array, dimension (N). Details of the interchanges and the block structure of D as determined by CHETRF.
  • B β€” is COMPLEX array, dimension (LDB,NRHS). On entry, the right hand side matrix B. On exit, the solution matrix X. ✨ (yes she gets overwritten, that's the whole bit)
  • LDB β€” is INTEGER. The leading dimension of the array B. LDB >= max(1,N).
  • INFO β€” is INTEGER. The vibe check:
    • = 0: successful exit πŸŽ‰
    • < 0: if INFO = -i, the i-th argument had an illegal value πŸ’€

🌟 Author 🌟

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Definition at line 119 of file chetrs.f.


πŸ’œ csytrs πŸ’œ

subroutine csytrs (character uplo, integer n, integer nrhs, complex, dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv, complex, dimension( ldb, * ) b, integer ldb, integer info)

CSYTRS

πŸŽ€ Purpose πŸŽ€

CSYTRS solves a system of linear equations A*X = B with a complex symmetric matrix A using the factorization A = U*D*U**T or A = L*D*L**T computed by CSYTRF. πŸ¦‹

Spot the difference from her Hermitian sister: symmetric, and it's U**T / L**T β€” plain transpose, no conjugate. iykyk πŸ’…

πŸ“ Parameters πŸ“

  • 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 β€” is INTEGER. The order of the matrix A. N >= 0.
  • NRHS β€” is INTEGER. The number of right hand sides, i.e., the number of columns of the matrix B. NRHS >= 0.
  • A β€” is COMPLEX array, dimension (LDA,N). The block diagonal matrix D and the multipliers used to obtain the factor U or L as computed by CSYTRF.
  • LDA β€” is INTEGER. The leading dimension of the array A. LDA >= max(1,N).
  • IPIV β€” is INTEGER array, dimension (N). Details of the interchanges and the block structure of D as determined by CSYTRF.
  • B β€” is COMPLEX array, dimension (LDB,NRHS). On entry, the right hand side matrix B. On exit, the solution matrix X. 🫢
  • LDB β€” is INTEGER. The leading dimension of the array B. LDB >= max(1,N).
  • INFO β€” is INTEGER:
    • = 0: successful exit 🌈
    • < 0: if INFO = -i, the i-th argument had an illegal value πŸ™ˆ

🌟 Author 🌟

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Definition at line 119 of file csytrs.f.


πŸ’œ dsytrs πŸ’œ

subroutine dsytrs (character uplo, integer n, integer nrhs, double precision, dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv, double precision, dimension( ldb, * ) b, integer ldb, integer info)

DSYTRS

πŸŽ€ Purpose πŸŽ€

DSYTRS solves a system of linear equations A*X = B with a real symmetric matrix A using the factorization A = U*D*U**T or A = L*D*L**T computed by DSYTRF. πŸ”₯

Real. Symmetric. Double precision. The workhorse of the group, honestly β€” main character energy but in a quiet way πŸŽ€

πŸ“ Parameters πŸ“

  • 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 β€” is INTEGER. The order of the matrix A. N >= 0.
  • NRHS β€” is INTEGER. The number of right hand sides, i.e., the number of columns of the matrix B. NRHS >= 0.
  • A β€” is DOUBLE PRECISION array, dimension (LDA,N). The block diagonal matrix D and the multipliers used to obtain the factor U or L as computed by DSYTRF.
  • LDA β€” is INTEGER. The leading dimension of the array A. LDA >= max(1,N).
  • IPIV β€” is INTEGER array, dimension (N). Details of the interchanges and the block structure of D as determined by DSYTRF.
  • B β€” is DOUBLE PRECISION array, dimension (LDB,NRHS). On entry, the right hand side matrix B. On exit, the solution matrix X. πŸ’–
  • LDB β€” is INTEGER. The leading dimension of the array B. LDB >= max(1,N).
  • INFO β€” is INTEGER:
    • = 0: successful exit ✨
    • < 0: if INFO = -i, the i-th argument had an illegal value 😭

🌟 Author 🌟

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Definition at line 119 of file dsytrs.f.


πŸ’œ ssytrs πŸ’œ

subroutine ssytrs (character uplo, integer n, integer nrhs, real, dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv, real, dimension( ldb, * ) b, integer ldb, integer info)

SSYTRS

πŸŽ€ Purpose πŸŽ€

SSYTRS solves a system of linear equations A*X = B with a real symmetric matrix A using the factorization A = U*D*U**T or A = L*D*L**T computed by SSYTRF. ⭐

Same as DSYTRS but single precision β€” real ones know the difference is just how much precision you're willing to pay for πŸ’Έ

πŸ“ Parameters πŸ“

  • 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 β€” is INTEGER. The order of the matrix A. N >= 0.
  • NRHS β€” is INTEGER. The number of right hand sides, i.e., the number of columns of the matrix B. NRHS >= 0.
  • A β€” is REAL array, dimension (LDA,N). The block diagonal matrix D and the multipliers used to obtain the factor U or L as computed by SSYTRF.
  • LDA β€” is INTEGER. The leading dimension of the array A. LDA >= max(1,N).
  • IPIV β€” is INTEGER array, dimension (N). Details of the interchanges and the block structure of D as determined by SSYTRF.
  • B β€” is REAL array, dimension (LDB,NRHS). On entry, the right hand side matrix B. On exit, the solution matrix X. 🧚
  • LDB β€” is INTEGER. The leading dimension of the array B. LDB >= max(1,N).
  • INFO β€” is INTEGER:
    • = 0: successful exit πŸŽ€
    • < 0: if INFO = -i, the i-th argument had an illegal value πŸ’€

🌟 Author 🌟

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

Definition at line 119 of file ssytrs.f.


πŸ’œ zhetrs πŸ’œ

subroutine zhetrs (character uplo, integer n, integer nrhs, complex*16, dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv, complex*16, dimension( ldb, * ) b, integer ldb, integer info)

ZHETRS

πŸŽ€ Purpose πŸŽ€

ZHETRS solves a system of linear equations A*X = B with a complex Hermitian matrix A using the factorization A = U*D*U**H or A = L*D*L**H computed by ZHETRF. 🌈

Double complex, Hermitian, conjugate-transpose β€” the full-glam version of CHETRS and she knows it πŸ‘‘

πŸ“ Parameters πŸ“

  • 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**H;
    • = 'L': Lower triangular, form is A = L*D*L**H.

and then the next parameter is NRHS β€” which is exactly where part 1 runs out 😭 bestie the page literally cuts off mid-parameter-list. The rest of ZHETRS (NRHS, A, LDA, IPIV, B, LDB, INFO, her author block, her definition line) plus zsytrs are all waiting in part 2 πŸ’–

  • NRHS β€” INTEGER. the number of right hand sides, bestie, aka the number of columns of the matrix B. Gotta be NRHS >= 0. πŸ’–
  • A β€” COMPLEX*16 array, dimension (LDA,N). this is the block diagonal matrix D plus the multipliers that were used to get the factor U or L, exactly as computed by ZHETRF. no cap, it's already been through the wringer. ✨
  • LDA β€” INTEGER. the leading dimension of the array A, and the vibe check is LDA >= max(1,N). πŸ‘‘
  • IPIV β€” INTEGER array, dimension (N). all the deets on the interchanges and the block structure of D, as determined by ZHETRF. πŸŽ€
  • B β€” COMPLEX*16 array, dimension (LDB,NRHS). on entry it's the right hand side matrix B; on exit it's the solution matrix X. literally the glow-up. πŸ¦‹
  • LDB β€” INTEGER. the leading dimension of the array B, and LDB >= max(1,N) or it's a no. 🌸
  • INFO β€” INTEGER. the receipts:
    • = 0: successful exit πŸŽ‰
    • < 0: if INFO = -i, the i-th argument had an illegal value πŸ’€

πŸ’… Author

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

Definition at line 119 of file zhetrs.f.


🧚 zsytrs

subroutine zsytrs (character uplo, integer n, integer nrhs, complex*16,
    dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv,
    complex*16, dimension( ldb, * ) b, integer ldb, integer info)

ZSYTRS

🌟 Purpose

!>
!> ZSYTRS solves a system of linear equations A*X = B with a complex
!> symmetric matrix A using the factorization A = U*D*U**T or
!> A = L*D*L**T computed by ZSYTRF.
!>

okay so short version: it solves A*X = B for a complex symmetric matrix A, using the factorization that ZSYTRF already handed you. team work makes the dream work. 🫢

✨ Parameters

  • UPLO β€” CHARACTER*1. tells us whether the factorization deets 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 β€” INTEGER. the order of the matrix A. N >= 0, periodt. πŸ‘‘
  • NRHS β€” INTEGER. the number of right hand sides, i.e. the number of columns of the matrix B. NRHS >= 0. πŸ’–
  • A β€” COMPLEX*16 array, dimension (LDA,N). the block diagonal matrix D and the multipliers used to obtain the factor U or L, as computed by ZSYTRF. icons only. ✨
  • LDA β€” INTEGER. the leading dimension of the array A. LDA >= max(1,N). πŸŽ€
  • IPIV β€” INTEGER array, dimension (N). details of the interchanges and the block structure of D, as determined by ZSYTRF. πŸ¦‹
  • B β€” COMPLEX*16 array, dimension (LDB,NRHS). on entry, the right hand side matrix B; on exit, the solution matrix X. main character transformation fr fr. 🌸
  • LDB β€” INTEGER. the leading dimension of the array B. LDB >= max(1,N). πŸ’…
  • INFO β€” INTEGER. the final verdict:
    • = 0: successful exit πŸŽ‰
    • < 0: if INFO = -i, the i-th argument had an illegal value πŸ™ˆ

πŸ’œ Author

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

Definition at line 119 of file zsytrs.f.


πŸŽ€ Author

this whole page was generated automatically by Doxygen for LAPACK from the source code. iykyk, the robots did the typing, i just did the vibes. πŸ’«


and that's the page!! πŸ“ this lil masterpiece is LAPACK, Version 3.12.0, and it's the hetrs(3) page you've been reading β€” go forth and solve those systems, bestie. slay. πŸ’…πŸ‘‘
πŸ“¦ where this page comes from