summaryrefslogtreecommitdiff
path: root/test/float_ops_precise.post.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/float_ops_precise.post.js')
-rw-r--r--test/float_ops_precise.post.js78
1 files changed, 78 insertions, 0 deletions
diff --git a/test/float_ops_precise.post.js b/test/float_ops_precise.post.js
new file mode 100644
index 000000000..117175ffd
--- /dev/null
+++ b/test/float_ops_precise.post.js
@@ -0,0 +1,78 @@
+
+// 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);
+ doTest(5.1);
+ doTest(5.3);
+ doTest(5.7);
+ doTest(5.9);
+ doTest(-1 | 0);
+ doTest((-1 | 0) + 1);
+ doTest((-1 | 0) - 1);
+}
+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'); // TODO this uses tempDoublePtr, a global, which is not yet functional
+testBinary('dmin');
+testBinary('dmax');
+
+// comparisons
+testBinary('deq');
+testBinary('dne');
+testBinary('dlt');
+testBinary('dle');
+testBinary('dgt');
+testBinary('dge');
+
+// conversions
+testUnary('int_to_double');
+testUnary('uint_to_double');
+testUnary('double_to_int');
+
+Module.print('done.');
+