MathLib: Return inf.0 for NAN and INF calculations
This commit is contained in:
parent
f02e885b42
commit
794aebe3cf
|
@ -288,6 +288,8 @@ std::string MathLib::divide(const std::string &first, const std::string &second)
|
|||
if (b == 0)
|
||||
throw InternalError(0, "Internal Error: Division by zero");
|
||||
return longToString(toLongNumber(first) / b);
|
||||
} else if (second == "0.0") {
|
||||
return "inf.0";
|
||||
}
|
||||
return doubleToString(toDoubleNumber(first) / toDoubleNumber(second));
|
||||
}
|
||||
|
|
|
@ -41,6 +41,7 @@ private:
|
|||
TEST_CASE(isNotEqual)
|
||||
TEST_CASE(isLess)
|
||||
TEST_CASE(isLessEqual)
|
||||
TEST_CASE(naninf)
|
||||
}
|
||||
|
||||
void isGreater() const {
|
||||
|
@ -344,6 +345,12 @@ private:
|
|||
ASSERT_EQUALS(true , MathLib::isFloat("1.0E-1"));
|
||||
ASSERT_EQUALS(true , MathLib::isFloat("-1.0E+1"));
|
||||
}
|
||||
|
||||
void naninf() {
|
||||
ASSERT_EQUALS("inf.0", MathLib::divide("0.0", "0.0")); // nan
|
||||
ASSERT_EQUALS("inf.0", MathLib::divide("3.0", "0.0")); // inf
|
||||
ASSERT_EQUALS("inf.0", MathLib::divide("-3.0", "0.0")); // -inf
|
||||
}
|
||||
};
|
||||
|
||||
REGISTER_TEST(TestMathLib)
|
||||
|
|
Loading…
Reference in New Issue