Skip to content

Commit 64797e7

Browse files
committed
Reduce d64_fast isnan to a single comparison
1 parent 633b11d commit 64797e7

File tree

1 file changed

+6
-7
lines changed

1 file changed

+6
-7
lines changed

include/boost/decimal/decimal64_fast.hpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ namespace decimal {
3131

3232
namespace detail {
3333

34-
BOOST_DECIMAL_CONSTEXPR_VARIABLE auto d64_fast_inf = std::numeric_limits<std::uint_fast64_t>::max();
35-
BOOST_DECIMAL_CONSTEXPR_VARIABLE auto d64_fast_qnan = std::numeric_limits<std::uint_fast64_t>::max() - 1;
36-
BOOST_DECIMAL_CONSTEXPR_VARIABLE auto d64_fast_snan = std::numeric_limits<std::uint_fast64_t>::max() - 2;
34+
BOOST_DECIMAL_CONSTEXPR_VARIABLE auto d64_fast_inf = std::numeric_limits<std::uint_fast64_t>::max() - 3;
35+
BOOST_DECIMAL_CONSTEXPR_VARIABLE auto d64_fast_qnan = std::numeric_limits<std::uint_fast64_t>::max() - 2;
36+
BOOST_DECIMAL_CONSTEXPR_VARIABLE auto d64_fast_snan = std::numeric_limits<std::uint_fast64_t>::max() - 1;
3737

3838
struct decimal64_fast_components
3939
{
@@ -479,8 +479,7 @@ constexpr auto isinf(decimal64_fast val) noexcept -> bool
479479
constexpr auto isnan(decimal64_fast val) noexcept -> bool
480480
{
481481
#ifndef BOOST_DECIMAL_FAST_MATH
482-
return val.significand_ == detail::d64_fast_qnan ||
483-
val.significand_ == detail::d64_fast_snan;
482+
return val.significand_ >= detail::d64_fast_qnan;
484483
#else
485484
static_cast<void>(val);
486485
return false;
@@ -513,12 +512,12 @@ constexpr auto isnormal(decimal64_fast val) noexcept -> bool
513512

514513
constexpr auto isfinite(decimal64_fast val) noexcept -> bool
515514
{
516-
return val.significand_ < detail::d64_fast_snan;
515+
return val.significand_ < detail::d64_fast_inf;
517516
}
518517

519518
constexpr auto not_finite(decimal64_fast val) noexcept -> bool
520519
{
521-
return val.significand_ >= detail::d64_fast_snan;
520+
return val.significand_ >= detail::d64_fast_inf;
522521
}
523522

524523
constexpr auto operator==(decimal64_fast lhs, decimal64_fast rhs) noexcept -> bool

0 commit comments

Comments
 (0)