File tree Expand file tree Collapse file tree 3 files changed +14
-2
lines changed
src/__support/FPUtil/generic Expand file tree Collapse file tree 3 files changed +14
-2
lines changed Original file line number Diff line number Diff line change @@ -87,8 +87,12 @@ add_or_sub(InType x, InType y) {
87
87
return OutFPBits::inf (x_bits.sign ()).get_val ();
88
88
}
89
89
90
- if (y_bits.is_inf ())
91
- return OutFPBits::inf (y_bits.sign ()).get_val ();
90
+ if (y_bits.is_inf ()) {
91
+ if constexpr (IsSub)
92
+ return OutFPBits::inf (y_bits.sign ().negate ()).get_val ();
93
+ else
94
+ return OutFPBits::inf (y_bits.sign ()).get_val ();
95
+ }
92
96
93
97
if (x_bits.is_zero ()) {
94
98
if (y_bits.is_zero ()) {
Original file line number Diff line number Diff line change @@ -47,6 +47,10 @@ class AddTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
47
47
EXPECT_FP_EQ (neg_inf, func (in.neg_inf , in.zero ));
48
48
EXPECT_FP_EQ (inf, func (in.inf , in.neg_zero ));
49
49
EXPECT_FP_EQ (neg_inf, func (in.neg_inf , in.neg_zero ));
50
+ EXPECT_FP_EQ (inf, func (in.zero , in.inf ));
51
+ EXPECT_FP_EQ (inf, func (in.neg_zero , in.inf ));
52
+ EXPECT_FP_EQ (neg_inf, func (in.zero , in.neg_inf ));
53
+ EXPECT_FP_EQ (neg_inf, func (in.neg_zero , in.neg_inf ));
50
54
}
51
55
52
56
void test_invalid_operations (AddFunc func) {
Original file line number Diff line number Diff line change @@ -47,6 +47,10 @@ class SubTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
47
47
EXPECT_FP_EQ (neg_inf, func (in.neg_inf , in.zero ));
48
48
EXPECT_FP_EQ (inf, func (in.inf , in.neg_zero ));
49
49
EXPECT_FP_EQ (neg_inf, func (in.neg_inf , in.neg_zero ));
50
+ EXPECT_FP_EQ (neg_inf, func (in.zero , in.inf ));
51
+ EXPECT_FP_EQ (neg_inf, func (in.neg_zero , in.inf ));
52
+ EXPECT_FP_EQ (inf, func (in.zero , in.neg_inf ));
53
+ EXPECT_FP_EQ (inf, func (in.neg_zero , in.neg_inf ));
50
54
}
51
55
52
56
void test_invalid_operations (SubFunc func) {
You can’t perform that action at this time.
0 commit comments