//@ runBigIntEnabled let assert = { sameValue: function(i, e, m) { if (i !== e) throw new Error(m); } } function bigIntMod(x, y) { return x % y; } noInline(bigIntMod); for (let i = 0; i < 10000; i++) { let r = bigIntMod(30n, 10n); assert.sameValue(r, 0n, 30n + " % " + 10n + " = " + r); } function bigIntModFolding(x, y) { let r = x % y; return -r; } noInline(bigIntModFolding); for (let i = 0; i < 10000; i++) { let r = bigIntModFolding(10, 30); assert.sameValue(r, -10, "-(" + 10 + " % " + 30 + ") = " + r); } let r = bigIntModFolding(10n, 30n); assert.sameValue(r, -10n, "-(" + 10n + " % " + 30n + ") = " + r);