NOTE
mp_cpp
preserves a legacy library. More modern work can be found in the wide-decimal project.
mp_cpp
preserves a legacy Multiple-Precision C++ library.
It is the first successful attempt I had ever made at a multiple-precision,
big-float class in the C++ language.
Initial work began sometime late last century in the early 1990's and wrapped up around 2002.
Continuous maintenance has kept the library up-to-date and compatible with modern C++.
mp_cpp
implements a multiple-precision library with adjustable
precision ranging from hundreds, to thousands, to millions of decimal digits.
The precision can be set during run time, but set once only,
preferably prior to any mp_cpp
-operations are carried out.
The library offers many functions. This project also features tests
and a variety of non-trivial examples, including a somewhat fast
million (i.e.,
mp_cpp
still compiles and runs on modern C++ compilers
from C++11, 14, 17, 20, 23 and beyond.
This original work was subsequently cloned, renamed and adapted to become
e_float
,
which itself ultimately provided some motivation for
Boost.Multiprecision
.
mp_cpp
also features a full backend-wrapper
for use with Boost.Multiprecision
and Boost.Math
.
This ties an old legacy project together with modern
template representations of big-floats and implementations
of mathematical functions.
Continuous integration runs on push using GitHub Actions. Various compilers, operating systems and C++ standards ranging from C++11, 14, 17, 20 are included in CI. Sanitizer runs add improved confidence to the code-integrity.
There is also a scheduled nightly build. This ensures compatibility with modern language evolution and Modular-Boost's Math/Multiprecision develop branches.
The big-number and mathematical-function implementations in mp_cpp
are licensed under BSL.
This work makes additional use of FFTW version 2.15 for fast FFT multiplication, which has its own separate license.