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

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

πŸ’… /home/abui...RC/sppsv.f(3) β€” LAPACK Library Functions Manual, section 3

okay so bestie, welcome to the glow-up of one (1) very specific Fortran file. this is a Library Functions Manual page for section <pink>3</pink> β€” the land of library calls β€” and the star of the show is a little routine called SPPSV. she's not famous, she's not flashy, but she gets the job done. let's go πŸŽ€


✨ NAME ✨

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

yeah. that's the whole path. it's giving "full government name at the DMV" energy but honestly? respect. it's the source file, babe, and that's the whole identity πŸ’β€β™€οΈ


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

subroutine SPPSV (uplo, n, nrhs, ap, b, ldb, info)

okay so per the synopsis blurb: SPPSV computes the solution to system of linear equations A * X = B for OTHER matrices. yes "OTHER matrices" is literally what it says and yes we're keeping it verbatim, don't come for me 😌


πŸ‘‘ Function/Subroutine Documentation πŸ‘‘

subroutine SPPSV (character uplo, integer n, integer nrhs, real, dimension( * ) ap, real, dimension( ldb, * ) b, integer ldb, integer info)

here's the full signature, character for character, because we do not play with types in this house. and the headline again: SPPSV computes the solution to system of linear equations A * X = B for OTHER matrices. iconic, consistent, on brand ✨

🌸 Purpose 🌸

so the actual purpose, straight from the source comments:

SPPSV computes the solution to a real system of linear equations A * X = B, where A is an N-by-N symmetric positive definite matrix stored in packed format and X and B are N-by-NRHS matrices. The Cholesky decomposition is used to factor A as A = U**T* U, if UPLO = 'U', or A = L * L**T, if UPLO = 'L', where U is an upper triangular matrix and L is a lower triangular matrix. The factored form of A is then used to solve the system of equations A * X = B.

translation bestie: she factors your matrix with Cholesky β€” upper U route or lower L route depending on UPLO β€” and then uses that factored form to actually solve A * X = B. multitasking queen πŸ’…

🧚 Parameters 🧚

  • UPLO β€” this one's a CHARACTER*1 and it's basically the "which triangle are we feeling today" flag. = 'U': the upper triangle of A is stored; = 'L': the lower triangle of A is stored. pick one, commit, slay 🫢
  • N β€” an INTEGER, the number of linear equations, i.e. the order of the matrix A. constraint: N >= 0. zero is fine, negative is not, we don't do that here.
  • NRHS β€” an INTEGER, the number of right hand sides, i.e. the number of columns of the matrix B. constraint: NRHS >= 0. same deal, non-negative only 😀
  • AP β€” a REAL array of dimension (N*(N+1)/2). and okay this is the main character of the parameter list, so listen up:
    • On entry: the upper or lower triangle of the symmetric matrix A, packed columnwise in a linear array. the j-th column of A is stored in the array AP as follows:
      • if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
      • if UPLO = 'L', AP(i + (j-1)*(2n-j)/2) = A(i,j) for j<=i<=n.
    • See below for further details (and bestie, we do go below, the receipts are in Further Details πŸ‘€).
    • On exit, if INFO = 0, the factor U or L from the Cholesky factorization A = U**T*U or A = L*L**T, in the same storage format as A. she replaces what she came with. no notes.
  • B β€” a REAL array of 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. glow-up arc fr fr, she goes in as B and comes out as X πŸ”₯
  • LDB β€” an INTEGER, the leading dimension of the array B. constraint: LDB >= max(1,N). don't skimp on the leading dimension, it will absolutely notice πŸ™ˆ
  • INFO β€” an INTEGER and the vibes report at the end:
    • = 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 of A is not positive, so the factorization could not be completed, and the solution has not been computed 😭

🌈 Author 🌈

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

look at that group project actually working out. four institutions, one subroutine, no cap 🫑

⭐ Further Details: ⭐

okay so the packed storage scheme gets a whole illustrated example, and honestly? it ate. here it is when N = 4, UPLO = 'U':

The packed storage scheme is illustrated by the following example when N = 4, UPLO = 'U': Two-dimensional storage of the symmetric matrix A:
   a11 a12 a13 a14
       a22 a23 a24
           a33 a34     (aij = conjg(aji))
               a44
Packed storage of the upper triangle of A:
AP = [ a11, a12, a22, a13, a23, a33, a14, a24, a34, a44 ]

see how she folded the triangle like a fitted sheet? that's the whole trick. (aij = conjg(aji)) stays in there too because we don't erase math notation in this house 🧚


πŸŽ€ Definition πŸŽ€

Definition at line 143 of file sppsv.f.


πŸ’– Author (the meta one) πŸ’–

Generated automatically by Doxygen for LAPACK from the source code. so technically the author here is a robot who read the source and made a page, and honestly? she did that πŸ’…


πŸ“ sign-off πŸ“

this page is from LAPACK, Version 3.12.0, and it lives at /home/abui...RC/sppsv.f(3) β€” that's the source/version and path situation, all noted, all accounted for. go factor something symmetric positive definite, bestie, and remember: INFO = 0 or it's not slaying πŸ¦‹βœ¨

πŸ“¦ where this page comes from