I have a system of equations or constraints over multiple variables. Most numerical solvers seem to compute some floating point solution at a fixed precision (float or double). I wonder if there are any approaches where the precision can be chosen, either upfront (user defined) or afterwards, that is, first a solution is given at some precision and then the user can ask for it to be improved (more iterations of whatever numerical solver), until user is happy with the precision. I assume perhaps interval arithmetic would be appropriate for this. Any pointers?
[+] [-] stncls|3 years ago|reply
For example, for linear equality constraints, one general approach is iterative refinement [1]. If you are using floats/doubles and have dense systems, Lapack has implementations at some precision levels [2] (although not necessarily those you want).
For arbitrary precision, maybe look at MPFR matrices in flint [3].
If you have sparse systems using doubles there are papers on iterative refinement in suitesparse, but I don't know if the implementations are public.
If you have sparse inequality constraints, you can try SoPlex [4].
[1] https://en.wikipedia.org/wiki/Iterative_refinement
[2] https://netlib.org/lapack/explore-html/d7/d3b/group__double_...
[3] http://flintlib.org/sphinx/mpfr_mat.html
[4] https://soplex.zib.de/doc-1.7.0/html/IR.html