1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
// 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);
doTest((-1 >>> 0) + 1);
doTest((-1 >>> 0) - 1);
doTest((-1 | 0) + 2);
doTest((-1 | 0) - 2);
doTest((-1 >>> 0) + 2);
doTest((-1 >>> 0) - 2);
}
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');
testUnary('double_to_uint');
testUnary('int_to_float');
testUnary('uint_to_float');
testUnary('float_to_int');
testUnary('float_to_uint');
Module.print('done.');
|