Back to Mathematical functions
// Description: Testing for adjacent floating point numbers
// DocumentationOf: eps.h
#include "test/test_init.h"
#include "pastel/sys/math/eps.h"
namespace
{
template <typename Type>
void testCase()
{
const Type minusZero = (Type)-1 * 0;
REQUIRE(minusZero == 0);
REQUIRE(nextGreater((Type)1) > 1);
REQUIRE(nextSmaller((Type)1) < 1);
REQUIRE(nextGreater((Type)0) > 0);
REQUIRE(nextSmaller((Type)0) < 0);
REQUIRE(nextGreater(minusZero) > 0);
REQUIRE(nextSmaller(minusZero) < 0);
REQUIRE(nextGreater((Type)-1) > -1);
REQUIRE(nextSmaller((Type)-1) < -1);
REQUIRE(nextGreater((Type)Infinity()) == (Type)Infinity());
REQUIRE(nextSmaller((Type)Infinity()) == (Type)Infinity());
REQUIRE(nextGreater(-(Type)Infinity()) == -(Type)Infinity());
REQUIRE(nextSmaller(-(Type)Infinity()) == -(Type)Infinity());
REQUIRE(isNan(nextSmaller((Type)Nan())));
}
}
TEST_CASE("Eps (Eps)")
{
testCase<real64_ieee>();
testCase<real32_ieee>();
}