/mp_cpp

Legacy multiple-precision C++ library with examples

Primary LanguageCBoost Software License 1.0BSL-1.0

mp_cpp

Build Status


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++.

Description

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., $10^{6}$) decimal-digit $\pi$-calculation.

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.

Boost.Multiprecision Backend

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

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.

Licensing

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.