|
Boost : |
Subject: Re: [boost] [Review Request] Multiprecision Arithmetic Library
From: Christopher Kormanyos (e_float_at_[hidden])
Date: 2012-04-07 11:49:11
>> 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.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk