Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ckormanyos/mp_cpp
Legacy multiple-precision C++ library with examples
https://github.com/ckormanyos/mp_cpp
Last synced: 24 days ago
JSON representation
Legacy multiple-precision C++ library with examples
- Host: GitHub
- URL: https://github.com/ckormanyos/mp_cpp
- Owner: ckormanyos
- License: bsl-1.0
- Created: 2023-10-30T10:01:33.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-01-15T07:17:31.000Z (10 months ago)
- Last Synced: 2024-04-28T03:19:38.301Z (6 months ago)
- Language: C
- Size: 2.43 MB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
mp_cpp
==================---
**NOTE**`mp_cpp` preserves a _legacy_ library. More modern work can be found in the [wide-decimal](https://github.com/ckormanyos/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`](https://github.com/ckormanyos/e_float-2021),
which itself ultimately provided some motivation for
[`Boost.Multiprecision`](https://www.boost.org/doc/libs/1_83_0/libs/multiprecision/doc/html/index.html).## Boost.Multiprecision Backend
`mp_cpp` also features a full [backend-wrapper](./boost/multiprecision/mp_cpp_backend.hpp)
for use with [`Boost.Multiprecision`](https://www.boost.org/doc/libs/1_83_0/libs/multiprecision/doc/html/index.html)
and [`Boost.Math`](https://www.boost.org/doc/libs/1_83_0/libs/math/doc/html/index.html).
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](https://www.fftw.org/)
version 2.15 for fast FFT multiplication, which has its own separate
[license](https://www.fftw.org/faq/section1.html#isfftwfree).