@@ -31,9 +31,9 @@ namespace decimal {
3131
3232namespace 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
3838struct decimal64_fast_components
3939{
@@ -479,8 +479,7 @@ constexpr auto isinf(decimal64_fast val) noexcept -> bool
479479constexpr 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
514513constexpr 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
519518constexpr 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
524523constexpr auto operator ==(decimal64_fast lhs, decimal64_fast rhs) noexcept -> bool
0 commit comments