SRC/dspsv.f(3)
π SRC/dspsv.f π
okay so this is a LAPACK manual page (the Library Functions Manual kind, iykyk) and honestly bestie, it's a whole vibe. Buckle up.
β¨ SYNOPSIS β¨
πΈ Functions/Subroutines πΈ
subroutine dspsv (uplo, n, nrhs, ap, ipiv, b, ldb, info)β DSPSV computes the solution to system of linear equations A * X = B for OTHER matrices
π Function/Subroutine Documentation π
subroutine dspsv (character uplo, integer n, integer nrhs, double precision,
dimension( * ) ap, integer, dimension( * ) ipiv, double precision,
dimension( ldb, * ) b, integer ldb, integer info)
DSPSV computes the solution to system of linear equations A * X = B for OTHER matrices β like, that's the whole assignment and she ate π
π¦ Purpose π¦
DSPSV 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 * UT, if UPLO = 'U', or A = L * D * LT, 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.
ngl, that's the entire plot. She factors A with the diagonal pivoting method, gets that D looking all block-diagonal with her 1-by-1 and 2-by-2 blocks, and then uses the factored form to actually solve A * X = B. main character energy fr fr π₯
π Parameters π
UPLOβUPLO is CHARACTER*1. Which triangle are we even working with, bestie:= 'U': Upper triangle of A is stored;= 'L': Lower triangle of A is stored.
NβN is INTEGER. The number of linear equations, i.e., the order of the matrix A.N >= 0. (Yes, she has standards. Zero is allowed, negative is not. π)NRHSβNRHS is INTEGER. The number of right hand sides, i.e., the number of columns of the matrix B.NRHS >= 0.APβAP is DOUBLE PRECISION 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)for1<=i<=j; - if
UPLO = 'L',AP(i + (j-1)*(2n-j)/2) = A(i,j)forj<=i<=n.
- if
See below for further details (she's got a whole diagram for you, don't worry π).
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 DSPTRF, stored as a packed triangular matrix in the same storage format as A. Same storage format, no cap.
IPIVβIPIV is INTEGER array, dimension (N). Details of the interchanges and the block structure of D, as determined by DSPTRF. So here's the situation:- If
IPIV(k) > 0, then rows and columns k andIPIV(k)were interchanged, andD(k,k)is a 1-by-1 diagonal block. - If
UPLO = 'U'andIPIV(k) = IPIV(k-1) < 0, then rows and columns k-1 and-IPIV(k)were interchanged andD(k-1:k,k-1:k)is a 2-by-2 diagonal block. - If
UPLO = 'L'andIPIV(k) = IPIV(k+1) < 0, then rows and columns k+1 and-IPIV(k)were interchanged andD(k:k+1,k:k+1)is a 2-by-2 diagonal block.
- If
Negative IPIV is giving "we swapped as a pair" and honestly iconic of her π«Ά
BβB is DOUBLE PRECISION array, dimension (LDB,NRHS). On entry: the N-by-NRHS right hand side matrix B. On exit: ifINFO = 0, the N-by-NRHS solution matrix X. Glow-up moment: B walks in as the problem and leaves as the answer. β¨LDBβLDB is INTEGER. The leading dimension of the array B.LDB >= max(1,N). Respect the boundary, bestie.INFOβINFO is INTEGER:= 0: successful exit π< 0: ifINFO = -i, the i-th argument had an illegal value (someone did NOT read the spec)> 0: ifINFO = 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. π Like, the factorization finished but the answer is simply not computable. Not her fault. Truly.
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
(the whole squad showed up for this one π)
β Further Details β
The packed storage scheme is illustrated by the following example whenN = 4,UPLO = 'U': Two-dimensional storage of the symmetric matrix A:text a11 a12 a13 a14 a22 a23 a24 a33 a34 (aij = aji) a44Packed storage of the upper triangle of A:text AP = [ a11, a12, a22, a13, a23, a33, a14, a24, a34, a44 ]
Notice how the lower-left is just... not there? Because aij = aji, she doesn't need to store the mirror. Efficient queen. π
Definition at line 161 of file dspsv.f.
πΈ Author πΈ
Generated automatically by Doxygen for LAPACK from the source code. (so don't come for her formatting, she was literally generated π)
LAPACK β Version 3.12.0 β SRC/dspsv.f(3) π mwah, go solve those symmetric packed systems bestie, you got this π¦πΈπ
π¦ 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