var xs = [
// Definitely heap digits.
-(2 n ** 1000 n),
// -(2n**64n)
-18446744073709551617 n,
-18446744073709551616 n,
-18446744073709551615 n,
// -(2n**63n)
-9223372036854775809 n,
-9223372036854775808 n,
-9223372036854775807 n,
// -(2**32)
-4294967297 n,
-4294967296 n,
-4294967295 n,
// -(2**31)
-2147483649 n,
-2147483648 n,
-2147483647 n,
-1 n,
0 n,
1 n,
// 2**31
2147483647 n,
2147483648 n,
2147483649 n,
// 2**32
4294967295 n,
4294967296 n,
4294967297 n,
// 2n**63n
9223372036854775807 n,
9223372036854775808 n,
9223372036854775809 n,
// 2n**64n
18446744073709551615 n,
18446744073709551616 n,
18446744073709551617 n,
// Definitely heap digits.
2 n ** 1000 n,
];
function testAdd() {
for (var i = 0 ; i < 100 ; ++i) {
var j = i % xs.length;
var x = xs[j];
var y = xs[xs.length - 1 - j];
assertEq(x + 0 n, x);
assertEq(x + y, 0 n);
}
}
testAdd();
function testSub() {
for (var i = 0 ; i < 100 ; ++i) {
var j = i % xs.length;
var x = xs[j];
var y = xs[xs.length - 1 - j];
assertEq(x - 0 n, x);
assertEq(x - (-y), 0 n);
}
}
testSub();
function testMul() {
for (var i = 0 ; i < 100 ; ++i) {
var x = xs[i % xs.length];
assertEq(x * 0 n, 0 n);
assertEq(x * 1 n, x);
assertEq(x * (-1 n), -x);
}
}
testMul();
function testDiv() {
for (var i = 0 ; i < 100 ; ++i) {
var j = i % xs.length;
var x = xs[j];
// Don't divide by zero.
if (j === xs.length >> 1 ) {
assertEq(x / 1 n, 0 n);
continue ;
}
assertEq(x / x, 1 n);
assertEq(x / 1 n, x);
}
}
testDiv();
function testMod() {
for (var i = 0 ; i < 100 ; ++i) {
var j = i % xs.length;
var x = xs[j];
// Don't divide by zero.
if (j === xs.length >> 1 ) {
assertEq(x / 1 n, 0 n);
continue ;
}
assertEq(x % x, 0 n);
assertEq(x % 1 n, 0 n);
}
}
testMod();
function testPow() {
for (var i = 0 ; i < 100 ; ++i) {
var x = xs[i % xs.length];
assertEq(x ** 0 n, 1 n);
assertEq(x ** 1 n, x);
}
}
testPow();
function testBitAnd() {
for (var i = 0 ; i < 100 ; ++i) {
var x = xs[i % xs.length];
assertEq(x & x, x);
assertEq(x & 0 n, 0 n);
}
}
testBitAnd();
function testBitOr() {
for (var i = 0 ; i < 100 ; ++i) {
var x = xs[i % xs.length];
assertEq(x | x, x);
assertEq(x | 0 n, x);
}
}
testBitOr();
function testBitXor() {
for (var i = 0 ; i < 100 ; ++i) {
var x = xs[i % xs.length];
assertEq(x ^ x, 0 n);
assertEq(x ^ 0 n, x);
}
}
testBitXor();
function testLeftShift() {
for (var i = 0 ; i < 100 ; ++i) {
var x = xs[i % xs.length];
assertEq(x << 0 n, x);
assertEq(x << 1 n, x * 2 n);
if (x >= 0 n || !(x & 1 n)) {
assertEq(x << -1 n, x / 2 n);
} else {
assertEq(x << -1 n, (x / 2 n) - 1 n);
}
}
}
testLeftShift();
function testRightShift() {
for (var i = 0 ; i < 100 ; ++i) {
var x = xs[i % xs.length];
assertEq(x >> 0 n, x);
if (x >= 0 n || !(x & 1 n)) {
assertEq(x >> 1 n, x / 2 n);
} else {
assertEq(x >> 1 n, (x / 2 n) - 1 n);
}
assertEq(x >> -1 n, x * 2 n);
}
}
testRightShift();
Messung V0.5 in Prozent C=95 H=70 G=83
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland