/home/abui...RC/cptsv.f(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

πŸ’… CPTSV πŸ’…

ok so bestie, this one's from /home/abui...RC/cptsv.f(3) β€” it's a section 3 library functions manual page, and the actual file it documents is this whole journey:

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/cptsv.f

It's LAPACK, it's Fortran, it's giving big computational main character energy. Let's get into it 🫢


✨ NAME ✨

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/cptsv.f β€” like, that's the file, that's the name, that's the whole vibe. no notes πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

subroutine CPTSV (n, nrhs, d, e, b, ldb, info)

CPTSV computes the solution to system of linear equations A * X = B for PT matrices β€” that's the official one-liner, and honestly? she ate. πŸ”₯


πŸ’– Function/Subroutine Documentation πŸ’–

subroutine CPTSV (integer n, integer nrhs, real, dimension( * ) d, complex,
    dimension( * ) e, complex, dimension( ldb, * ) b, integer ldb, integer
    info)

So like, restating for the people in the back: CPTSV computes the solution to system of linear equations A * X = B for PT matrices. periodt. πŸ‘‘

🌸 Purpose 🌸

!> !> CPTSV computes the solution to a complex system of linear equations !> A*X = B, where A is an N-by-N Hermitian positive definite tridiagonal !> matrix, and X and B are N-by-NRHS matrices. !> !> A is factored as A = L*D*L**H, and the factored form of A is then !> used to solve the system of equations. !>

so basically bestie, A is a complex Hermitian positive definite tridiagonal matrix, dimensions N-by-N, and X and B are N-by-NRHS matrices. the routine factors A as A = L*D*L**H, and then uses that factored form to actually solve the system. it's giving ✨prep work pays off✨ β€” factor first, solve second. no cap. 🧚


πŸŽ€ Parameters πŸŽ€

N

!> N is INTEGER !> The order of the matrix A. N >= 0. !>

N is INTEGER β€” it's the order of the matrix A. the rule is N >= 0, and we respect the rule. 🫑

NRHS

!> NRHS is INTEGER !> The number of right hand sides, i.e., the number of columns !> of the matrix B. NRHS >= 0. !>

NRHS is INTEGER β€” the number of right hand sides, like, the number of columns of the matrix B. and yes, NRHS >= 0. she's flexible but not that flexible πŸ’…

D

!> D is REAL array, dimension (N) !> On entry, the n diagonal elements of the tridiagonal matrix !> A. On exit, the n diagonal elements of the diagonal matrix !> D from the factorization A = L*D*L**H. !>

D is a REAL array, dimension (N). on entry, it's the n diagonal elements of the tridiagonal matrix A. on exit, it's the n diagonal elements of that diagonal matrix D from the factorization A = L*D*L**H. so she comes in as one thing and leaves as another β€” glow-up arc fr fr. 🌈

E

!> E is COMPLEX array, dimension (N-1) !> On entry, the (n-1) subdiagonal elements of the tridiagonal !> matrix A. On exit, the (n-1) subdiagonal elements of the !> unit bidiagonal factor L from the L*D*L**H factorization of !> A. E can also be regarded as the superdiagonal of the unit !> bidiagonal factor U from the U**H*D*U factorization of A. !>

E is a COMPLEX array, dimension (N-1). on entry it holds the (n-1) subdiagonal elements of the tridiagonal matrix A; on exit it holds the (n-1) subdiagonal elements of the unit bidiagonal factor L from the L*D*L**H factorization of A. and here's the fun part β€” E can also be regarded as the superdiagonal of the unit bidiagonal factor U from the U**H*D*U factorization of A. it's giving versatile icon, one array two readings, we love a multitasker πŸ˜­πŸ’œ

B

!> B is COMPLEX array, dimension (LDB,NRHS) !> On entry, the N-by-NRHS right hand side matrix B. !> On exit, if INFO = 0, the N-by-NRHS solution matrix X. !>

B is a COMPLEX array, dimension (LDB,NRHS). on entry, it's the N-by-NRHS right hand side matrix B. on exit, if INFO = 0, it's the N-by-NRHS solution matrix X. so like, conditional transformation β€” that INFO = 0 clause is doing a LOT of heavy lifting there bestie, don't skip it πŸ™ˆ

LDB

!> LDB is INTEGER !> The leading dimension of the array B. LDB >= max(1,N). !>

LDB is INTEGER β€” the leading dimension of the array B, and the requirement is LDB >= max(1,N). that max(1,N) is not decorative, she's protecting you from yourself πŸ’€

INFO

!> INFO is INTEGER !> = 0: successful exit !> < 0: if INFO = -i, the i-th argument had an illegal value !> > 0: if INFO = i, the leading principal minor of order i !> is not positive, and the solution has not been !> computed. The factorization has not been completed !> unless i = N. !>

INFO is INTEGER β€” the status report, the receipts, the ~vibe check~ of the whole operation:

  • = 0 β†’ successful exit. slay, we're done, go home. ✨
  • < 0 β†’ if INFO = -i, the i-th argument had an illegal value. somebody passed something cursed. 😬
  • > 0 β†’ if INFO = i, the leading principal minor of order i is not positive, and the solution has not been computed. also, the factorization has not been completed unless i = N. so like... you don't get an answer. read that again. no answer. 🫠
⚠️ okay genuine heads up bestie: that INFO > 0 case means no solution was computed at all, and unless i = N the factorization is sitting there unfinished too. don't ignore INFO. do not. ignore. INFO. πŸ™

πŸ‘‘ Author πŸ‘‘

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

absolute legends, all four, no cap. 🫢

⭐ Definition at line 114 of file cptsv.f.

that's the location. line 114. go look, she's there. πŸ’…


🌟 Author 🌟

Generated automatically by Doxygen for LAPACK from the source code. so nobody hand-wrote this bad boy β€” the robots did it. iconic behavior honestly. πŸ€–βœ¨


and that's the whole page, bestie β€” every flag, every array bound, every INFO branch, all of it, still intact, just with 200% more personality πŸ’–

LAPACK β€” Version 3.12.0 β€” /home/abui...RC/cptsv.f(3) πŸŽ€πŸ¦‹πŸŒΈ

πŸ“¦ where this page comes from