-
Added support for hashing via
Boost.Hash
or std::hash
.
-
Fixed some arithmetic operations in cpp_bin_float and cpp_dec_float that
should generate a NaN, see #12157.
-
Prevent inadvertant instantiation of variable-precision
mpfr_float_backend
with fixed allocation.
-
Fixed division over/underflow in cpp_bin_float, see #12167.
-
Added support for signed-zeros throughout the library, including support
for
signbit
and copysign
, mpfr, float128, and cpp_bin_float
types should now respect signed-zeros correctly.
-
Fixed bug in conversion of cpp_bin_float infinities to double etc, see
#12196.
-
Fix add and subtract of cpp_bin_float when the exponents would overflow.,
see #12198.
-
Improve variable-precision support in mpfr and mpf backends, allow these
types to be used with Boost.Math.
-
Fixed bug in subtraction of signed infinities in cpp_bin_float, see
#12209.
-
Fix result of sqrt(infinity) in cpp_bin_float (result should be infinity),
see #12227.
-
Added workaround in gmp.hpp for recent MPIR releases which are not quite
source-compatible with GMP on Windows x64.
-
Allow
cpp_int
code to
be used with /RTCc with MSVC.
-
Fix conversion of
cpp_int
to signed integer when the result is INT_MIN, see #12343.
-
Update uBlas support to match latest uBlas code.
-
Fix some errors present when building on big-endian machines (not all
cpp_int
constructors
are available on non-little-endian machines).
-
Fix fencepost error in rational to float conversion routines, see #12327.
-
Fix some Oracle C++ compiler compatibility issues.
-
Add modf support to complete C90 compatibility.
-
Fix self assignment bug in expression template code for expressions such
as
a =
a *
a *
a
, see #12408.
-
Fixed some compiler errors that occur when converting from
cpp_int
to cpp_bin_float
.
-
Fixed bug in stream input for integer types, see #11857.
-
Fixed some ambiguous conversions involving expression templates see
#11922.
-
Add expression template aware min/max overloads see #11149.
-
Fix bug in right shifting negative small integers in cpp_int see #11999.
-
Use memmove for bitshifts in cpp_int when possible see #9233.
-
Use memcpy for data import into cpp_int where possible, see #9235.
-
Changed
cpp_bin_float.convert_to<double>()
to a function template rather than
proceding via long double
to avoid double-rounding bug, see #12039.
-
Fixed conversions from NaN's and Infinities, see #12112.
-
Enabled better support for Clang on Windows.
-
Fixed handling of NaN's and Infinities in basic arithmetic for cpp_dec_float
and cpp_bin_float, see #12090.
-
Fixed fencepost error in cpp_bin_float subtraction.
-
Fixed double-rounding in conversion to float routines for cpp_bin_float,
see #12039.
-
Make float128 denorm aware, see #12075.
-
Allow the library and tests to be used without exception handling support,
see #12070.
-
Fixed buggy comparison operator overloads for boost::rational.
-
Added some workarounds for Oracle C++.
-
Fixed some missing typecasts for cases where cpp_int's limb_type is wider
than unsigned.
-
Fixed result of Miller Rabin primality test for value 2, see #11495.
-
Improved initialization of cpp_int from very large strings of hex or
octal digits, see #11590.
-
Fixed fmod behaviour for negative divisors, see #11641.
-
Fixed infinite division loop in cpp_int special case, see #11648.
-
Patched missing return statement in #11762.
-
Fixed mixed mode arithmetic compiler error in #11764.
-
Fixed over-aggressive use of noexcept in #11826.
-
Depricated boost/multiprecision/random.hpp as it's no longer needed,
updated random examples to match.
-
Fixed a bug in cpp_int's right shift operator when shifting negative
values - semantics now gives the same values as shifting 2's compliment
integers, though not the same bit pattern.
-
Fixed support for GCC-4.6.4 in C++0x mode by disabling conditional noexcept
suppoprt for that compiler see #11402.
-
Suppressed numerous compiler warnings.
-
Changed
frexp
to always
be non-expression template generating, see: 10993.
-
Improved support of cpp_dec_float on Cygwin and other platforms with
missing long double support, see 10924.
-
Improved noexcept support and added some more tests, see 10990.
-
Various workarounds applied for Intel-15.0 and Solaris-12.4 compilers.
-
Changed rational to float conversions to exactly round to nearest, see
10085.
-
Added improved generic float to rational conversions.
-
Fixed rare bug in exponent function for cpp_bin_float.
-
Fixed various minor documentation issues.
-
Change floating-point to rational conversions to be implicit, see 10082.
-
Fix definition of checked_cpp_rational typedef.
-
Fix bug in assignment from string in cpp_int, see 9936.
-
Moved to Boost.Multiprecision specific version number - we have one breaking
change in Boost-1.54 which makes this major version 2, plus two releases
with new features since then.
-
Added new cpp_bin_float
backend for binary floating-point.
-
Added MSVC-specific #include for compiler intrinsics, see 9336.
-
Fixed various typos in docs, see 9432.
-
Fixed gmp_rational
to allow move-copy from an already copied-from object, see 9497.
-
Added list of values for numeric_limits.
-
Added support for Boost.Serialization.
-
Suppressed some GCC warnings. See 8872.
-
Fixed bug in pow for large integer arguments. See 8809.
-
Fixed bug in pow for calculation of 0N. See 8798.
-
Fixed bug in fixed precision cpp_int IO code that causes conversion to
string to fail when the bit count is very small (less than CHAR_BIT).
See 8745.
-
Fixed bug in cpp_int that causes left shift to fail when a fixed precision
type would overflow. See 8741.
-
Fixed some cosmetic warnings from cpp_int. See 8748.
-
Fixed calls to functions which are required to be macros in C99. See
8732.
-
Fixed bug that causes construction from INT_MIN, LONG_MIN etc to fail
in cpp_int. See 8711.
-
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.
-
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.
-
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.