commit 7c3c83776663d81473f02c40d3ff82aec53dbe15
parent 50852b9b06ec83a17ec6f8c14b1934dd646c3100
Author: vaplv <vaplv@free.fr>
Date: Sun, 8 Jun 2014 19:20:05 +0200
Add and test the signf function
Diffstat:
2 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/src/math.h b/src/math.h
@@ -47,6 +47,12 @@ absf(const float flt)
return ucast.f;
}
+static FINLINE float
+signf(const float flt)
+{
+ return flt < 0.f ? -1.f : 1.f;
+}
+
static FINLINE char
eq_eps(const float a, const float b, const float eps)
{
diff --git a/src/test_math.c b/src/test_math.c
@@ -44,6 +44,7 @@ main(int argc, char** argv)
CHECK(IS_POW2(31), 0);
CHECK(IS_POW2(64), 1);
CHECK(IS_POW2(1 << 16), 1);
+
CHECK(log2i(3), 1);
CHECK(log2i(4), 2);
CHECK(log2i(5), 2);
@@ -52,9 +53,18 @@ main(int argc, char** argv)
CHECK(log2i(12), 3);
CHECK(log2i(511), 8);
CHECK(log2i(512), 9);
+
CHECK(round_up_pow2(0), 1);
CHECK(round_up_pow2(3), 4);
CHECK(round_up_pow2(4), 4);
CHECK(round_up_pow2(100), 128);
+
+ CHECK(absf(-1.f), 1.f);
+ CHECK(absf(10.f), 10.f);
+ CHECK(absf(-3.14159f), 3.14159f);
+
+ CHECK(signf(-3.14159f), -1.f);
+ CHECK(signf(1.23f), 1.f);
+ CHECK(signf(0.f), 1.f);
return 0;
}