Multiprecision for modern C++
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.
This new mp++ release comes with a series of new features:
Additionally, this release comes with the usual assortment of fixes and docs improvements.
The full changelog is available here:
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:
The main additions in this new release are:
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:
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.
The highlights of this release are:
integer
class,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:
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:
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:
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:
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: