...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
import_bits
when just
importing the leading few bits of the value, see 488.
0
rather than nullptr
.
boost/cstdfloat.hpp
and this library.
constexpr
integer square
root where the input is 1, 2 or 3.
#include
of <memory>
to float128.hpp.
number
to prevent ambiguity in some cases.
std::ios_base::fixed
is in effect and the precision is zero.
float128_type
typedef
throughout to suppress GCC/clang warnings about using a non-standard
extension.
signbit
to match
std::signbit
and to return the correct sign
when the result is zero, #426.
__int128
and __float128
everywhere,
not just on an add-hock basis, #237.
std::size_t
or std::ptrdiff_t
, #362.
is_byte_container
to correctly handle Eigen types, #398.
to_string
free function.
long
long
and __int128
.
log1p
corner case.
long double
and __float128
, fixes
#178.
constexpr
arithmetic
support for forthcoming MSVC release.
std::numeric_limits
on any old type when checking for convertibility. See #98.
mpf_float
and mpfr_float
. See
#113.
exp
implementation which could cause invariant failure.
final
in cpp_int.
std::string_view
.
cpp_int
a runtime errors. See #58.
cpp_bin_float_oct
and cpp_complex_oct
.
long long
,
or else we're converting to an integer that is wider than we are.
std::byte
.
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_float
prevent
double rounding when converting to a denormalized float. See #12527.
cpp_bin_float
.
cpp_bin_float
rounding 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.
float128
to cpp_bin_float
.
cpp_int
which would result in bit-loss, see #12790.
cpp_int
's
caused by over-aggressive constexpr optimization, see #12798.
Boost.Hash
or std::hash
.
mpfr_float_backend
with fixed allocation.
signbit
and copysign
, mpfr, float128, and cpp_bin_float
types should now respect signed-zeros correctly.
cpp_int
code to
be used with /RTCc with MSVC.
cpp_int
to signed integer when the result is INT_MIN, see #12343.
cpp_int
constructors
are available on non-little-endian machines).
a =
a *
a *
a
, see #12408.
cpp_int
to cpp_bin_float
.
cpp_bin_float.convert_to<double>()
to a function template rather than
proceding via long double
to avoid double-rounding bug, see #12039.
cpp_int
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.
frexp
to always
be non-expression template generating, see: 10993.
rational_adapter
to rational_adaptor
.
__float128
or Intel's _Quad
data
types.
constexpr
support.
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.
cpp_int
that results in incorrect value when the result should have a 0 in the
last limb: 8133.
cpp_int
where division of 0 by something doesn't get zero in the result: 8160.
a
= pow(a, b)
. See 8326.
cpp_int
that gives incorrect answer for 0%N for large N: 8670.
constexp
.
number
to use enumerated values rather than true/false.
cpp_int_backend
based on review comments with new template parameter structure.
mpfr_float_backend
to allow stack-based allocation.