mppp

Multiprecision for modern C++

MPL-2.0 License

Stars
285
Committers
5
mppp - mp++ 1.0.3 Latest Release

Published by bluescarni 3 months ago

This is a bugfix release correcting a few compilation/build warnings and fixing compilation against the recently-released fmt 11.

As usual, the full changelog is available here:

https://bluescarni.github.io/mppp/changelog.html

mppp - mp++ 1.0.2

Published by bluescarni 10 months ago

A very quick release that fixes the CMakeLists.txt file having the wrong version number.

mppp - mp++ 1.0.1

Published by bluescarni 11 months ago

This is a small release that fixes a couple of issues with the support for the fmt library.

As usual, the full changelog is available here:

https://bluescarni.github.io/mppp/changelog.html

mppp - mp++ 1.0.0

Published by bluescarni 11 months ago

NOTE: with release 1.0.0, mp++ transitions to a semantic versioning numbering scheme.

This is a maintenance release that features a few bugfixes and introduces ABI versioning. There are no API changes with respect to the previous release (0.27).

As usual, the full changelog is available here:

https://bluescarni.github.io/mppp/changelog.html

mppp - mp++ 0.27

Published by bluescarni about 2 years ago

This new mp++ release contains several new features for the real class, performance improvements for signed multiprecision integers, and a couple of build fixes.

Additionally, mp++ now has optional support for formatting via the fmt library:

https://github.com/fmtlib/fmt

The full changelog, as usual, is available here:

https://bluescarni.github.io/mppp/changelog.html

mppp - mp++ 0.26

Published by bluescarni about 3 years ago

This is a quick release that fixes support for quadruple-precision floating-point types on PPC64. There are no other changes with respect to mp++ 0.25.

The full changelog, as usual, is available here:

https://bluescarni.github.io/mppp/changelog.html

mppp - mp++ 0.25

Published by bluescarni about 3 years ago

This is an incremental bugfix release that fixes a build issue on some platforms (e.g., FreeBSD) originating from calling GMP/MPFR/MPC macros with a leading ::. A small feature addition for the real class and a new interactive notebook are included as well.

As usual, the full changelog is available here:

https://bluescarni.github.io/mppp/changelog.html

mppp - mp++ 0.24

Published by bluescarni over 3 years ago

The main addition in this new mp++ release is support for output stream format flags for all the floating-point classes (both real-valued and complex-valued):

#include <iomanip>
#include <ios>

std::cout << std::scientific << std::setprecision(6) << real{1 / 3.} << '\n'; // "3.333333e-01"
std::cout << std::hexfloat << std::uppercase << complex{1.1, 1.3} << '\n';    // "(0X1.199999999999AP+0,0X1.4CCCCCCCCCCCDP+0)"
std::cout << std::fixed << std::showpoint << std::showpos << 42_rq << '\n';   // "+42.000000"

Additionally, the Lambert functions and the polylogarithms are now available for the real class.

Another important addition is that mp++'s conda packages are now available for the ARM64 and PPC64 architectures.

The full changelog, as usual, is available here:

https://bluescarni.github.io/mppp/changelog.html

mppp - mp++ 0.23

Published by bluescarni over 3 years ago

This is a minor release that features an important API change: several generic constructors of the multiprecision classes are not marked explicit any more. This change improves the library's ergonomics and interoperability with other generic C++ libraries.

Another small addition is a new fabs() overload for real128, equivalent to the existing abs() functions for the computation of the absolute value.

The full changelog, as usual, is available here:

https://bluescarni.github.io/mppp/changelog.html

mppp - mp++ 0.22

Published by bluescarni almost 4 years ago

This new version of mp++ adds a binary serialization API for the real class, and enables (optional) Boost.serialization support for all multiprecision classes. The new release also features various build system enhancements/fixes and a new theme for the online documentation.

The full changelog, as usual, is available here:

https://bluescarni.github.io/mppp/changelog.html

mppp - mp++ 0.21

Published by bluescarni over 4 years ago

This new release of mp++ greatly enhances the capabilities of the real128 and real classes. In particular, all functions from the quadmath library are now exposed in the real128 API, and most MPFR functions are now exposed in the real API.

This release also contains new features for the complex and integer classes, and a bugfix in a couple of real functions which were returning incorrect values at the poles.

The benchmark code has been overhauled, and the documentation has been updated with new benchmark results.

The full changelog, as usual, is available here:

https://bluescarni.github.io/mppp/changelog.html

mppp - mp++ 0.20

Published by bluescarni over 4 years ago

This is by far the largest mp++ release yet, featuring substantial new features, many improvements and a few breaking changes.

The biggest new feature is the addition of the complex128 and complex floating-point classes, which brings to completion the long-running effort of adding complex floating-point capabilities to the library. complex128 is a wrapper around the quadruple-precision __complex128 type available in GCC/Clang, while complex is a wrapper around the mpc_t type from the GNU MPC library.

The work on the complex class resulted in various tweaks to the real class, some of which break backwards compatibility. In particular, the global precision setting mechanism in real has been removed. Additionally, the way in which real interacts with primitive C++ types in mixed-mode operations has been improved to be more rigorous and better performing. The real class also received various new features, including additional special functions, setters and comparison operators.

real128 also received various fixes and improvements. In particular, its compatibility with the Clang compiler has been improved and its implementation has benefited from various substantial simplifications.

For consistency with C++20, all of mp++'s concepts have been renamed to snake_case notation, and the concept hierarchy has been streamlined and simplified. Support for C++20's constinit feature has also been added to the library. More C++20 features will be added in upcoming versions.

On the software engineering side, mp++ now officially supports the ARM (aarch64) and PowerPC (ppc64le) architectures, which have been added to the continuous integration setup. mp++ now also supports the Intel compiler ICC (although due to licensing issues, ICC is not part of the continuous integration setup and it is only occasionally tested). An option to build the library with inter-procedural optimisations has been added. mp++ now builds cleanly with clang-tidy, and a build with Clang's memory sanitizer (msan) has been added to the CI pipeline.

Finally, the use of Doxygen has been fully phased out and the documentation is now written exclusively in Sphinx.

The full changelog, as usual, is available here:

https://bluescarni.github.io/mppp/changelog.html

NOTE: the basic feature set of mp++ is now essentially complete. The focus is now on finishing up a few missing functionalities and adding tutorial-style documentation. Once this is done, the 1.0 version of the library will be released.

mppp - mp++ 0.19

Published by bluescarni over 4 years ago

This new mp++ release comes with a series of new features:

  • mp++ now optionally depends on Arb to provide additional special functions for the real class. A few new special functions have already been implemented in this version, more will come in future mp++ releases;
  • the integer and rational classes can now interact with C++'s complex floating point classes. This is the first step on the road that will eventually bring full support for multiprecision complex capabilities in mp++;
  • user-defined literals for the rational, real and real128 classes;
  • a few additional capabilities for the real class;
  • all mp++ classes now support pretty printing in the xeus-cling notebook.

Additionally, this release comes with the usual assortment of fixes and docs improvements.

The full changelog is available here:

https://bluescarni.github.io/mppp/changelog.html

mppp - mp++ 0.18

Published by bluescarni over 4 years ago

This new release contains a handful of new features and various improvements to the build system. In particular, mp++ now does not include any more the quadmath.h header in its public API. This change greatly improves mp++’s compatibility with clang when the MPPP_WITH_QUADMATH option is active.

As usual, the full changelog is available here:

https://bluescarni.github.io/mppp/changelog.html

mppp - mp++ 0.17

Published by bluescarni about 5 years ago

The main additions in this new release are:

  • many new special functions for mppp::real,
  • mp++'s concepts are now compatible with the C++20 version of the concepts proposal. In particular, the latest development snapshots of MSVC can now use the conceptified codepaths in mp++.

Additionally, there are a few fixes (involving mostly MSVC and GCC9) and a substantial improvement in the compile-time requirements of the test suite.

The full changelog, as usual, is available here:

https://bluescarni.github.io/mppp/changelog.html

mppp - mp++ 0.16

Published by bluescarni over 5 years ago

This is a quick release which fixes an issue in the versioning of the mp++ shared library. No code changes have been made since 0.15.

mppp - mp++ 0.15

Published by bluescarni over 5 years ago

The highlights of this release are:

  • the ability to build mp++ as a static library,
  • performance improvements for the integer class,
  • new features in the real class (i.e., more special functions from MPFR have been wrapped).

As usual, there are a few build system fixes (this time involving mostly Windows/MSVC/clang-cl) and doc improvements.

The full changelog is available at the usual place:

https://bluescarni.github.io/mppp/changelog.html

mppp - mp++ 0.14

Published by bluescarni over 5 years ago

NOTE: this release introduces an important change: mp++ now has a compiled component, libmp++, and thus it is not enough any more to include the headers in order to use mp++ - you must now also link to the mp++ compiled library.

The most prominent new feature is that the integer and rational classes now recognize and honour the format flags in output streams. Work is ongoing to extend output stream format flags support to the floating-point classes.

@7ofNine has contributed various improvements to the benchmarks and MSVC build fixes.

mp++ also does not depend any more on the DbgHelp library on Windows.

Various doc and build system fixes are included as well.

The full changelog, as usual, is available here:

https://bluescarni.github.io/mppp/changelog.html

mppp - mp++ 0.13

Published by bluescarni over 5 years ago

This is a minor release which features a few build system/compilation fixes and a few documentation fixes/additions.

The full changelog is available at the usual page:

https://bluescarni.github.io/mppp/changelog.html

mppp - mp++ 0.12

Published by bluescarni about 6 years ago

This release contains various new features for the integer, real and real128 classes, and various performance optimisations for the integer class. As usual, a variety of documentation and build system fixes are included as well.

The full changelog is available at the usual page:

https://bluescarni.github.io/mppp/changelog.html

Badges
Extracted from project README
Build Status Build Status Code Coverage Join the chat at https://gitter.im/bluescarni/mppp Anaconda-Server Badge