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

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

πŸ’… NAME πŸ’…

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

okay so bestie, this is a page from the Library Functions Manual and it's literally all about one little file, sspsv.f πŸŽ€ β€” blessed Fortran source that lives deep in the LAPACK build tree. Come with me, it's gonna slay.


✨ SYNOPSIS ✨

Functions/Subroutines

  • subroutine SSPSV (uplo, n, nrhs, ap, ipiv, b, ldb, info) β€” SSPSV computes the solution to system of linear equations A * X = B for OTHER matrices

πŸ¦‹ Function/Subroutine Documentation πŸ¦‹

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

SSPSV computes the solution to system of linear equations A * X = B for OTHER matrices

🧠 Purpose

!>
!> SSPSV computes the solution to a real system of linear equations
!>    A * X = B,
!> where A is an N-by-N symmetric matrix stored in packed format and X
!> and B are N-by-NRHS matrices.
!>
!> The diagonal pivoting method is used to factor A as
!>    A = U * D * U**T,  if UPLO = 'U', or
!>    A = L * D * L**T,  if UPLO = 'L',
!> where U (or L) is a product of permutation and unit upper (lower)
!> triangular matrices, D is symmetric and block diagonal with 1-by-1
!> and 2-by-2 diagonal blocks.  The factored form of A is then used to
!> solve the system of equations A * X = B.
!>

periodt. that's the whole vibe: factor first, solve second πŸ’…

🌸 Parameters

UPLO

!>          UPLO is CHARACTER*1
!>          = 'U':  Upper triangle of A is stored;
!>          = 'L':  Lower triangle of A is stored.
!>

bestie, you literally pick a side: 'U' for the upper triangle, 'L' for the lower one. choose wisely 🫢

N

!>          N is INTEGER
!>          The number of linear equations, i.e., the order of the
!>          matrix A.  N >= 0.
!>

the number of linear equations β€” aka the order of matrix A. and yes, N >= 0, no cap.

NRHS

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

how many right hand sides you got, aka how many columns matrix B has. NRHS >= 0 ✨

AP

!>          AP is REAL array, dimension (N*(N+1)/2)
!>          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.
!>
!>          On exit, the block diagonal matrix D and the multipliers used
!>          to obtain the factor U or L from the factorization
!>          A = U*D*U**T or A = L*D*L**T as computed by SSPTRF, stored as
!>          a packed triangular matrix in the same storage format as A.
!>

okay this one is the main character πŸ‘‘ β€” dimension (N*(N+1)/2), packed columnwise into one linear array. on entry it's your triangle of A, on exit it's the block diagonal matrix D plus the multipliers from SSPTRF, chillin' in the same storage format. glow-up complete πŸ’–

IPIV

!>          IPIV is INTEGER array, dimension (N)
!>          Details of the interchanges and the block structure of D, as
!>          determined by SSPTRF.  If IPIV(k) > 0, then rows and columns
!>          k and IPIV(k) were interchanged, and D(k,k) is a 1-by-1
!>          diagonal block.  If UPLO = 'U' and IPIV(k) = IPIV(k-1) < 0,
!>          then rows and columns k-1 and -IPIV(k) were interchanged and
!>          D(k-1:k,k-1:k) is a 2-by-2 diagonal block.  If UPLO = 'L' and
!>          IPIV(k) = IPIV(k+1) < 0, then rows and columns k+1 and
!>          -IPIV(k) were interchanged and D(k:k+1,k:k+1) is a 2-by-2
!>          diagonal block.
!>

dimension (N), and it's giving receipts πŸ“‹ β€” all the interchange details and the block structure of D, straight from SSPTRF. positive IPIV(k) means 1-by-1 block, and the negative twin situation depends on whether UPLO = 'U' (check k-1) or UPLO = 'L' (check k+1). iykyk 😌

B

!>          B is REAL 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.
!>

comes in as the right hand side, leaves as the solution matrix X when INFO = 0. literally a transformation arc πŸ¦‹

LDB

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

leading dimension of B, and it's gotta be LDB >= max(1,N). respect the constraint or don't bother πŸ’€

INFO

!>          INFO is INTEGER
!>          = 0:  successful exit
!>          < 0:  if INFO = -i, the i-th argument had an illegal value
!>          > 0:  if INFO = i, D(i,i) is exactly zero.  The factorization
!>                has been completed, but the block diagonal matrix D is
!>                exactly singular, so the solution could not be
!>                computed.
!>

the vibe check of the whole operation 🚨 β€” 0 slays, < 0 means argument -i was illegal, and > 0 means D(i,i) is exactly zero: the factorization finished but D is exactly singular so the solution could NOT be computed. tragic, but the function is telling you honestly 🫢

πŸŽ€ Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

πŸ”₯ Further Details:

!>
!>  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 = aji)
!>                 a44
!>
!>  Packed storage of the upper triangle of A:
!>
!>  AP = [ a11, a12, a22, a13, a23, a33, a14, a24, a34, a44 ]
!>

see? N = 4, UPLO = 'U', and the whole upper triangle gets flattened into that one array. the way it just lines up perfectly β€” obsessed πŸ₯Ήβœ¨

Definition at line 161 of file sspsv.f.


πŸ““ Author

Generated automatically by Doxygen for LAPACK from the source code.


and that's the whole page bestie, no notes πŸ’…

cute little sign-off: this was LAPACK, Version 3.12.0 β€” handed to you from /home/abui...RC/sspsv.f(3). go solve something symmetric and iconic 🌈⭐
πŸ“¦ where this page comes from