pttrs(3)

πŸ’… pttrs β€” okay bestie, let's talk triangular solves

So this is a page from the Library Functions Manual (that's the manual name, bestie, jot it down), and it's literally the whole pttrs family: four Fortran subroutines that solve a tridiagonal system A * X = B once you've already factored A with a pttrf-type routine. No cap, it's giving "reuse the factorization, don't redo the work." πŸ”₯


✨ SYNOPSIS ✨

🌸 Functions

  • subroutine cpttrs (uplo, n, nrhs, d, e, b, ldb, info) β€” CPTTRS
  • subroutine dpttrs (n, nrhs, d, e, b, ldb, info) β€” DPTTRS
  • subroutine spttrs (n, nrhs, d, e, b, ldb, info) β€” SPTTRS
  • subroutine zpttrs (uplo, n, nrhs, d, e, b, ldb, info) β€” ZPTTRS

πŸ¦‹ Detailed Description

Like, hi, this is the summary-of-everything part. Then comes the real tea: Function Documentation, where each of the four gets its own moment. πŸ’–


πŸ‘‘ Function Documentation

πŸ’œ subroutine cpttrs (character uplo, integer n, integer nrhs, real, dimension( * ) d, complex, dimension( * ) e, complex, dimension( ldb, * ) b, integer ldb, integer info)

✨ CPTTRS ✨

Purpose:

!>
!> CPTTRS solves a tridiagonal system of the form
!>    A * X = B
!> using the factorization A = U**H*D*U or A = L*D*L**H computed by CPTTRF.
!> D is a diagonal matrix specified in the vector D, U (or L) is a unit
!> bidiagonal matrix whose superdiagonal (subdiagonal) is specified in
!> the vector E, and X and B are N by NRHS matrices.
!>

So yeah β€” you bring the factorization from CPTTRF, it brings the solve. Obsessed. πŸŽ€

🎯 Parameters

  • UPLO
!>          UPLO is CHARACTER*1
!>          Specifies the form of the factorization and whether the
!>          vector E is the superdiagonal of the upper bidiagonal factor
!>          U or the subdiagonal of the lower bidiagonal factor L.
!>          = 'U':  A = U**H*D*U, E is the superdiagonal of U
!>          = 'L':  A = L*D*L**H, E is the subdiagonal of L
!>
  • N
!>          N is INTEGER
!>          The order of the tridiagonal matrix A.  N >= 0.
!>
  • NRHS
!>          NRHS is INTEGER
!>          The number of right hand sides, i.e., the number of columns
!>          of the matrix B.  NRHS >= 0.
!>
  • D
!>          D is REAL array, dimension (N)
!>          The n diagonal elements of the diagonal matrix D from the
!>          factorization A = U**H*D*U or A = L*D*L**H.
!>
  • E
!>          E is COMPLEX array, dimension (N-1)
!>          If UPLO = 'U', the (n-1) superdiagonal elements of the unit
!>          bidiagonal factor U from the factorization A = U**H*D*U.
!>          If UPLO = 'L', the (n-1) subdiagonal elements of the unit
!>          bidiagonal factor L from the factorization A = L*D*L**H.
!>
  • B
!>          B is COMPLEX array, dimension (LDB,NRHS)
!>          On entry, the right hand side vectors B for the system of
!>          linear equations.
!>          On exit, the solution vectors, X.
!>
Glow-up moment: B walks in as the right-hand side and leaves as the solution X. Main character energy fr fr. 🌈
  • LDB
!>          LDB is INTEGER
!>          The leading dimension of the array B.  LDB >= max(1,N).
!>
  • INFO
!>          INFO is INTEGER
!>          = 0: successful exit
!>          < 0: if INFO = -k, the k-th argument had an illegal value
!>

🫢 Author

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

Definition at line 120 of file cpttrs.f. πŸ“


πŸ’™ subroutine dpttrs (integer n, integer nrhs, double precision, dimension( * ) d, double precision, dimension( * ) e, double precision, dimension( ldb, * ) b, integer ldb, integer info)

✨ DPTTRS ✨

Purpose:

!>
!> DPTTRS solves a tridiagonal system of the form
!>    A * X = B
!> using the L*D*L**T factorization of A computed by DPTTRF.  D is a
!> diagonal matrix specified in the vector D, L is a unit bidiagonal
!> matrix whose subdiagonal is specified in the vector E, and X and B
!> are N by NRHS matrices.
!>

Note the vibe shift: this one is L*D*L**T, and there's no UPLO because it's always the L*D*L**T factorization from DPTTRF. πŸ’€πŸ’–

🎯 Parameters

  • N
!>          N is INTEGER
!>          The order of the tridiagonal matrix A.  N >= 0.
!>
  • NRHS
!>          NRHS is INTEGER
!>          The number of right hand sides, i.e., the number of columns
!>          of the matrix B.  NRHS >= 0.
!>
  • D
!>          D is DOUBLE PRECISION array, dimension (N)
!>          The n diagonal elements of the diagonal matrix D from the
!>          L*D*L**T factorization of A.
!>
  • E
!>          E is DOUBLE PRECISION array, dimension (N-1)
!>          The (n-1) subdiagonal elements of the unit bidiagonal factor
!>          L from the L*D*L**T factorization of A.  E can also be regarded
!>          as the superdiagonal of the unit bidiagonal factor U from the
!>          factorization A = U**T*D*U.
!>
Bestie, read that again β€” E is lowkey doing double duty. Same numbers, two ways to look at them. πŸ¦‹
  • B
!>          B is DOUBLE PRECISION array, dimension (LDB,NRHS)
!>          On entry, the right hand side vectors B for the system of
!>          linear equations.
!>          On exit, the solution vectors, X.
!>
  • LDB
!>          LDB is INTEGER
!>          The leading dimension of the array B.  LDB >= max(1,N).
!>
  • INFO
!>          INFO is INTEGER
!>          = 0: successful exit
!>          < 0: if INFO = -k, the k-th argument had an illegal value
!>

🫢 Author

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

Definition at line 108 of file dpttrs.f. πŸ“


πŸ’š subroutine spttrs (integer n, integer nrhs, real, dimension( * ) d, real, dimension( * ) e, real, dimension( ldb, * ) b, integer ldb, integer info)

✨ SPTTRS ✨

Purpose:

!>
!> SPTTRS solves a tridiagonal system of the form
!>    A * X = B
!> using the L*D*L**T factorization of A computed by SPTTRF.  D is a
!> diagonal matrix specified in the vector D, L is a unit bidiagonal
!> matrix whose subdiagonal is specified in the vector E, and X and B
!> are N by NRHS matrices.
!>

Basically the single-precision twin of DPTTRS β€” same shape, SPTTRF instead of DPTTRF. Iconic sibling behavior. 🌸

🎯 Parameters

  • N
!>          N is INTEGER
!>          The order of the tridiagonal matrix A.  N >= 0.
!>
  • NRHS
!>          NRHS is INTEGER
!>          The number of right hand sides, i.e., the number of columns
!>          of the matrix B.  NRHS >= 0.
!>
  • D
!>          D is REAL array, dimension (N)
!>          The n diagonal elements of the diagonal matrix D from the
!>          L*D*L**T factorization of A.
!>
  • E
!>          E is REAL array, dimension (N-1)
!>          The (n-1) subdiagonal elements of the unit bidiagonal factor
!>          L from the L*D*L**T factorization of A.  E can also be regarded
!>          as the superdiagonal of the unit bidiagonal factor U from the
!>          factorization A = U**T*D*U.
!>
  • B
!>          B is REAL array, dimension (LDB,NRHS)
!>          On entry, the right hand side vectors B for the system of
!>          linear equations.
!>          On exit, the solution vectors, X.
!>
  • LDB
!>          LDB is INTEGER
!>          The leading dimension of the array B.  LDB >= max(1,N).
!>
  • INFO
!>          INFO is INTEGER
!>          = 0: successful exit
!>          < 0: if INFO = -k, the k-th argument had an illegal value
!>

🫢 Author

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

Definition at line 108 of file spttrs.f. πŸ“


πŸ’› subroutine zpttrs (character uplo, integer n, integer nrhs, double precision, dimension( * ) d, complex*16, dimension( * ) e, complex*16, dimension( ldb, * ) b, integer ldb, integer info)

✨ ZPTTRS ✨

Purpose:

!>
!> ZPTTRS solves a tridiagonal system of the form
!>    A * X = B
!> using the factorization A = U**H *D* U or A = L*D*L**H computed by ZPTTRF.
!> D is a diagonal matrix specified in the vector D, U (or L) is a unit
!> bidiagonal matrix whose superdiagonal (subdiagonal) is specified in
!> the vector E, and X and B are N by NRHS matrices.
!>

Double-precision complex, conjugate-transpose flavored, and it's got UPLO again. Slay. πŸ‘‘

🎯 Parameters

  • UPLO
!>          UPLO is CHARACTER*1
!>          Specifies the form of the factorization and whether the
!>          vector E is the superdiagonal of the upper bidiagonal factor
!>          U or the subdiagonal of the lower bidiagonal factor L.
!>          = 'U':  A = U**H *D*U, E is the superdiagonal of U
!>          = 'L':  A = L*D*L**H, E is the subdiagonal of L
!>
  • N
!>          N is INTEGER
!>          The order of the tridiagonal matrix A.  N >= 0.
!>
  • NRHS
!>          NRHS is INTEGER
!>          The number of right hand sides, i.e., the number of columns
!>          of the matrix B.  NRHS >= 0.
!>
  • D
!>          D is DOUBLE PRECISION array, dimension (N)
!>          The n diagonal elements of the diagonal matrix D from the
!>          factorization A = U**H *D*U or A = L*D*L**H.
!>
  • E
!>          E is COMPLEX*16 array, dimension (N-1)
!>          If UPLO = 'U', the (n-1) superdiagonal elements of the unit
!>          bidiagonal factor U from the factorization A = U**H*D*U.
!>          If UPLO = 'L', the (n-1) subdiagonal elements of the unit
!>          bidiagonal factor L from the factorization A = L*D*L**H.
!>
  • B
!>          B is COMPLEX*16 array, dimension (LDB,NRHS)
!>          On entry, the right hand side vectors B for the system of
!>          linear equations.
!>          On exit, the solution vectors, X.
!>
  • LDB
!>          LDB is INTEGER
!>          The leading dimension of the array B.  LDB >= max(1,N).
!>
  • INFO
!>          INFO is INTEGER
!>          = 0: successful exit
!>          < 0: if INFO = -k, the k-th argument had an illegal value
!>

🫢 Author

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

Definition at line 120 of file zpttrs.f. πŸ“


πŸŽ€ Author

Generated automatically by Doxygen for LAPACK from the source code. (Yes bestie, the docs wrote themselves β€” we love an automated queen. πŸ€–πŸ’–)


Quick reminder before you go: INFO < 0 means the k-th argument had an illegal value, where INFO = -k. That's the whole warning system here β€” no extra drama. πŸ’€

⭐ Okay that's the whole page!! This was LAPACK, Version 3.12.0, and the doc itself is pttrs(3) β€” mwah, go solve something tridiagonal, bestie. πŸ¦‹πŸ’…πŸŽ€

πŸ“¦ where this page comes from