Skip to content

Commit 6586c92

Browse files
committed
Update ordering of returning nans
1 parent 2644090 commit 6586c92

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

include/boost/decimal/detail/check_non_finite.hpp

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,21 @@ constexpr Decimal check_non_finite(Decimal lhs, Decimal rhs) noexcept
2525

2626
if (isnan(lhs))
2727
{
28-
return issignaling(lhs) ? nan_conversion(lhs) : lhs;
28+
// 3 Cases:
29+
// 1) LHS is QNAN and RHS is SNAN -> Return RHS payload as QNAN
30+
// 2) LHS is SNAN and RHS is QNAN -> Return LHS payload as QNAN
31+
// 3) LHS is NAN and RHS is NAN -> Return LHS payload as QNAN
32+
33+
const bool lhs_signaling {issignaling(lhs)};
34+
const bool rhs_signaling {issignaling(rhs)};
35+
36+
if (!lhs_signaling && rhs_signaling)
37+
{
38+
return nan_conversion(rhs);
39+
}
40+
41+
return lhs_signaling ? nan_conversion(lhs) : lhs;
42+
2943
}
3044
else if (isnan(rhs))
3145
{

0 commit comments

Comments
 (0)