| Home | Libraries | People | FAQ | More

### History

##### 1.54

- Breaking change renamed `rational_adapter` to `rational_adaptor`.
- Add support for MPFI.
- Add logged_adaptor.
- Add support for 128-bit floats via GCC's `__float128` or Intel's `_Quad` data types.
- Add support for user-defined literals in cpp_int, improve `constexpr` support.
- Fixed bug in integer division of `cpp_int` that results in incorrect sign of `cpp_int` when both arguments are small enough to fit in a `double_limb_type`. See 8126.
- Fixed bug in subtraction of a single limb in `cpp_int` that results in incorrect value when the result should have a 0 in the last limb: 8133.
- Fixed bug in `cpp_int` where division of 0 by something doesn't get zero in the result: 8160.
- Fixed bug in some transcendental functions that caused incorrect return values when variables are reused, for example with `a = pow(a, b)`. See 8326.
- Fixed some assignment operations in the mpfr and gmp backends to be safe if the target has been moved from: 8667.
- Fixed bug in `cpp_int` that gives incorrect answer for 0%N for large N: 8670.
- Fixed set_precision in mpfr backend so it doesn't trample over an existing value: 8692.

##### 1.53

- First Release.
- Fix bug in cpp_int division.
- Fix issue #7806.

##### Post review changes

- Non-expression template operators further optimised with rvalue reference support.
- Many functions made `constexp`.
- Differentiate between explicit and implicit conversions in the number constructor.
- Removed "mp_" prefix from types.
- Allowed mixed precision arithmetic.
- Changed ExpressionTemplates parameter to class `number` to use enumerated values rather than true/false.
- Changed ExpressionTemplate parameter default value to use a traits class so that the default value depends on the backend used.
- Added support for fused-multiply-add/subtract with GMP support.
- Tweaked expression template unpacking to use fewer temporaries when the LHS also appears in the RHS.
- Refactored `cpp_int_backend` based on review comments with new template parameter structure.
- Added additional template parameter to `mpfr_float_backend` to allow stack-based allocation.
- Added section on mixed precision arithmetic, and added support for operations yielding a higher precision result than either of the arguments.
- Added overloads of integer-specific functions for built in integer types.

##### Pre-review history

- 2011-2012, John Maddock adds an expression template enabled front end to Christopher's code, and adds support for other backends.
- 2011, Christopher Kormanyos publishes the decimal floating point code under the Boost Software Licence. The code is published as: "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011.
- 2002-2011, Christopher Kormanyos develops the all C++ decimal arithmetic floating point code.