DSPOSV(3)
π DSPOSV(3) β LAPACK Library Functions Manual π
πΈ NAME πΈ
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/dsposv.f β bestie, this is the full source-file path for DSPOSV, the LAPACK routine that solves a real linear system A * X = B for PO matrices. The path is literally giving main-character energy in the NAME section. π
β¨ SYNOPSIS β¨
π§ Functions/Subroutines
subroutine DSPOSV (uplo, n, nrhs, a, lda, b, ldb, x, ldx, work, swork, iter, info)
DSPOSV computes the solution to system of linear equations A * X = B for PO matrices
π¦ Function/Subroutine Documentation π¦
subroutine DSPOSV (character uplo, integer n, integer nrhs, double precision, dimension( lda, * ) a, integer lda, double precision, dimension( ldb, * ) b, integer ldb, double precision, dimension( ldx, * ) x, integer ldx, double precision, dimension( n, * ) work, real, dimension( * ) swork, integer iter, integer info)
DSPOSV computes the solution to system of linear equations A * X = B for PO matrices
π― Purpose
Okay so DSPOSV computes the solution to a real system of linear equations A * X = B, where A is an N-by-N symmetric positive definite matrix and X and B are N-by-NRHS matrices. π
First it attempts to factorize the matrix in SINGLE PRECISION and use that factorization inside an iterative refinement procedure to produce a solution with DOUBLE PRECISION normwise backward error quality (see below). If the approach fails, the method switches to a DOUBLE PRECISION factorization and solve. β¨
The iterative refinement is not going to be a winning strategy if the ratio of SINGLE PRECISION performance over DOUBLE PRECISION performance is too small. A reasonable strategy should take the number of right-hand sides and the size of the matrix into account. This might be done with a call to ILAENV in the future. Up to now, we always try iterative refinement. π
The iterative refinement process is stopped if
ITER > ITERMAX
or for all the RHS we have:
RNRM < SQRT(N)*XNRM*ANRM*EPS*BWDMAX
where
ITERis the number of the current iteration in the iterative refinement processRNRMis the infinity-norm of the residualXNRMis the infinity-norm of the solutionANRMis the infinity-operator-norm of the matrixAEPSis the machine epsilon returned byDLAMCH('Epsilon')
The value ITERMAX and BWDMAX are fixed to 30 and 1.0D+00 respectively. π
π§ Parameters
UPLOβUPLO is CHARACTER*1= '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. π¦
- The number of linear equations, i.e., the order of the matrix
NRHSβNRHS is INTEGER- The number of right hand sides, i.e., the number of columns of the matrix
B.NRHS >= 0. πΈ
- The number of right hand sides, i.e., the number of columns of the matrix
AβA is DOUBLE PRECISION array, dimension (LDA,N)- On entry, the symmetric matrix
A. IfUPLO = 'U', the leadingN-by-Nupper triangular part ofAcontains the upper triangular part of the matrixA, and the strictly lower triangular part ofAis not referenced. IfUPLO = 'L', the leadingN-by-Nlower triangular part ofAcontains the lower triangular part of the matrixA, and the strictly upper triangular part ofAis not referenced. - On exit, if iterative refinement has been successfully used (
INFO = 0andITER >= 0, see description below), thenAis unchanged. If double precision factorization has been used (INFO = 0andITER < 0, see description below), then the arrayAcontains the factorUorLfrom the Cholesky factorizationA = U**T*UorA = L*L**T. π
- On entry, the symmetric matrix
LDAβLDA is INTEGER- The leading dimension of the array
A.LDA >= max(1,N). β¨
- The leading dimension of the array
BβB is DOUBLE PRECISION array, dimension (LDB,NRHS)- The
N-by-NRHSright hand side matrixB. π«Ά
- The
LDBβLDB is INTEGER- The leading dimension of the array
B.LDB >= max(1,N). π
- The leading dimension of the array
XβX is DOUBLE PRECISION array, dimension (LDX,NRHS)- If
INFO = 0, theN-by-NRHSsolution matrixX. π
- If
LDXβLDX is INTEGER- The leading dimension of the array
X.LDX >= max(1,N). β
- The leading dimension of the array
WORKβWORK is DOUBLE PRECISION array, dimension (N,NRHS)- This array is used to hold the residual vectors. π§
SWORKβSWORK is REAL array, dimension (N*(N+NRHS))- This array is used to use the single precision matrix and the right-hand sides or solutions in single precision. π
ITERβITER is INTEGER< 0: iterative refinement has failed, double precision factorization has been performed-1 : the routine fell back to full precision for implementation- or machine-specific reasons-2 : narrowing the precision induced an overflow, the routine fell back to full precision-3 : failure of SPOTRF-31: stop the iterative refinement after the 30th iterations
> 0: iterative refinement has been successfully used. Returns the number of iterationsπ₯
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 of (DOUBLE PRECISION) 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.
Definition at line 197 of file dsposv.f. πΈ
π Author
Generated automatically by Doxygen for LAPACK from the source code. β¨
Okay bestie, that's the whole DSPOSV tea βπ. Cute sign-off from the footer: LAPACK, Version 3.12.0, and /home/abui...RC/dsposv.f(3) β that's the source/version and the footer as printed, no separate date shown. Slay. π
β¨
π¦ where this page comes from
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms