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)β CPTTRSsubroutine dpttrs (n, nrhs, d, e, b, ldb, info)β DPTTRSsubroutine spttrs (n, nrhs, d, e, b, ldb, info)β SPTTRSsubroutine 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:Bwalks in as the right-hand side and leaves as the solutionX. 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 < 0means the k-th argument had an illegal value, whereINFO = -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
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms