Skip to content
Snippets Groups Projects
Commit 788d9a3d authored by Sam Yates's avatar Sam Yates Committed by Ben Cumming
Browse files

Bugfix for issue #166: backwards `math::signum`. (#180)

Fixes #166

Debackwardsate math::signum().
Unit tests in test_math.cpp for same.
parent e9b6fc1c
No related branches found
No related tags found
No related merge requests found
......@@ -78,7 +78,7 @@ T constexpr lerp(T a, T b, U u) {
// Return -1, 0 or 1 according to sign of parameter.
template <typename T>
int signum(T x) {
return (x<T(0)) - (x>T(0));
return (x>T(0)) - (x<T(0));
}
// Quaternion implementation.
......
......@@ -112,6 +112,35 @@ TEST(math, infinity) {
EXPECT_EQ(std::numeric_limits<long double>::infinity(), check.ld);
}
TEST(math, signum) {
EXPECT_EQ(1, signum(1));
EXPECT_EQ(1, signum(2));
EXPECT_EQ(1, signum(3.f));
EXPECT_EQ(1, signum(4.));
EXPECT_EQ(0, signum(0));
EXPECT_EQ(0, signum(0.f));
EXPECT_EQ(0, signum(0.));
EXPECT_EQ(-1, signum(-1));
EXPECT_EQ(-1, signum(-2));
EXPECT_EQ(-1, signum(-3.f));
EXPECT_EQ(-1, signum(-4.));
double denorm = 1e-308;
EXPECT_EQ(1, signum(denorm));
EXPECT_EQ(-1, signum(-denorm));
double negzero = std::copysign(0., -1.);
EXPECT_EQ(0, signum(negzero));
EXPECT_EQ(1, signum(infinity<double>()));
EXPECT_EQ(1, signum(infinity<float>()));
EXPECT_EQ(-1, signum(-infinity<double>()));
EXPECT_EQ(-1, signum(-infinity<float>()));
}
TEST(quaternion, ctor) {
// scalar
quaternion q1(3.5);
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment