Skip to content

Commit

Permalink
APFloat: Add isPosInfinity and isNegInfinity helpers
Browse files Browse the repository at this point in the history
  • Loading branch information
arsenm committed Dec 13, 2022
1 parent 4177e6c commit ded1630
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 1 deletion.
2 changes: 2 additions & 0 deletions llvm/include/llvm/ADT/APFloat.h
Expand Up @@ -1240,6 +1240,8 @@ class APFloat : public APFloatBase {
bool isFiniteNonZero() const { return isFinite() && !isZero(); }
bool isPosZero() const { return isZero() && !isNegative(); }
bool isNegZero() const { return isZero() && isNegative(); }
bool isPosInfinity() const { return isInfinity() && !isNegative(); }
bool isNegInfinity() const { return isInfinity() && isNegative(); }
bool isSmallest() const { APFLOAT_DISPATCH_ON_SEMANTICS(isSmallest()); }
bool isLargest() const { APFLOAT_DISPATCH_ON_SEMANTICS(isLargest()); }
bool isInteger() const { APFLOAT_DISPATCH_ON_SEMANTICS(isInteger()); }
Expand Down
12 changes: 11 additions & 1 deletion llvm/unittests/ADT/APFloatTest.cpp
Expand Up @@ -1995,7 +1995,17 @@ TEST(APFloatTest, isFinite) {
TEST(APFloatTest, isInfinity) {
APFloat t(APFloat::IEEEsingle(), "0x1p+0");
EXPECT_FALSE(t.isInfinity());
EXPECT_TRUE(APFloat::getInf(APFloat::IEEEsingle(), false).isInfinity());

APFloat PosInf = APFloat::getInf(APFloat::IEEEsingle(), false);
APFloat NegInf = APFloat::getInf(APFloat::IEEEsingle(), true);

EXPECT_TRUE(PosInf.isInfinity());
EXPECT_TRUE(PosInf.isPosInfinity());
EXPECT_FALSE(PosInf.isNegInfinity());
EXPECT_TRUE(NegInf.isInfinity());
EXPECT_FALSE(NegInf.isPosInfinity());
EXPECT_TRUE(NegInf.isNegInfinity());

EXPECT_FALSE(APFloat::getZero(APFloat::IEEEsingle(), false).isInfinity());
EXPECT_FALSE(APFloat::getNaN(APFloat::IEEEsingle(), false).isInfinity());
EXPECT_FALSE(APFloat::getSNaN(APFloat::IEEEsingle(), false).isInfinity());
Expand Down

0 comments on commit ded1630

Please sign in to comment.