MathLib: Return inf.0 for NAN and INF calculations

This commit is contained in:
Daniel Marjamäki 2013-07-19 09:27:33 +02:00
parent f02e885b42
commit 794aebe3cf
2 changed files with 9 additions and 0 deletions

View File

@ -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));
}

View File

@ -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)