summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/float_ops.cpp29
-rw-r--r--test/float_ops.post.js66
-rw-r--r--test/float_ops.txt310
3 files changed, 405 insertions, 0 deletions
diff --git a/test/float_ops.cpp b/test/float_ops.cpp
new file mode 100644
index 000000000..ae1c913de
--- /dev/null
+++ b/test/float_ops.cpp
@@ -0,0 +1,29 @@
+#include <cmath>
+#include <algorithm>
+#include <emscripten.h>
+
+extern "C" {
+
+// unary
+double EMSCRIPTEN_KEEPALIVE dneg(double x) { return -x; }
+double EMSCRIPTEN_KEEPALIVE dfloor(double x) { return floor(x); }
+
+// binary
+double EMSCRIPTEN_KEEPALIVE dadd(double x, double y) { return x + y; }
+double EMSCRIPTEN_KEEPALIVE dsub(double x, double y) { return x - y; }
+double EMSCRIPTEN_KEEPALIVE dmul(double x, double y) { return x * y; }
+double EMSCRIPTEN_KEEPALIVE ddiv(double x, double y) { return x / y; }
+double EMSCRIPTEN_KEEPALIVE dcopysign(double x, double y) { return std::copysign(x, y); }
+double EMSCRIPTEN_KEEPALIVE dmin(double x, double y) { return std::min(x, y); }
+double EMSCRIPTEN_KEEPALIVE dmax(double x, double y) { return std::max(x, y); }
+
+// comparisons
+int EMSCRIPTEN_KEEPALIVE deq(double x, double y) { return x == y; }
+int EMSCRIPTEN_KEEPALIVE dne(double x, double y) { return x != y; }
+int EMSCRIPTEN_KEEPALIVE dlt(double x, double y) { return x < y; }
+int EMSCRIPTEN_KEEPALIVE dle(double x, double y) { return x <= y; }
+int EMSCRIPTEN_KEEPALIVE dgt(double x, double y) { return x > y; }
+int EMSCRIPTEN_KEEPALIVE dge(double x, double y) { return x >= y; }
+
+}
+
diff --git a/test/float_ops.post.js b/test/float_ops.post.js
new file mode 100644
index 000000000..f05d3ba7b
--- /dev/null
+++ b/test/float_ops.post.js
@@ -0,0 +1,66 @@
+
+// unary
+function testUnary(name) {
+ Module.print(name);
+ function doTest(x) {
+ Module.print(' ' + [x] + ' ==> ' + Module['_' + name](x));
+ }
+ doTest(0);
+ doTest(1);
+ doTest(-1);
+ doTest(0.5);
+ doTest(-0.5);
+ doTest(1.4);
+ doTest(-1.4);
+ doTest(1.6);
+ doTest(-1.6);
+}
+testUnary('dfloor');
+
+// binary
+function testBinary(name) {
+ Module.print(name);
+ function doTest(x, y) {
+ Module.print(' ' + [x, y] + ' ==> ' + Module['_' + name](x, y));
+ }
+ doTest(0, 0);
+ doTest(0, 1);
+ doTest(1, 0);
+ doTest(1, 1);
+ doTest(5, 6);
+ doTest(6, 5);
+ doTest(101, -12);
+ doTest(-12, 101);
+ doTest(-1, 5);
+ doTest(5, -1);
+ doTest(-1, -1);
+ doTest(0.12, 0.12);
+ doTest(0.812, 1);
+ doTest(1.821, 0);
+ doTest(1, 1.212);
+ doTest(5.543, 6);
+ doTest(6, 5.121);
+ doTest(101.001, -12);
+ doTest(-12.001, 101);
+ doTest(-1, 5.123);
+ doTest(5, -1.123);
+ doTest(-1, -1.123);
+}
+testBinary('dadd');
+testBinary('dsub');
+testBinary('dmul');
+testBinary('ddiv');
+testBinary('dcopysign');
+testBinary('dmin');
+testBinary('dmax');
+
+// comparisons
+testBinary('deq');
+testBinary('dne');
+testBinary('dlt');
+testBinary('dle');
+testBinary('dgt');
+testBinary('dge');
+
+Module.print('done.');
+
diff --git a/test/float_ops.txt b/test/float_ops.txt
new file mode 100644
index 000000000..86f656a23
--- /dev/null
+++ b/test/float_ops.txt
@@ -0,0 +1,310 @@
+dfloor
+ 0 ==> 0
+ 1 ==> 1
+ -1 ==> -1
+ 0.5 ==> 0
+ -0.5 ==> -1
+ 1.4 ==> 1
+ -1.4 ==> -2
+ 1.6 ==> 1
+ -1.6 ==> -2
+dadd
+ 0,0 ==> 0
+ 0,1 ==> 1
+ 1,0 ==> 1
+ 1,1 ==> 2
+ 5,6 ==> 11
+ 6,5 ==> 11
+ 101,-12 ==> 89
+ -12,101 ==> 89
+ -1,5 ==> 4
+ 5,-1 ==> 4
+ -1,-1 ==> -2
+ 0.12,0.12 ==> 0.24
+ 0.812,1 ==> 1.812
+ 1.821,0 ==> 1.821
+ 1,1.212 ==> 2.2119999999999997
+ 5.543,6 ==> 11.543
+ 6,5.121 ==> 11.121
+ 101.001,-12 ==> 89.001
+ -12.001,101 ==> 88.999
+ -1,5.123 ==> 4.123
+ 5,-1.123 ==> 3.877
+ -1,-1.123 ==> -2.123
+dsub
+ 0,0 ==> 0
+ 0,1 ==> -1
+ 1,0 ==> 1
+ 1,1 ==> 0
+ 5,6 ==> -1
+ 6,5 ==> 1
+ 101,-12 ==> 113
+ -12,101 ==> -113
+ -1,5 ==> -6
+ 5,-1 ==> 6
+ -1,-1 ==> 0
+ 0.12,0.12 ==> 0
+ 0.812,1 ==> -0.18799999999999994
+ 1.821,0 ==> 1.821
+ 1,1.212 ==> -0.21199999999999997
+ 5.543,6 ==> -0.45699999999999985
+ 6,5.121 ==> 0.8789999999999996
+ 101.001,-12 ==> 113.001
+ -12.001,101 ==> -113.001
+ -1,5.123 ==> -6.123
+ 5,-1.123 ==> 6.123
+ -1,-1.123 ==> 0.123
+dmul
+ 0,0 ==> 0
+ 0,1 ==> 0
+ 1,0 ==> 0
+ 1,1 ==> 1
+ 5,6 ==> 30
+ 6,5 ==> 30
+ 101,-12 ==> -1212
+ -12,101 ==> -1212
+ -1,5 ==> -5
+ 5,-1 ==> -5
+ -1,-1 ==> 1
+ 0.12,0.12 ==> 0.0144
+ 0.812,1 ==> 0.812
+ 1.821,0 ==> 0
+ 1,1.212 ==> 1.212
+ 5.543,6 ==> 33.258
+ 6,5.121 ==> 30.726000000000003
+ 101.001,-12 ==> -1212.0120000000002
+ -12.001,101 ==> -1212.1009999999999
+ -1,5.123 ==> -5.123
+ 5,-1.123 ==> -5.615
+ -1,-1.123 ==> 1.123
+ddiv
+ 0,0 ==> NaN
+ 0,1 ==> 0
+ 1,0 ==> Infinity
+ 1,1 ==> 1
+ 5,6 ==> 0.8333333333333334
+ 6,5 ==> 1.2
+ 101,-12 ==> -8.416666666666666
+ -12,101 ==> -0.1188118811881188
+ -1,5 ==> -0.2
+ 5,-1 ==> -5
+ -1,-1 ==> 1
+ 0.12,0.12 ==> 1
+ 0.812,1 ==> 0.812
+ 1.821,0 ==> Infinity
+ 1,1.212 ==> 0.8250825082508251
+ 5.543,6 ==> 0.9238333333333334
+ 6,5.121 ==> 1.1716461628588166
+ 101.001,-12 ==> -8.41675
+ -12.001,101 ==> -0.11882178217821782
+ -1,5.123 ==> -0.19519812609798945
+ 5,-1.123 ==> -4.452359750667854
+ -1,-1.123 ==> 0.8904719501335708
+dcopysign
+ 0,0 ==> 0
+ 0,1 ==> 0
+ 1,0 ==> 1
+ 1,1 ==> 1
+ 5,6 ==> 5
+ 6,5 ==> 6
+ 101,-12 ==> -101
+ -12,101 ==> 12
+ -1,5 ==> 1
+ 5,-1 ==> -5
+ -1,-1 ==> -1
+ 0.12,0.12 ==> 0.12
+ 0.812,1 ==> 0.812
+ 1.821,0 ==> 1.821
+ 1,1.212 ==> 1
+ 5.543,6 ==> 5.543
+ 6,5.121 ==> 6
+ 101.001,-12 ==> -101.001
+ -12.001,101 ==> 12.001
+ -1,5.123 ==> 1
+ 5,-1.123 ==> -5
+ -1,-1.123 ==> -1
+dmin
+ 0,0 ==> 0
+ 0,1 ==> 0
+ 1,0 ==> 0
+ 1,1 ==> 1
+ 5,6 ==> 5
+ 6,5 ==> 5
+ 101,-12 ==> -12
+ -12,101 ==> -12
+ -1,5 ==> -1
+ 5,-1 ==> -1
+ -1,-1 ==> -1
+ 0.12,0.12 ==> 0.12
+ 0.812,1 ==> 0.812
+ 1.821,0 ==> 0
+ 1,1.212 ==> 1
+ 5.543,6 ==> 5.543
+ 6,5.121 ==> 5.121
+ 101.001,-12 ==> -12
+ -12.001,101 ==> -12.001
+ -1,5.123 ==> -1
+ 5,-1.123 ==> -1.123
+ -1,-1.123 ==> -1.123
+dmax
+ 0,0 ==> 0
+ 0,1 ==> 1
+ 1,0 ==> 1
+ 1,1 ==> 1
+ 5,6 ==> 6
+ 6,5 ==> 6
+ 101,-12 ==> 101
+ -12,101 ==> 101
+ -1,5 ==> 5
+ 5,-1 ==> 5
+ -1,-1 ==> -1
+ 0.12,0.12 ==> 0.12
+ 0.812,1 ==> 1
+ 1.821,0 ==> 1.821
+ 1,1.212 ==> 1.212
+ 5.543,6 ==> 6
+ 6,5.121 ==> 6
+ 101.001,-12 ==> 101.001
+ -12.001,101 ==> 101
+ -1,5.123 ==> 5.123
+ 5,-1.123 ==> 5
+ -1,-1.123 ==> -1
+deq
+ 0,0 ==> 1
+ 0,1 ==> 0
+ 1,0 ==> 0
+ 1,1 ==> 1
+ 5,6 ==> 0
+ 6,5 ==> 0
+ 101,-12 ==> 0
+ -12,101 ==> 0
+ -1,5 ==> 0
+ 5,-1 ==> 0
+ -1,-1 ==> 1
+ 0.12,0.12 ==> 1
+ 0.812,1 ==> 0
+ 1.821,0 ==> 0
+ 1,1.212 ==> 0
+ 5.543,6 ==> 0
+ 6,5.121 ==> 0
+ 101.001,-12 ==> 0
+ -12.001,101 ==> 0
+ -1,5.123 ==> 0
+ 5,-1.123 ==> 0
+ -1,-1.123 ==> 0
+dne
+ 0,0 ==> 0
+ 0,1 ==> 1
+ 1,0 ==> 1
+ 1,1 ==> 0
+ 5,6 ==> 1
+ 6,5 ==> 1
+ 101,-12 ==> 1
+ -12,101 ==> 1
+ -1,5 ==> 1
+ 5,-1 ==> 1
+ -1,-1 ==> 0
+ 0.12,0.12 ==> 0
+ 0.812,1 ==> 1
+ 1.821,0 ==> 1
+ 1,1.212 ==> 1
+ 5.543,6 ==> 1
+ 6,5.121 ==> 1
+ 101.001,-12 ==> 1
+ -12.001,101 ==> 1
+ -1,5.123 ==> 1
+ 5,-1.123 ==> 1
+ -1,-1.123 ==> 1
+dlt
+ 0,0 ==> 0
+ 0,1 ==> 1
+ 1,0 ==> 0
+ 1,1 ==> 0
+ 5,6 ==> 1
+ 6,5 ==> 0
+ 101,-12 ==> 0
+ -12,101 ==> 1
+ -1,5 ==> 1
+ 5,-1 ==> 0
+ -1,-1 ==> 0
+ 0.12,0.12 ==> 0
+ 0.812,1 ==> 1
+ 1.821,0 ==> 0
+ 1,1.212 ==> 1
+ 5.543,6 ==> 1
+ 6,5.121 ==> 0
+ 101.001,-12 ==> 0
+ -12.001,101 ==> 1
+ -1,5.123 ==> 1
+ 5,-1.123 ==> 0
+ -1,-1.123 ==> 0
+dle
+ 0,0 ==> 1
+ 0,1 ==> 1
+ 1,0 ==> 0
+ 1,1 ==> 1
+ 5,6 ==> 1
+ 6,5 ==> 0
+ 101,-12 ==> 0
+ -12,101 ==> 1
+ -1,5 ==> 1
+ 5,-1 ==> 0
+ -1,-1 ==> 1
+ 0.12,0.12 ==> 1
+ 0.812,1 ==> 1
+ 1.821,0 ==> 0
+ 1,1.212 ==> 1
+ 5.543,6 ==> 1
+ 6,5.121 ==> 0
+ 101.001,-12 ==> 0
+ -12.001,101 ==> 1
+ -1,5.123 ==> 1
+ 5,-1.123 ==> 0
+ -1,-1.123 ==> 0
+dgt
+ 0,0 ==> 0
+ 0,1 ==> 0
+ 1,0 ==> 1
+ 1,1 ==> 0
+ 5,6 ==> 0
+ 6,5 ==> 1
+ 101,-12 ==> 1
+ -12,101 ==> 0
+ -1,5 ==> 0
+ 5,-1 ==> 1
+ -1,-1 ==> 0
+ 0.12,0.12 ==> 0
+ 0.812,1 ==> 0
+ 1.821,0 ==> 1
+ 1,1.212 ==> 0
+ 5.543,6 ==> 0
+ 6,5.121 ==> 1
+ 101.001,-12 ==> 1
+ -12.001,101 ==> 0
+ -1,5.123 ==> 0
+ 5,-1.123 ==> 1
+ -1,-1.123 ==> 1
+dge
+ 0,0 ==> 1
+ 0,1 ==> 0
+ 1,0 ==> 1
+ 1,1 ==> 1
+ 5,6 ==> 0
+ 6,5 ==> 1
+ 101,-12 ==> 1
+ -12,101 ==> 0
+ -1,5 ==> 0
+ 5,-1 ==> 1
+ -1,-1 ==> 1
+ 0.12,0.12 ==> 1
+ 0.812,1 ==> 0
+ 1.821,0 ==> 1
+ 1,1.212 ==> 0
+ 5.543,6 ==> 0
+ 6,5.121 ==> 1
+ 101.001,-12 ==> 1
+ -12.001,101 ==> 0
+ -1,5.123 ==> 0
+ 5,-1.123 ==> 1
+ -1,-1.123 ==> 1
+done.