half
2.2
IEEE 754-based half-precision floating-point library
|
rsqrt
function for inverse square root.pow
function.<immintrin.h>
for F16C intrinsics.pow
and atan2
functions.constexpr
support to comparison and classification functions.half_cast
to perform conversions to/from double
and long double
directly according to specified rounding mode, without an intermediate float
conversion.noexcept
specifiers to constructors.logb
and ilogb
.HALF_ROUND_TIES_TO_EVEN
macro.<cmath>
are unsupported.HALF_ROUND_STYLE
macro.HALF_ENABLE_CPP11_TYPE_TRAITS
preprocessor flag for checking support for C++11 type traits and TMP features.half_cast
to support built-in arithmetic types only.half_cast
to respect rounding mode when casting to/from integer types.remainder
and remquo
.nearbyint
, rint
, lrint
and llrint
to use rounding mode of half-precision implementation (which is truncating/indeterminate) instead of single-precision rounding mode.<cmath>
are unsupported, in particular remainder
, remquo
and cbrt
.nanh
function due to a missing inline
specification.<cmath>
are unsupported, in particular exponential and logarithm functions, hyperbolic area functions and the hypotenuse function.fma
function use default implementation if single-precision version from <cmath>
is not faster and thus FP_FAST_FMAH
to be defined always.noexcept
specifiers.long long
to be supported on VC++ 2003 and up.fma
and fdim
functions available even if corresponding single-precision functions are not.HALF_ENABLE_CPP11_LONG_LONG
to control support for long long
integers and corresponding mathematical functions.std::numeric_limits::round_style
to always return std::round_indeterminate
, due to overflow-handling deviating from correct round-toward-zero behaviour.half_cast
for explicitly casting between half and any type convertible to/from float
and allowing the explicit specification of the rounding mode to use.constexpr
).std::signbit
and std::isnan
(even if C++11 <cmath>
functions disabled) on non-VC compilers.<cstdint>
and static_assert
optional and thus made the library C++98-compatible.HALF_ENABLE_HASH
to HALF_ENABLE_CPP11_HASH
in correspondence with other C++11 preprocessor symbols.HUGE_VALH
and FP_FAST_FMAH
in correspondence with their single-precision counterparts from <cmath>
.std::numeric_limits::round_style
to return std::round_toward_zero
if the float
version also does and std::round_indeterminate
otherwise.std::numeric_limits::round_error
to reflect worst-case round toward zero behaviour.std::numeric_limits::min
to return smallest positive normal number, instead of subnormal number.std::numeric_limits::round_style
to return std::round_indeterminate
due to mixture of separately rounded single-precision arithmetics with truncating single-to-half conversions.