Release Notes {#changelog} ============= 1.12.0 release (2017-03-06): ---------------------------- - Changed behaviour of `half_cast` to perform conversions to/from `double` and `long double` directly according to specified rounding mode, without an intermediate `float` conversion. - Added `noexcept` specifiers to constructors. - Fixed minor portability problem with `logb` and `ilogb`. - Tested for *VC++ 2015*. 1.11.0 release (2013-11-16): ---------------------------- - Made tie-breaking behaviour in round to nearest configurable by `HALF_ROUND_TIES_TO_EVEN` macro. - Completed support for all C++11 mathematical functions even if single- precision versions from `` are unsupported. - Fixed inability to disable support for C++11 mathematical functions on *VC++ 2013*. 1.10.0 release (2013-11-09): ---------------------------- - Made default rounding mode configurable by `HALF_ROUND_STYLE` macro. - Added support for non-IEEE single-precision implementations. - Added `HALF_ENABLE_CPP11_TYPE_TRAITS` preprocessor flag for checking support for C++11 type traits and TMP features. - Restricted `half_cast` to support built-in arithmetic types only. - Changed behaviour of `half_cast` to respect rounding mode when casting to/from integer types. 1.9.2 release (2013-11-01): --------------------------- - Tested for *gcc 4.8*. - Tested and fixed for *VC++ 2013*. - Removed unnecessary warnings in *MSVC*. 1.9.1 release (2013-08-08): --------------------------- - Fixed problems with older gcc and MSVC versions. - Small fix to non-C++11 implementations of `remainder` and `remquo`. 1.9.0 release (2013-08-07): --------------------------- - Changed behaviour of `nearbyint`, `rint`, `lrint` and `llrint` to use rounding mode of half-precision implementation (which is truncating/indeterminate) instead of single-precision rounding mode. - Added support for more C++11 mathematical functions even if single- precision versions from `` are unsupported, in particular `remainder`, `remquo` and `cbrt`. - Minor implementation changes. 1.8.1 release (2013-01-22): --------------------------- - Fixed bug resulting in multiple definitions of the `nanh` function due to a missing `inline` specification. 1.8.0 release (2013-01-19): --------------------------- - Added support for more C++11 mathematical functions even if single- precision versions from `` are unsupported, in particular exponential and logarithm functions, hyperbolic area functions and the hypotenuse function. - Made `fma` function use default implementation if single-precision version from `` is not faster and thus `FP_FAST_FMAH` to be defined always. - Fixed overload resolution issues when invoking certain mathematical functions by unqualified calls. 1.7.0 release (2012-10-26): --------------------------- - Added support for C++11 `noexcept` specifiers. - Changed C++11 `long long` to be supported on *VC++ 2003* and up. 1.6.1 release (2012-09-13): --------------------------- - Made `fma` and `fdim` functions available even if corresponding single-precision functions are not. 1.6.0 release (2012-09-12): --------------------------- - Added `HALF_ENABLE_CPP11_LONG_LONG` to control support for `long long` integers and corresponding mathematical functions. - Fixed C++98 compatibility on non-VC compilers. 1.5.1 release (2012-08-17): --------------------------- - Recorrected `std::numeric_limits::round_style` to always return `std::round_indeterminate`, due to overflow-handling deviating from correct round-toward-zero behaviour. 1.5.0 release (2012-08-16): --------------------------- - Added `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. 1.4.0 release (2012-08-12): --------------------------- - Added support for C++11 generalized constant expressions (`constexpr`). 1.3.1 release (2012-08-11): --------------------------- - Fixed requirement for `std::signbit` and `std::isnan` (even if C++11 `` functions disabled) on non-VC compilers. 1.3.0 release (2012-08-10): --------------------------- - Made requirement for `` and `static_assert` optional and thus made the library C++98-compatible. - Made support for C++11 features user-overridable through explicit definition of corresponding preprocessor symbols to either 0 or 1. - Renamed `HALF_ENABLE_HASH` to `HALF_ENABLE_CPP11_HASH` in correspondence with other C++11 preprocessor symbols. 1.2.0 release (2012-08-07): --------------------------- - Added proper preprocessor definitions for `HUGE_VALH` and `FP_FAST_FMAH` in correspondence with their single-precision counterparts from ``. - Fixed internal preprocessor macros to be properly undefined after use. 1.1.2 release (2012-08-07): --------------------------- - Revised `std::numeric_limits::round_style` to return `std::round_toward_zero` if the `float` version also does and `std::round_indeterminate` otherwise. - Fixed `std::numeric_limits::round_error` to reflect worst-case round toward zero behaviour. 1.1.1 release (2012-08-06): --------------------------- - Fixed `std::numeric_limits::min` to return smallest positive normal number, instead of subnormal number. - Fixed `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. 1.1.0 release (2012-08-06): --------------------------- - Added half-precision literals. 1.0.0 release (2012-08-05): --------------------------- - First release.