
My basic operations (add, sub, mul, div) are on-par or faster
for a variety of reasons. For example, I don't allocate---just use std::array "on the stack".
That's great that they are faster, but what are the precision warranties for the following operations: add, sub, mul, div, sqrt? Andrii
Andrii, In our work, we support three floating point back-ends: * boost::multiprecision::cpp_dec_float<unsigned Digits10> * boost::multiprecision::gmp_float_backend<unsigned Digits10> * boost::multiprecision::mpfr_float_backend<unsigned Digits10>The cpp_dec_float back-end is entirely under BPL, whereas the other two are restricted with GPL. The floating-point infrastructure also supports *any* floating-point back-end, provided this adheres to the requirements of the interface. Each of our back-ends is designed to maintain precision for add, sub, mul, div, sqrt. After all, these are precision-maintaining algorithms. If, however, you compute a divergent series or, maybe, a numerical derivative in your own development, then you might lose precision if the algorithm is ill-conditioned. This is just like with ordinary float, double, etc. Actually, I am re-benchmarking this stuff. I would say the speeds of all supported back-ends are comparable from 30-75 decimal digits on a 64-bit machine, whereas above 100 decimal digits, the GNU-based back-ends are faster. So I had better be more precise with performance comments in the future. John has provided benchmark results in his documentation. Best regards, Chris.