Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bluescarni/mppp
Multiprecision for modern C++
https://github.com/bluescarni/mppp
c-plus-plus c-plus-plus-11 c-plus-plus-14 c-plus-plus-17 c-plus-plus-20 computer-algebra gmp math math-bignum mpfr multiprecision
Last synced: 6 days ago
JSON representation
Multiprecision for modern C++
- Host: GitHub
- URL: https://github.com/bluescarni/mppp
- Owner: bluescarni
- License: mpl-2.0
- Created: 2016-08-24T22:37:05.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2024-10-10T07:16:11.000Z (3 months ago)
- Last Synced: 2024-10-10T23:49:54.215Z (3 months ago)
- Topics: c-plus-plus, c-plus-plus-11, c-plus-plus-14, c-plus-plus-17, c-plus-plus-20, computer-algebra, gmp, math, math-bignum, mpfr, multiprecision
- Language: C++
- Homepage:
- Size: 47.4 MB
- Stars: 298
- Watchers: 20
- Forks: 25
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
- AwesomeCppGameDev - mppp
README
# mp++
[![Build Status](https://img.shields.io/circleci/project/github/bluescarni/mppp/master.svg?style=for-the-badge)](https://circleci.com/gh/bluescarni/mppp)
[![Build Status](https://img.shields.io/github/actions/workflow/status/bluescarni/mppp/gh_actions_ci.yml?branch=master&style=for-the-badge)](https://github.com/bluescarni/mppp/actions?query=workflow%3A%22GitHub+CI%22)
![language](https://img.shields.io/badge/language-C%2B%2B11-red.svg?style=for-the-badge)
![language](https://img.shields.io/badge/language-C%2B%2B17-red.svg?style=for-the-badge)
![language](https://img.shields.io/badge/language-C%2B%2B20-red.svg?style=for-the-badge)
[![Code Coverage](https://img.shields.io/codecov/c/github/bluescarni/mppp.svg?style=for-the-badge)](https://codecov.io/github/bluescarni/mppp?branch=master)
[![Join the chat at https://gitter.im/bluescarni/mppp](https://img.shields.io/badge/gitter-join--chat-green.svg?logo=gitter-white&style=for-the-badge)](https://gitter.im/bluescarni/mppp?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Anaconda-Server Badge](https://img.shields.io/conda/vn/conda-forge/mppp.svg?style=for-the-badge)](https://anaconda.org/conda-forge/mppp)
Multiprecision for C++
Explore the docs »
Report bug
·
Request feature
·
Discuss
mp++ is a C++11/14/17/20 library for multiprecision arithmetic,
featuring:* arbitrary-precision integers,
* arbitrary-precision rationals,
* quadruple-precision floats,
* quadruple-precision complex numbers,
* arbitrary-precision floats,
* arbitrary-precision complex numbers.Design goals include:
* excellent performance for small integer and rational
operands,
* easy embeddability in computer algebra systems and
generic C++ libraries,
* a large collection of arbitrary-precision special functions,
* an ergonomic API based on modern C++ idioms.Design non-goals include:
* support for fixed-size wide integrals (i.e., no ``uint512_t``,
try [Boost Multiprecision](https://www.boost.org/doc/libs/1_72_0/libs/multiprecision/doc/html/index.html)
instead).Built on top of the GNU multiprecision stack ([GMP](https://gmplib.org/),
[MPFR](https://www.mpfr.org), [MPC](http://www.multiprecision.org/mpc/)),
mp++ was initially conceived as a GMP wrapper with special focus on performance with
small operands. In particular, a small buffer optimisation and custom implementations of basic mathematical primitives are
instrumental in achieving a performance increase, with respect to GMP and other integer multiprecision libraries, which can be
substantial (see the [benchmarks](https://bluescarni.github.io/mppp/benchmarks.html) section of the documentation).Over time, mp++ has accrued many additional features, including
multiprecision real and complex number types, and an expanding
library of special functions (built in part on top of the excellent
[Arb](https://arblib.org/) library).mp++ is a spinoff of the [Piranha](https://github.com/bluescarni/piranha) library, released under the
[MPL2](https://www.mozilla.org/en-US/MPL/2.0/FAQ/) license.
If you are using mp++ as part of your research, teaching, or other activities, we would be grateful if you could star
the repository and/or cite our work. The DOI of the latest version and other citation resources are available
at [this link](https://doi.org/10.5281/zenodo.1043579).The documentation is available [here](https://bluescarni.github.io/mppp/).