var table = [
[NaN, 0 , 0 ],
[Infinity, Infinity, 0 ],
[NaN, 1000 , 0 ],
[-1 , -2 , 2 ],
[1 , 2 , 2 ],
[-1 , 2 , -2 ],
[1 , -2 , -2 ],
[-0 , 0 , 0 ],
[0 , -0 , 0 ],
[-1 , -0 , 0 ],
[1 , -0 , 0 ],
[0 xffffffff, 1 , -1 ],
[0 xffffffff, 0 xffffffff, 1 ],
[0 xffffffff, -0 xffffffff, -1 ],
[0 xffffffff, 0 xfffffffe, 2 ],
[0 xffffffff, -0 xfffffffe, -2 ],
[0 x10000, 0 x10000, 0 ],
[{}, {}, 0 ],
[[], [], 0 ],
[{}, [], 0 ],
[[], {}, 0 ],
[{valueOf: function () { return -1 ; }}, 0 x100000, -1048576 ],
["3" , "-4" , -12 ],
[3 .4 , 6 , 18 ]
];
try {
Math.imul({ valueOf: function () { throw "ha ha ha" ; } });
assertEq(true , false , "no error thrown" );
} catch (e) {
assertEq(e, "ha ha ha" );
}
var order = [];
assertEq(Math.imul({ valueOf: function () { order.push("first" ); return 0 ; } },
{ valueOf: function () { order.push("second" ); return 0 ; } }),
0 );
assertEq(order[0 ], "first" );
assertEq(order[1 ], "second" );
var seen = [];
try
{
Math.imul({ valueOf: function () { seen.push("one" ); return 17 ; } },
{ valueOf: function () { throw "abort!" ; } });
assertEq(true , false , "no error thrown" );
}
catch (e)
{
assertEq(e, "abort!" , "should have thrown partway through, instead threw " + e);
}
assertEq(seen.length, 1 );
assertEq(seen[0 ], "one" );
assertEq(Math.imul(), 0 );
assertEq(Math.imul(100 ), 0 );
assertEq(Math.imul(NaN, 100 ), 0 );
assertEq(Math.imul(NaN, NaN), 0 );
assertEq(Math.imul(5 , Infinity), 0 );
for (var i = 0 ; i < table.length; i++) {
assertEq(Math.imul(table[i][0 ], table[i][1 ]), table[i][2 ]);
assertEq(Math.imul(table[i][1 ], table[i][0 ]), table[i][2 ]);
}
Messung V0.5 in Prozent C=94 H=88 G=90
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland