Mppp Versions Save

Multiprecision for modern C++

v0.20

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

v0.19

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

v0.18

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

v0.17

4 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

v0.16

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

v0.15

4 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

v0.14

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

v0.13

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

v0.12

5 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

v0.11

5 years ago

This release is focused on the real128 class: more functions were wrapped from the quadmath API, and a couple of issues in the real128 class itself were fixed.

As usual, the full changelog is available here:

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