Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/marian-nmt/intgemm.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMateusz Chudyk <mateuszchudyk@gmail.com>2019-06-25 15:07:42 +0300
committerMateusz Chudyk <mateuszchudyk@gmail.com>2019-06-25 15:34:05 +0300
commit586f71042bae9b369367af6807b108480bdc2472 (patch)
tree261d256922c26018ddf7ab32697deb9011d517c3
parent2b157abbaf327b909f9dbb127e7267576e8e2812 (diff)
Add unit tests for utils.h
-rw-r--r--CMakeLists.txt1
-rw-r--r--test/utils_test.cc44
2 files changed, 45 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1a15c7a..5dde6e5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -40,6 +40,7 @@ add_executable(tests
test/postprocess/tanh_test.cc
test/postprocess/unquantize_test.cc
test/quantize_test.cc
+ test/utils_test.cc
intgemm.cc
)
diff --git a/test/utils_test.cc b/test/utils_test.cc
new file mode 100644
index 0000000..4391e61
--- /dev/null
+++ b/test/utils_test.cc
@@ -0,0 +1,44 @@
+#include "3rd_party/catch.hpp"
+#include "utils.h"
+
+#define CHECK_DOUBLE(actual, expected, epsilon) \
+ do { \
+ if (fabs((actual) - (expected)) < epsilon) { SUCCEED(); } \
+ else { CHECK((actual) == (expected)); } \
+ } while(0)
+
+namespace intgemm {
+namespace {
+
+TEST_CASE("Factorial",) {
+ CHECK(factorial(0) == 1);
+ CHECK(factorial(1) == 1);
+ CHECK(factorial(2) == 2);
+ CHECK(factorial(3) == 6);
+ CHECK(factorial(4) == 24);
+
+ // Maximum result that fits in unsinged long long
+ CHECK(factorial(20) == 2432902008176640000);
+}
+
+TEST_CASE("Expi (negative)",) {
+ const double eps = 0.0000001;
+ CHECK_DOUBLE(expi(-1), 0.3678794411714423, eps);
+ CHECK_DOUBLE(expi(-2), 0.1353352832366127, eps);
+ CHECK_DOUBLE(expi(-10), 0.0000453999297625, eps);
+}
+
+TEST_CASE("Expi (zero)",) {
+ const double eps = 0.0000001;
+ CHECK_DOUBLE(expi(0), 1.0, eps);
+}
+
+TEST_CASE("Expi (positive)",) {
+ const double eps = 0.0000001;
+ CHECK_DOUBLE(expi(1), 2.7182818284590452, eps);
+ CHECK_DOUBLE(expi(2), 7.3890560989306502, eps);
+ CHECK_DOUBLE(expi(10), 22026.4657948067165170, eps);
+}
+
+}
+}