SRC/cspsvx.f(3)
π SRC/cspsvx.f(3) β LAPACK manual page, bestie edition π
This is the LAPACK Library Functions Manual page for SRC/cspsvx.f, and honestly? It's giving βcomplex symmetric solver with receipts.β Let's get into it β¨
πΈ NAME πΈ
SRC/cspsvx.f
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine cspsvx (fact, uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx,
rcond, ferr, berr, work, rwork, info)
CSPSVX computes the solution to system of linear equations A * X = B for OTHER matrices π
π Function/Subroutine Documentation π
subroutine cspsvx (character fact, character uplo, integer n, integer nrhs,
complex, dimension( * ) ap, complex, dimension( * ) afp, integer,
dimension( * ) ipiv, complex, dimension( ldb, * ) b, integer ldb,
complex, dimension( ldx, * ) x, integer ldx, real rcond, real,
dimension( * ) ferr, real, dimension( * ) berr, complex, dimension( * )
work, real, dimension( * ) rwork, integer info)
CSPSVX computes the solution to system of linear equations A * X = B for OTHER matrices π«Ά
π Purpose π
Okay so CSPSVX uses the diagonal pivoting factorization A = U*D*U**T or A = L*D*L**T to compute the solution to a complex 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 π¦
Error bounds on the solution and a condition estimate are also provided. So yes, not just βhere's your answer,β but βhere's your answer and a vibe check on how much you should trust it.β π
π Description π
The following steps are performed:
- If
FACT = 'N', 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 and D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
- If some
D(i,i)=0, so that D is exactly singular, then the routine returns withINFO = i. Otherwise, the factored form of A is used to estimate the condition number of the matrix A. If the reciprocal of the condition number is less than machine precision,INFO = N+1is returned as a warning, but the routine still goes on to solve for X and compute error bounds as described below. Warning behavior, bestie β not a full stop. - The system of equations is solved for X using the factored form of A.
- Iterative refinement is applied to improve the computed solution matrix and calculate error bounds and backward error estimates for it.
π¦ Parameters π¦
FACTβCHARACTER*1πΈ Specifies whether or not the factored form of A has been supplied on entry.= 'F':On entry,AFPandIPIVcontain the factored form of A.AP,AFPandIPIVwill not be modified.= 'N':The matrix A will be copied toAFPand factored.
UPLOβCHARACTER*1β¨= 'U':Upper triangle of A is stored;= 'L':Lower triangle of A is stored.
NβINTEGERπ The number of linear equations, i.e., the order of the matrix A.N >= 0.NRHSβINTEGERπ The number of right hand sides, i.e., the number of columns of the matrices B and X.NRHS >= 0.APβCOMPLEX array, dimension (N*(N+1)/2)π¦ 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 arrayAPas follows:- if
UPLO = 'U',AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j; - if
UPLO = 'L',AP(i + (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n.
- if
See below for further details.
AFPβCOMPLEX array, dimension (N*(N+1)/2)π
If FACT = 'F', then AFP is an input argument and on entry contains 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 CSPTRF, stored as a packed triangular matrix in the same storage format as A.
If FACT = 'N', then AFP is an output argument and on exit contains 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 CSPTRF, stored as a packed triangular matrix in the same storage format as A.
IPIVβINTEGER array, dimension (N)π
If FACT = 'F', then IPIV is an input argument and on entry contains details of the interchanges and the block structure of D, as determined by CSPTRF.
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.
If FACT = 'N', then IPIV is an output argument and on exit contains details of the interchanges and the block structure of D, as determined by CSPTRF.
BβCOMPLEX array, dimension (LDB,NRHS)π The N-by-NRHS right hand side matrix B.LDBβINTEGERβ The leading dimension of the array B.LDB >= max(1,N).XβCOMPLEX array, dimension (LDX,NRHS)π« IfINFO = 0orINFO = N+1, the N-by-NRHS solution matrix X.LDXβINTEGERπ«Ά The leading dimension of the array X.LDX >= max(1,N).RCONDβREALπ₯ The estimate of the reciprocal condition number of the matrix A. IfRCONDis less than the machine precision (in particular, ifRCOND = 0), the matrix is singular to working precision. This condition is indicated by a return code ofINFO > 0.FERRβREAL array, dimension (NRHS)πΈ The estimated forward error bound for each solution vectorX(j)(the j-th column of the solution matrix X). IfXTRUEis the true solution corresponding toX(j),FERR(j)is an estimated upper bound for the magnitude of the largest element in(X(j) - XTRUE)divided by the magnitude of the largest element inX(j). The estimate is as reliable as the estimate forRCOND, and is almost always a slight overestimate of the true error.BERRβREAL array, dimension (NRHS)π¦ The componentwise relative backward error of each solution vectorX(j)(i.e., the smallest relative change in any element of A or B that makesX(j)an exact solution).WORKβCOMPLEX array, dimension (2*N)β¨RWORKβREAL array, dimension (N)πINFOβINTEGERπ= 0:successful exit< 0:ifINFO = -i, the i-th argument had an illegal value> 0:ifINFO = i, and i is<= N:D(i,i)is exactly zero. The factorization has been completed but the factor D is exactly singular, so the solution and error bounds could not be computed.RCOND = 0is returned.= N+1:D is nonsingular, butRCONDis less than machine precision, meaning that the matrix is singular to working precision. Nevertheless, the solution and error bounds are computed because there are a number of situations where the computed solution can be more accurate than the value ofRCONDwould suggest.
π 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 ]
Definition at line 275 of file cspsvx.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
Okay bestie, that's the whole page. Footer vibes: LAPACK Version 3.12.0, source SRC/cspsvx.f(3) β and the footer's date slot is not filled in, so no made-up date from me πβ¨
π¦ 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