diff options
-rw-r--r-- | test/float_ops.cpp | 29 | ||||
-rw-r--r-- | test/float_ops.post.js | 66 | ||||
-rw-r--r-- | test/float_ops.txt | 310 |
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. |