...one of the most highly
regarded and expertly designed C++ library projects in the
world. — Herb Sutter and Andrei
__float128, fixes #178.
constexprarithmetic support for forthcoming MSVC release.
std::numeric_limitson any old type when checking for convertibility. See #98.
mpfr_float. See #113.
expimplementation which could cause invariant failure.
cpp_inta runtime errors. See #58.
long long, or else we're converting to an integer that is wider than we are.
static_cast<unsigned>(~static_cast<unsigned>(0) & my_value). Note that technically (to avoid undefined behaviour) you should do the same thing with fundamental (built-in) integer types too. See #13109.
cpp_bin_floatprevent double rounding when converting to a denormalized float. See #12527.
cpp_bin_floatrounding code to round at arbitrary location so we can use it for conversions, see #12527.
cpp_bin_float. See: #12580.
cpp_int's, see #12627.
ilogb(and code that uses it) to consistently return the smallest value of the exponent type when the argument is zero, see #12625.
cpp_intwhich would result in bit-loss, see #12790.
cpp_int's caused by over-aggressive constexpr optimization, see #12798.
mpfr_float_backendwith fixed allocation.
copysign, mpfr, float128, and cpp_bin_float types should now respect signed-zeros correctly.
cpp_intcode to be used with /RTCc with MSVC.
cpp_intto signed integer when the result is INT_MIN, see #12343.
cpp_intconstructors are available on non-little-endian machines).
a = a * a * a, see #12408.
cpp_bin_float.convert_to<double>()to a function template rather than proceding via
long doubleto avoid double-rounding bug, see #12039.
cpp_intright shift operator when shifting negative values - semantics now gives the same values as shifting 2's compliment integers, though not the same bit pattern.
frexpto always be non-expression template generating, see: 10993.
cpp_intthat results in incorrect sign of
cpp_intwhen both arguments are small enough to fit in a
double_limb_type. See 8126.
cpp_intthat results in incorrect value when the result should have a 0 in the last limb: 8133.
cpp_intwhere division of 0 by something doesn't get zero in the result: 8160.
a = pow(a, b). See 8326.
cpp_intthat gives incorrect answer for 0%N for large N: 8670.
numberto use enumerated values rather than true/false.
cpp_int_backendbased on review comments with new template parameter structure.
mpfr_float_backendto allow stack-based allocation.