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)
|
if (b == 0)
|
||||||
throw InternalError(0, "Internal Error: Division by zero");
|
throw InternalError(0, "Internal Error: Division by zero");
|
||||||
return longToString(toLongNumber(first) / b);
|
return longToString(toLongNumber(first) / b);
|
||||||
|
} else if (second == "0.0") {
|
||||||
|
return "inf.0";
|
||||||
}
|
}
|
||||||
return doubleToString(toDoubleNumber(first) / toDoubleNumber(second));
|
return doubleToString(toDoubleNumber(first) / toDoubleNumber(second));
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,6 +41,7 @@ private:
|
||||||
TEST_CASE(isNotEqual)
|
TEST_CASE(isNotEqual)
|
||||||
TEST_CASE(isLess)
|
TEST_CASE(isLess)
|
||||||
TEST_CASE(isLessEqual)
|
TEST_CASE(isLessEqual)
|
||||||
|
TEST_CASE(naninf)
|
||||||
}
|
}
|
||||||
|
|
||||||
void isGreater() const {
|
void isGreater() const {
|
||||||
|
@ -344,6 +345,12 @@ private:
|
||||||
ASSERT_EQUALS(true , MathLib::isFloat("1.0E-1"));
|
ASSERT_EQUALS(true , MathLib::isFloat("1.0E-1"));
|
||||||
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)
|
REGISTER_TEST(TestMathLib)
|
||||||
|
|
Loading…
Reference in New Issue