I just tagged v0.1.0 of MultiPrecisionArrays.jl.
This package provides data structures and solvers for several variants of iterative refinement (IR) for solving linear systems A x= b.
IR reduces matrix factorization costs by factoring a copy of A in a low precision and then using that copy in a residual correction iteration.
Hence, IR is time-for-storage tradeoff. The factorization cost is reduced but you must store a low precision copy of A. MultiPrecisionArrays.jl manages that for you. To solve the system you do
AF = mplu(A)
x = AF\b
The multiprecision factorization mplu
makes the low precision copy,
factors it, and preallocates the data the residual correction iteration needs. The solver performs the iteration and I’ve overloaded \
to do that.
The package supports Krylov-IR methods as well as the classic IR iteration.
The README file and the docs on the repo explain how it all works.