[ARM,MIPS] Skip slow tests
[WebKit-https.git] / JSTests / stress / big-int-division.js
1 //@ runBigIntEnabled
2
3 // Copyright (C) 2017 Robin Templeton. All rights reserved.
4 // This code is governed by the BSD license found in the LICENSE file.
5
6 function assert(a) {
7     if (!a)
8         throw new Error("Bad assertion");
9 }
10
11 assert.sameValue = function (input, expected, message) {
12     if (input !== expected)
13         throw new Error(message);
14 }
15
16 function testDiv(x, y, z) {
17     assert.sameValue(x / y, z, x + " / " + y + " = " + z);
18 }
19
20 testDiv(0xFEDCBA9876543210n, 0xFEDCBA9876543210n, 0x1n);
21 testDiv(0xFEDCBA9876543210n, 0xFEDCBA987654320Fn, 0x1n);
22 testDiv(0xFEDCBA9876543210n, 0xFEDCBA98n, 0x100000000n);
23 testDiv(0xFEDCBA9876543210n, 0xFEDCBA97n, 0x100000001n);
24 testDiv(0xFEDCBA9876543210n, 0x1234n, 0xE0042813BE5DCn);
25 testDiv(0xFEDCBA9876543210n, 0x3n, 0x54F43E32D21C10B0n);
26 testDiv(0xFEDCBA9876543210n, 0x2n, 0x7F6E5D4C3B2A1908n);
27 testDiv(0xFEDCBA9876543210n, 0x1n, 0xFEDCBA9876543210n);
28 testDiv(0xFEDCBA9876543210n, BigInt("-1"), BigInt("-18364758544493064720"));
29 testDiv(0xFEDCBA9876543210n, BigInt("-2"), BigInt("-9182379272246532360"));
30 testDiv(0xFEDCBA9876543210n, BigInt("-3"), BigInt("-6121586181497688240"));
31 testDiv(0xFEDCBA9876543210n, BigInt("-4275878551"), BigInt("-4294967297"));
32 testDiv(0xFEDCBA9876543210n, BigInt("-18364758544493064719"), BigInt("-1"));
33 testDiv(0xFEDCBA987654320Fn, 0xFEDCBA9876543210n, 0x0n);
34 testDiv(0xFEDCBA987654320Fn, 0xFEDCBA987654320Fn, 0x1n);
35 testDiv(0xFEDCBA987654320Fn, 0xFEDCBA98n, 0x100000000n);
36 testDiv(0xFEDCBA987654320Fn, 0xFEDCBA97n, 0x100000001n);
37 testDiv(0xFEDCBA987654320Fn, 0x1234n, 0xE0042813BE5DCn);
38 testDiv(0xFEDCBA987654320Fn, 0x3n, 0x54F43E32D21C10AFn);
39 testDiv(0xFEDCBA987654320Fn, 0x2n, 0x7F6E5D4C3B2A1907n);
40 testDiv(0xFEDCBA987654320Fn, 0x1n, 0xFEDCBA987654320Fn);
41 testDiv(0xFEDCBA98n, 0xFEDCBA9876543210n, 0x0n);
42 testDiv(0xFEDCBA98n, 0xFEDCBA987654320Fn, 0x0n);
43 testDiv(0xFEDCBA98n, 0xFEDCBA98n, 0x1n);
44 testDiv(0xFEDCBA98n, 0xFEDCBA97n, 0x1n);
45 testDiv(0xFEDCBA98n, 0x1234n, 0xE0042n);
46 testDiv(0xFEDCBA98n, 0x3n, 0x54F43E32n);
47 testDiv(0xFEDCBA98n, 0x2n, 0x7F6E5D4Cn);
48 testDiv(0xFEDCBA98n, 0x1n, 0xFEDCBA98n);
49 testDiv(0xFEDCBA98n, BigInt("-1"), BigInt("-4275878552"));
50 testDiv(0xFEDCBA98n, BigInt("-2"), BigInt("-2137939276"));
51 testDiv(0xFEDCBA98n, BigInt("-3"), BigInt("-1425292850"));
52 testDiv(0xFEDCBA98n, BigInt("-4275878551"), BigInt("-1"));
53 testDiv(0xFEDCBA98n, BigInt("-18364758544493064719"), 0x0n);
54 testDiv(0xFEDCBA97n, 0xFEDCBA9876543210n, 0x0n);
55 testDiv(0xFEDCBA97n, 0xFEDCBA987654320Fn, 0x0n);
56 testDiv(0xFEDCBA97n, 0xFEDCBA98n, 0x0n);
57 testDiv(0xFEDCBA97n, 0xFEDCBA97n, 0x1n);
58 testDiv(0xFEDCBA97n, 0x1234n, 0xE0042n);
59 testDiv(0xFEDCBA97n, 0x3n, 0x54F43E32n);
60 testDiv(0xFEDCBA97n, 0x2n, 0x7F6E5D4Bn);
61 testDiv(0xFEDCBA97n, 0x1n, 0xFEDCBA97n);
62 testDiv(0x3n, 0xFEDCBA9876543210n, 0x0n);
63 testDiv(0x3n, 0xFEDCBA98n, 0x0n);
64 testDiv(0x3n, 0x1234n, 0x0n);
65 testDiv(0x3n, 0x3n, 0x1n);
66 testDiv(0x3n, 0x2n, 0x1n);
67 testDiv(0x3n, 0x1n, 0x3n);
68 testDiv(0x3n, BigInt("-2"), BigInt("-1"));
69 testDiv(0x3n, BigInt("-3"), BigInt("-1"));
70 testDiv(0x3n, BigInt("-4275878551"), 0x0n);
71 testDiv(0x3n, BigInt("-18364758544493064719"), 0x0n);
72 testDiv(0x2n, 0xFEDCBA98n, 0x0n);
73 testDiv(0x2n, 0xFEDCBA97n, 0x0n);
74 testDiv(0x2n, 0x3n, 0x0n);
75 testDiv(0x2n, 0x1n, 0x2n);
76 testDiv(0x2n, BigInt("-1"), BigInt("-2"));
77 testDiv(0x2n, BigInt("-2"), BigInt("-1"));
78 testDiv(0x2n, BigInt("-3"), 0x0n);
79 testDiv(0x1n, 0x1234n, 0x0n);
80 testDiv(0x1n, 0x3n, 0x0n);
81 testDiv(0x1n, 0x2n, 0x0n);
82 testDiv(0x1n, 0x1n, 0x1n);
83 testDiv(0x1n, BigInt("-1"), BigInt("-1"));
84 testDiv(0x1n, BigInt("-3"), 0x0n);
85 testDiv(0x1n, BigInt("-4660"), 0x0n);
86 testDiv(0x1n, BigInt("-18364758544493064719"), 0x0n);
87 testDiv(BigInt("-1"), 0xFEDCBA9876543210n, 0x0n);
88 testDiv(BigInt("-1"), 0xFEDCBA987654320Fn, 0x0n);
89 testDiv(BigInt("-1"), 0xFEDCBA98n, 0x0n);
90 testDiv(BigInt("-1"), 0xFEDCBA97n, 0x0n);
91 testDiv(BigInt("-1"), 0x3n, 0x0n);
92 testDiv(BigInt("-1"), 0x1n, BigInt("-1"));
93 testDiv(BigInt("-1"), BigInt("-3"), 0x0n);
94 testDiv(BigInt("-1"), BigInt("-4660"), 0x0n);
95 testDiv(BigInt("-1"), BigInt("-18364758544493064719"), 0x0n);
96 testDiv(BigInt("-2"), 0xFEDCBA9876543210n, 0x0n);
97 testDiv(BigInt("-3"), 0x3n, BigInt("-1"));
98 testDiv(BigInt("-3"), 0x2n, BigInt("-1"));
99 testDiv(BigInt("-3"), BigInt("-1"), 0x3n);
100 testDiv(BigInt("-3"), BigInt("-3"), 0x1n);
101 testDiv(BigInt("-3"), BigInt("-4660"), 0x0n);
102 testDiv(BigInt("-3"), BigInt("-4275878551"), 0x0n);
103 testDiv(BigInt("-3"), BigInt("-4275878552"), 0x0n);
104 testDiv(BigInt("-3"), BigInt("-18364758544493064720"), 0x0n);
105 testDiv(BigInt("-18364758544493064719"), 0xFEDCBA97n, BigInt("-4294967297"));
106 testDiv(BigInt("-18364758544493064719"), 0x1234n, BigInt("-3940935309977052"));
107 testDiv(BigInt("-18364758544493064719"), 0x3n, BigInt("-6121586181497688239"));
108 testDiv(BigInt("-18364758544493064719"), 0x2n, BigInt("-9182379272246532359"));
109 testDiv(BigInt("-18364758544493064719"), 0x1n, BigInt("-18364758544493064719"));
110 testDiv(BigInt("-18364758544493064719"), BigInt("-1"), 0xFEDCBA987654320Fn);
111 testDiv(BigInt("-18364758544493064719"), BigInt("-4275878551"), 0x100000001n);
112 testDiv(BigInt("-18364758544493064719"), BigInt("-18364758544493064719"), 0x1n);
113 testDiv(BigInt("-18364758544493064720"), 0xFEDCBA9876543210n, BigInt("-1"));
114 testDiv(BigInt("-18364758544493064720"), 0x1234n, BigInt("-3940935309977052"));
115 testDiv(BigInt("-18364758544493064720"), 0x3n, BigInt("-6121586181497688240"));
116 testDiv(BigInt("-18364758544493064720"), 0x2n, BigInt("-9182379272246532360"));
117 testDiv(BigInt("-18364758544493064720"), 0x1n, BigInt("-18364758544493064720"));
118 testDiv(BigInt("-18364758544493064720"), BigInt("-1"), 0xFEDCBA9876543210n);
119 testDiv(BigInt("-18364758544493064720"), BigInt("-3"), 0x54F43E32D21C10B0n);
120 testDiv(BigInt("-18364758544493064720"), BigInt("-4660"), 0xE0042813BE5DCn);
121 testDiv(BigInt("-18364758544493064720"), BigInt("-4275878552"), 0x100000000n);
122 testDiv(BigInt("-18364758544493064720"), BigInt("-18364758544493064720"), 0x1n);
123
124 // Test division by 0
125 try {
126     let a = 102122311n / 0n;
127 } catch (e) {
128     assert(e instanceof RangeError);
129     assert(e.message == "0 is an invalid divisor value.");
130 }
131