SRC/dsposv.f(3)
π SRC/dsposv.f(3) β Library Functions Manual π
okay so bestie, welcome to SRC/dsposv.f(3) from the Library Functions Manual β this is the whole group chat for SRC/dsposv.f, and we are keeping every single detail. no cap. π
πΈ NAME πΈ
SRC/dsposv.f
β¨ 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 equationsA * X = Bfor PO matrices π«Ά
π Function/Subroutine Documentation π
π« subroutine dsposv signature π«
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 β yep, that is the whole one-liner, bestie. π
π¦ Purpose π¦
okay so here is the entire point: 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. π
DSPOSV first attempts to factorize the matrix in SINGLE PRECISION and use this factorization within 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. not me being flexible or whatever π
The iterative refinement is not going to be a winning strategy if the ratio 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. periodt.
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 matrixA.N >= 0.NRHSβNRHS is INTEGER; the number of right hand sides, i.e., the number of columns of the matrixB.NRHS >= 0.AβA is DOUBLE PRECISION array, dimension (LDA,N). On entry, the symmetric matrixA. 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. π¦LDAβLDA is INTEGER; the leading dimension of the arrayA.LDA >= max(1,N).BβB is DOUBLE PRECISION array, dimension (LDB,NRHS); theN-by-NRHSright hand side matrixB.LDBβLDB is INTEGER; the leading dimension of the arrayB.LDB >= max(1,N).XβX is DOUBLE PRECISION array, dimension (LDX,NRHS); ifINFO = 0, theN-by-NRHSsolution matrixX.LDXβLDX is INTEGER; the leading dimension of the arrayX.LDX >= max(1,N).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.
and that is the entire page, bestie π«Ά β LAPACK Version 3.12.0, SRC/dsposv.f(3). mwah π
π¦ 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