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) {
8787 return OutFPBits::inf (x_bits.sign ()).get_val ();
8888 }
8989
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+ }
9296
9397 if (x_bits.is_zero ()) {
9498 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 {
4747 EXPECT_FP_EQ (neg_inf, func (in.neg_inf , in.zero ));
4848 EXPECT_FP_EQ (inf, func (in.inf , in.neg_zero ));
4949 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 ));
5054 }
5155
5256 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 {
4747 EXPECT_FP_EQ (neg_inf, func (in.neg_inf , in.zero ));
4848 EXPECT_FP_EQ (inf, func (in.inf , in.neg_zero ));
4949 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 ));
5054 }
5155
5256 void test_invalid_operations (SubFunc func) {
You can’t perform that action at this time.
0 commit comments