Commit 0c6fbad8 authored by lrn@chromium.org's avatar lrn@chromium.org

Add more tests to mul-exhaustive for constant left/right operands.

Make MJSUnit able to distinguish 0 and -0.

Review URL: http://codereview.chromium.org/6688062

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7368 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 94c1058b
...@@ -30,6 +30,10 @@ ...@@ -30,6 +30,10 @@
function test(expected_sqrt, value) { function test(expected_sqrt, value) {
assertEquals(expected_sqrt, Math.sqrt(value)); assertEquals(expected_sqrt, Math.sqrt(value));
if (isFinite(value)) { if (isFinite(value)) {
if ((1 / value) != -Infinity) {
// Math.pow(-0, 0.5) must be zero, but Math.sqrt(-0) is -0.
expected_sqrt = 0;
}
assertEquals(expected_sqrt, Math.pow(value, 0.5)); assertEquals(expected_sqrt, Math.pow(value, 0.5));
} }
} }
......
...@@ -41,15 +41,62 @@ MjsUnitAssertionError.prototype.toString = function () { ...@@ -41,15 +41,62 @@ MjsUnitAssertionError.prototype.toString = function () {
* the f-word and ignore all other lines. * the f-word and ignore all other lines.
*/ */
function MjsUnitToString(value) {
switch (typeof value) {
case "string":
return JSON.stringify(value);
case "number":
if (value === 0 && (1 / value) < 0) return "-0";
case "boolean":
case "null":
case "undefined":
case "function":
return String(value);
case "object":
if (value === null) return "null";
var clazz = Object.prototype.toString.call(value);
clazz = clazz.substring(8, clazz.length - 1);
switch (clazz) {
case "Number":
case "String":
case "Boolean":
case "Date":
return clazz + "(" + MjsUnitToString(value.valueOf()) + ")";
case "RegExp":
return value.toString();
case "Array":
return "[" + value.map(MjsUnitArrayElementToString).join(",") + "]";
case "Object":
break;
default:
return clazz + "()";
}
// [[Class]] is "Object".
var constructor = value.constructor.name;
if (name) return name + "()";
return "Object()";
default:
return "-- unknown value --";
}
}
function MjsUnitArrayElementToString(value, index, array) {
if (value === undefined && !(index in array)) return "";
return MjsUnitToString(value);
}
function fail(expected, found, name_opt) { function fail(expected, found, name_opt) {
var start; var message = "Fail" + "ure";
if (name_opt) { if (name_opt) {
// Fix this when we ditch the old test runner. // Fix this when we ditch the old test runner.
start = "Fail" + "ure (" + name_opt + "): "; message += " (" + name_opt + ")";
} else {
start = "Fail" + "ure:";
} }
throw new MjsUnitAssertionError(start + " expected <" + expected + "> found <" + found + ">");
message += ": expected <" + MjsUnitToString(expected) +
"> found <" + MjsUnitToString(found) + ">";
throw new MjsUnitAssertionError(message);
} }
...@@ -73,13 +120,17 @@ function deepObjectEquals(a, b) { ...@@ -73,13 +120,17 @@ function deepObjectEquals(a, b) {
function deepEquals(a, b) { function deepEquals(a, b) {
if (a == b) return true; if (a == b) {
// Check for -0.
if (a === 0 && b === 0) return (1 / a) === (1 / b);
return true;
}
if (typeof a == "number" && typeof b == "number" && isNaN(a) && isNaN(b)) { if (typeof a == "number" && typeof b == "number" && isNaN(a) && isNaN(b)) {
return true; return true;
} }
if (a == null || b == null) return false; if (a == null || b == null) return false;
if (a.constructor === RegExp || b.constructor === RegExp) { if (a.constructor === RegExp || b.constructor === RegExp) {
return (a.constructor === b.constructor) && (a.toString === b.toString); return (a.constructor === b.constructor) && (a.toString() === b.toString());
} }
if ((typeof a) !== 'object' || (typeof b) !== 'object' || if ((typeof a) !== 'object' || (typeof b) !== 'object' ||
(a === null) || (b === null)) (a === null) || (b === null))
...@@ -205,7 +256,7 @@ function assertDoesNotThrow(code) { ...@@ -205,7 +256,7 @@ function assertDoesNotThrow(code) {
function assertUnreachable(name_opt) { function assertUnreachable(name_opt) {
// Fix this when we ditch the old test runner. // Fix this when we ditch the old test runner.
var message = "Fail" + "ure: unreachable" var message = "Fail" + "ure: unreachable";
if (name_opt) { if (name_opt) {
message += " - " + name_opt; message += " - " + name_opt;
} }
......
...@@ -26,41 +26,64 @@ ...@@ -26,41 +26,64 @@
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
var x; var x;
var y;
var a;
function f(a, y) { // Converts a number to string respecting -0.
assertEquals(a, x * y); function stringify(n) {
assertEquals(a, -x * -y); if ((1 / n) === -Infinity) return "-0";
assertEquals(-a, -x * y); return String(n);
assertEquals(-a, x * -y);
assertEquals(a, y * x);
assertEquals(a, -y * -x);
assertEquals(-a, y * -x);
assertEquals(-a, -y * x);
} }
function f(expected, y) {
function testEval(string, x, y) {
var mulFunction = Function("x, y", "return " + string);
return mulFunction(x, y);
}
function mulTest(expected, x, y) {
assertEquals(expected, x * y);
assertEquals(expected, testEval(stringify(x) + " * y", x, y));
assertEquals(expected, testEval("x * " + stringify(y), x, y));
assertEquals(expected, testEval(stringify(x) + " * " + stringify(y), x, y));
}
mulTest(expected, x, y);
mulTest(-expected, -x, y);
mulTest(-expected, x, -y);
mulTest(expected, -x, -y);
if (x === y) return; // Symmetric cases not necessary.
mulTest(expected, y, x);
mulTest(-expected, -y, x);
mulTest(-expected, y, -x);
mulTest(expected, -y, -x);
}
x = 0;
f(0, 0);
x = 1; x = 1;
f(0, 0);
f(1, 1); f(1, 1);
x = 2; x = 2;
f(0, 0);
f(2, 1); f(2, 1);
f(4, 2); f(4, 2);
x = 3; x = 3;
f(0, 0);
f(3, 1); f(3, 1);
f(6, 2); f(6, 2);
f(9, 3); f(9, 3);
x = 4; x = 4;
f(0, 0);
f(4, 1); f(4, 1);
f(8, 2); f(8, 2);
f(12, 3); f(12, 3);
f(16, 4); f(16, 4);
x = 5; x = 5;
f(0, 0);
f(5, 1); f(5, 1);
f(10, 2); f(10, 2);
f(15, 3); f(15, 3);
f(20, 4); f(20, 4);
f(25, 5); f(25, 5);
x = 7; x = 7;
f(0, 0);
f(7, 1); f(7, 1);
f(14, 2); f(14, 2);
f(21, 3); f(21, 3);
...@@ -68,6 +91,7 @@ f(28, 4); ...@@ -68,6 +91,7 @@ f(28, 4);
f(35, 5); f(35, 5);
f(49, 7); f(49, 7);
x = 8; x = 8;
f(0, 0);
f(8, 1); f(8, 1);
f(16, 2); f(16, 2);
f(24, 3); f(24, 3);
...@@ -76,6 +100,7 @@ f(40, 5); ...@@ -76,6 +100,7 @@ f(40, 5);
f(56, 7); f(56, 7);
f(64, 8); f(64, 8);
x = 9; x = 9;
f(0, 0);
f(9, 1); f(9, 1);
f(18, 2); f(18, 2);
f(27, 3); f(27, 3);
...@@ -85,6 +110,7 @@ f(63, 7); ...@@ -85,6 +110,7 @@ f(63, 7);
f(72, 8); f(72, 8);
f(81, 9); f(81, 9);
x = 15; x = 15;
f(0, 0);
f(15, 1); f(15, 1);
f(30, 2); f(30, 2);
f(45, 3); f(45, 3);
...@@ -95,6 +121,7 @@ f(120, 8); ...@@ -95,6 +121,7 @@ f(120, 8);
f(135, 9); f(135, 9);
f(225, 15); f(225, 15);
x = 16; x = 16;
f(0, 0);
f(16, 1); f(16, 1);
f(32, 2); f(32, 2);
f(48, 3); f(48, 3);
...@@ -106,6 +133,7 @@ f(144, 9); ...@@ -106,6 +133,7 @@ f(144, 9);
f(240, 15); f(240, 15);
f(256, 16); f(256, 16);
x = 17; x = 17;
f(0, 0);
f(17, 1); f(17, 1);
f(34, 2); f(34, 2);
f(51, 3); f(51, 3);
...@@ -118,6 +146,7 @@ f(255, 15); ...@@ -118,6 +146,7 @@ f(255, 15);
f(272, 16); f(272, 16);
f(289, 17); f(289, 17);
x = 31; x = 31;
f(0, 0);
f(31, 1); f(31, 1);
f(62, 2); f(62, 2);
f(93, 3); f(93, 3);
...@@ -131,6 +160,7 @@ f(496, 16); ...@@ -131,6 +160,7 @@ f(496, 16);
f(527, 17); f(527, 17);
f(961, 31); f(961, 31);
x = 32; x = 32;
f(0, 0);
f(32, 1); f(32, 1);
f(64, 2); f(64, 2);
f(96, 3); f(96, 3);
...@@ -145,6 +175,7 @@ f(544, 17); ...@@ -145,6 +175,7 @@ f(544, 17);
f(992, 31); f(992, 31);
f(1024, 32); f(1024, 32);
x = 33; x = 33;
f(0, 0);
f(33, 1); f(33, 1);
f(66, 2); f(66, 2);
f(99, 3); f(99, 3);
...@@ -160,6 +191,7 @@ f(1023, 31); ...@@ -160,6 +191,7 @@ f(1023, 31);
f(1056, 32); f(1056, 32);
f(1089, 33); f(1089, 33);
x = 63; x = 63;
f(0, 0);
f(63, 1); f(63, 1);
f(126, 2); f(126, 2);
f(189, 3); f(189, 3);
...@@ -176,6 +208,7 @@ f(2016, 32); ...@@ -176,6 +208,7 @@ f(2016, 32);
f(2079, 33); f(2079, 33);
f(3969, 63); f(3969, 63);
x = 64; x = 64;
f(0, 0);
f(64, 1); f(64, 1);
f(128, 2); f(128, 2);
f(192, 3); f(192, 3);
...@@ -193,6 +226,7 @@ f(2112, 33); ...@@ -193,6 +226,7 @@ f(2112, 33);
f(4032, 63); f(4032, 63);
f(4096, 64); f(4096, 64);
x = 65; x = 65;
f(0, 0);
f(65, 1); f(65, 1);
f(130, 2); f(130, 2);
f(195, 3); f(195, 3);
...@@ -211,6 +245,7 @@ f(4095, 63); ...@@ -211,6 +245,7 @@ f(4095, 63);
f(4160, 64); f(4160, 64);
f(4225, 65); f(4225, 65);
x = 127; x = 127;
f(0, 0);
f(127, 1); f(127, 1);
f(254, 2); f(254, 2);
f(381, 3); f(381, 3);
...@@ -230,6 +265,7 @@ f(8128, 64); ...@@ -230,6 +265,7 @@ f(8128, 64);
f(8255, 65); f(8255, 65);
f(16129, 127); f(16129, 127);
x = 128; x = 128;
f(0, 0);
f(128, 1); f(128, 1);
f(256, 2); f(256, 2);
f(384, 3); f(384, 3);
...@@ -250,6 +286,7 @@ f(8320, 65); ...@@ -250,6 +286,7 @@ f(8320, 65);
f(16256, 127); f(16256, 127);
f(16384, 128); f(16384, 128);
x = 129; x = 129;
f(0, 0);
f(129, 1); f(129, 1);
f(258, 2); f(258, 2);
f(387, 3); f(387, 3);
...@@ -271,6 +308,7 @@ f(16383, 127); ...@@ -271,6 +308,7 @@ f(16383, 127);
f(16512, 128); f(16512, 128);
f(16641, 129); f(16641, 129);
x = 255; x = 255;
f(0, 0);
f(255, 1); f(255, 1);
f(510, 2); f(510, 2);
f(765, 3); f(765, 3);
...@@ -293,6 +331,7 @@ f(32640, 128); ...@@ -293,6 +331,7 @@ f(32640, 128);
f(32895, 129); f(32895, 129);
f(65025, 255); f(65025, 255);
x = 256; x = 256;
f(0, 0);
f(256, 1); f(256, 1);
f(512, 2); f(512, 2);
f(768, 3); f(768, 3);
...@@ -316,6 +355,7 @@ f(33024, 129); ...@@ -316,6 +355,7 @@ f(33024, 129);
f(65280, 255); f(65280, 255);
f(65536, 256); f(65536, 256);
x = 257; x = 257;
f(0, 0);
f(257, 1); f(257, 1);
f(514, 2); f(514, 2);
f(771, 3); f(771, 3);
...@@ -340,6 +380,7 @@ f(65535, 255); ...@@ -340,6 +380,7 @@ f(65535, 255);
f(65792, 256); f(65792, 256);
f(66049, 257); f(66049, 257);
x = 511; x = 511;
f(0, 0);
f(511, 1); f(511, 1);
f(1022, 2); f(1022, 2);
f(1533, 3); f(1533, 3);
...@@ -365,6 +406,7 @@ f(130816, 256); ...@@ -365,6 +406,7 @@ f(130816, 256);
f(131327, 257); f(131327, 257);
f(261121, 511); f(261121, 511);
x = 512; x = 512;
f(0, 0);
f(512, 1); f(512, 1);
f(1024, 2); f(1024, 2);
f(1536, 3); f(1536, 3);
...@@ -391,6 +433,7 @@ f(131584, 257); ...@@ -391,6 +433,7 @@ f(131584, 257);
f(261632, 511); f(261632, 511);
f(262144, 512); f(262144, 512);
x = 513; x = 513;
f(0, 0);
f(513, 1); f(513, 1);
f(1026, 2); f(1026, 2);
f(1539, 3); f(1539, 3);
...@@ -418,6 +461,7 @@ f(262143, 511); ...@@ -418,6 +461,7 @@ f(262143, 511);
f(262656, 512); f(262656, 512);
f(263169, 513); f(263169, 513);
x = 1023; x = 1023;
f(0, 0);
f(1023, 1); f(1023, 1);
f(2046, 2); f(2046, 2);
f(3069, 3); f(3069, 3);
...@@ -446,6 +490,7 @@ f(523776, 512); ...@@ -446,6 +490,7 @@ f(523776, 512);
f(524799, 513); f(524799, 513);
f(1046529, 1023); f(1046529, 1023);
x = 1024; x = 1024;
f(0, 0);
f(1024, 1); f(1024, 1);
f(2048, 2); f(2048, 2);
f(3072, 3); f(3072, 3);
...@@ -475,6 +520,7 @@ f(525312, 513); ...@@ -475,6 +520,7 @@ f(525312, 513);
f(1047552, 1023); f(1047552, 1023);
f(1048576, 1024); f(1048576, 1024);
x = 1025; x = 1025;
f(0, 0);
f(1025, 1); f(1025, 1);
f(2050, 2); f(2050, 2);
f(3075, 3); f(3075, 3);
...@@ -505,6 +551,7 @@ f(1048575, 1023); ...@@ -505,6 +551,7 @@ f(1048575, 1023);
f(1049600, 1024); f(1049600, 1024);
f(1050625, 1025); f(1050625, 1025);
x = 2047; x = 2047;
f(0, 0);
f(2047, 1); f(2047, 1);
f(4094, 2); f(4094, 2);
f(6141, 3); f(6141, 3);
...@@ -536,6 +583,7 @@ f(2096128, 1024); ...@@ -536,6 +583,7 @@ f(2096128, 1024);
f(2098175, 1025); f(2098175, 1025);
f(4190209, 2047); f(4190209, 2047);
x = 2048; x = 2048;
f(0, 0);
f(2048, 1); f(2048, 1);
f(4096, 2); f(4096, 2);
f(6144, 3); f(6144, 3);
...@@ -568,6 +616,7 @@ f(2099200, 1025); ...@@ -568,6 +616,7 @@ f(2099200, 1025);
f(4192256, 2047); f(4192256, 2047);
f(4194304, 2048); f(4194304, 2048);
x = 2049; x = 2049;
f(0, 0);
f(2049, 1); f(2049, 1);
f(4098, 2); f(4098, 2);
f(6147, 3); f(6147, 3);
...@@ -601,6 +650,7 @@ f(4194303, 2047); ...@@ -601,6 +650,7 @@ f(4194303, 2047);
f(4196352, 2048); f(4196352, 2048);
f(4198401, 2049); f(4198401, 2049);
x = 4095; x = 4095;
f(0, 0);
f(4095, 1); f(4095, 1);
f(8190, 2); f(8190, 2);
f(12285, 3); f(12285, 3);
...@@ -635,6 +685,7 @@ f(8386560, 2048); ...@@ -635,6 +685,7 @@ f(8386560, 2048);
f(8390655, 2049); f(8390655, 2049);
f(16769025, 4095); f(16769025, 4095);
x = 4096; x = 4096;
f(0, 0);
f(4096, 1); f(4096, 1);
f(8192, 2); f(8192, 2);
f(12288, 3); f(12288, 3);
...@@ -670,6 +721,7 @@ f(8392704, 2049); ...@@ -670,6 +721,7 @@ f(8392704, 2049);
f(16773120, 4095); f(16773120, 4095);
f(16777216, 4096); f(16777216, 4096);
x = 4097; x = 4097;
f(0, 0);
f(4097, 1); f(4097, 1);
f(8194, 2); f(8194, 2);
f(12291, 3); f(12291, 3);
...@@ -706,6 +758,7 @@ f(16777215, 4095); ...@@ -706,6 +758,7 @@ f(16777215, 4095);
f(16781312, 4096); f(16781312, 4096);
f(16785409, 4097); f(16785409, 4097);
x = 8191; x = 8191;
f(0, 0);
f(8191, 1); f(8191, 1);
f(16382, 2); f(16382, 2);
f(24573, 3); f(24573, 3);
...@@ -743,6 +796,7 @@ f(33550336, 4096); ...@@ -743,6 +796,7 @@ f(33550336, 4096);
f(33558527, 4097); f(33558527, 4097);
f(67092481, 8191); f(67092481, 8191);
x = 8192; x = 8192;
f(0, 0);
f(8192, 1); f(8192, 1);
f(16384, 2); f(16384, 2);
f(24576, 3); f(24576, 3);
...@@ -781,6 +835,7 @@ f(33562624, 4097); ...@@ -781,6 +835,7 @@ f(33562624, 4097);
f(67100672, 8191); f(67100672, 8191);
f(67108864, 8192); f(67108864, 8192);
x = 8193; x = 8193;
f(0, 0);
f(8193, 1); f(8193, 1);
f(16386, 2); f(16386, 2);
f(24579, 3); f(24579, 3);
...@@ -820,6 +875,7 @@ f(67108863, 8191); ...@@ -820,6 +875,7 @@ f(67108863, 8191);
f(67117056, 8192); f(67117056, 8192);
f(67125249, 8193); f(67125249, 8193);
x = 16383; x = 16383;
f(0, 0);
f(16383, 1); f(16383, 1);
f(32766, 2); f(32766, 2);
f(49149, 3); f(49149, 3);
...@@ -860,6 +916,7 @@ f(134209536, 8192); ...@@ -860,6 +916,7 @@ f(134209536, 8192);
f(134225919, 8193); f(134225919, 8193);
f(268402689, 16383); f(268402689, 16383);
x = 16384; x = 16384;
f(0, 0);
f(16384, 1); f(16384, 1);
f(32768, 2); f(32768, 2);
f(49152, 3); f(49152, 3);
...@@ -901,6 +958,7 @@ f(134234112, 8193); ...@@ -901,6 +958,7 @@ f(134234112, 8193);
f(268419072, 16383); f(268419072, 16383);
f(268435456, 16384); f(268435456, 16384);
x = 16385; x = 16385;
f(0, 0);
f(16385, 1); f(16385, 1);
f(32770, 2); f(32770, 2);
f(49155, 3); f(49155, 3);
...@@ -943,6 +1001,7 @@ f(268435455, 16383); ...@@ -943,6 +1001,7 @@ f(268435455, 16383);
f(268451840, 16384); f(268451840, 16384);
f(268468225, 16385); f(268468225, 16385);
x = 32767; x = 32767;
f(0, 0);
f(32767, 1); f(32767, 1);
f(65534, 2); f(65534, 2);
f(98301, 3); f(98301, 3);
...@@ -986,6 +1045,7 @@ f(536854528, 16384); ...@@ -986,6 +1045,7 @@ f(536854528, 16384);
f(536887295, 16385); f(536887295, 16385);
f(1073676289, 32767); f(1073676289, 32767);
x = 32768; x = 32768;
f(0, 0);
f(32768, 1); f(32768, 1);
f(65536, 2); f(65536, 2);
f(98304, 3); f(98304, 3);
...@@ -1030,6 +1090,7 @@ f(536903680, 16385); ...@@ -1030,6 +1090,7 @@ f(536903680, 16385);
f(1073709056, 32767); f(1073709056, 32767);
f(1073741824, 32768); f(1073741824, 32768);
x = 32769; x = 32769;
f(0, 0);
f(32769, 1); f(32769, 1);
f(65538, 2); f(65538, 2);
f(98307, 3); f(98307, 3);
...@@ -1075,6 +1136,7 @@ f(1073741823, 32767); ...@@ -1075,6 +1136,7 @@ f(1073741823, 32767);
f(1073774592, 32768); f(1073774592, 32768);
f(1073807361, 32769); f(1073807361, 32769);
x = 65535; x = 65535;
f(0, 0);
f(65535, 1); f(65535, 1);
f(131070, 2); f(131070, 2);
f(196605, 3); f(196605, 3);
...@@ -1121,6 +1183,7 @@ f(2147450880, 32768); ...@@ -1121,6 +1183,7 @@ f(2147450880, 32768);
f(2147516415, 32769); f(2147516415, 32769);
f(4294836225, 65535); f(4294836225, 65535);
x = 65536; x = 65536;
f(0, 0);
f(65536, 1); f(65536, 1);
f(131072, 2); f(131072, 2);
f(196608, 3); f(196608, 3);
...@@ -1168,6 +1231,7 @@ f(2147549184, 32769); ...@@ -1168,6 +1231,7 @@ f(2147549184, 32769);
f(4294901760, 65535); f(4294901760, 65535);
f(4294967296, 65536); f(4294967296, 65536);
x = 65537; x = 65537;
f(0, 0);
f(65537, 1); f(65537, 1);
f(131074, 2); f(131074, 2);
f(196611, 3); f(196611, 3);
...@@ -1216,6 +1280,7 @@ f(4294967295, 65535); ...@@ -1216,6 +1280,7 @@ f(4294967295, 65535);
f(4295032832, 65536); f(4295032832, 65536);
f(4295098369, 65537); f(4295098369, 65537);
x = 131071; x = 131071;
f(0, 0);
f(131071, 1); f(131071, 1);
f(262142, 2); f(262142, 2);
f(393213, 3); f(393213, 3);
...@@ -1265,6 +1330,7 @@ f(8589869056, 65536); ...@@ -1265,6 +1330,7 @@ f(8589869056, 65536);
f(8590000127, 65537); f(8590000127, 65537);
f(17179607041, 131071); f(17179607041, 131071);
x = 131072; x = 131072;
f(0, 0);
f(131072, 1); f(131072, 1);
f(262144, 2); f(262144, 2);
f(393216, 3); f(393216, 3);
...@@ -1315,6 +1381,7 @@ f(8590065664, 65537); ...@@ -1315,6 +1381,7 @@ f(8590065664, 65537);
f(17179738112, 131071); f(17179738112, 131071);
f(17179869184, 131072); f(17179869184, 131072);
x = 131073; x = 131073;
f(0, 0);
f(131073, 1); f(131073, 1);
f(262146, 2); f(262146, 2);
f(393219, 3); f(393219, 3);
...@@ -1366,6 +1433,7 @@ f(17179869183, 131071); ...@@ -1366,6 +1433,7 @@ f(17179869183, 131071);
f(17180000256, 131072); f(17180000256, 131072);
f(17180131329, 131073); f(17180131329, 131073);
x = 262143; x = 262143;
f(0, 0);
f(262143, 1); f(262143, 1);
f(524286, 2); f(524286, 2);
f(786429, 3); f(786429, 3);
...@@ -1418,6 +1486,7 @@ f(34359607296, 131072); ...@@ -1418,6 +1486,7 @@ f(34359607296, 131072);
f(34359869439, 131073); f(34359869439, 131073);
f(68718952449, 262143); f(68718952449, 262143);
x = 262144; x = 262144;
f(0, 0);
f(262144, 1); f(262144, 1);
f(524288, 2); f(524288, 2);
f(786432, 3); f(786432, 3);
...@@ -1471,6 +1540,7 @@ f(34360000512, 131073); ...@@ -1471,6 +1540,7 @@ f(34360000512, 131073);
f(68719214592, 262143); f(68719214592, 262143);
f(68719476736, 262144); f(68719476736, 262144);
x = 262145; x = 262145;
f(0, 0);
f(262145, 1); f(262145, 1);
f(524290, 2); f(524290, 2);
f(786435, 3); f(786435, 3);
...@@ -1525,6 +1595,7 @@ f(68719476735, 262143); ...@@ -1525,6 +1595,7 @@ f(68719476735, 262143);
f(68719738880, 262144); f(68719738880, 262144);
f(68720001025, 262145); f(68720001025, 262145);
x = 524287; x = 524287;
f(0, 0);
f(524287, 1); f(524287, 1);
f(1048574, 2); f(1048574, 2);
f(1572861, 3); f(1572861, 3);
...@@ -1580,6 +1651,7 @@ f(137438691328, 262144); ...@@ -1580,6 +1651,7 @@ f(137438691328, 262144);
f(137439215615, 262145); f(137439215615, 262145);
f(274876858369, 524287); f(274876858369, 524287);
x = 524288; x = 524288;
f(0, 0);
f(524288, 1); f(524288, 1);
f(1048576, 2); f(1048576, 2);
f(1572864, 3); f(1572864, 3);
...@@ -1636,6 +1708,7 @@ f(137439477760, 262145); ...@@ -1636,6 +1708,7 @@ f(137439477760, 262145);
f(274877382656, 524287); f(274877382656, 524287);
f(274877906944, 524288); f(274877906944, 524288);
x = 524289; x = 524289;
f(0, 0);
f(524289, 1); f(524289, 1);
f(1048578, 2); f(1048578, 2);
f(1572867, 3); f(1572867, 3);
...@@ -1693,6 +1766,7 @@ f(274877906943, 524287); ...@@ -1693,6 +1766,7 @@ f(274877906943, 524287);
f(274878431232, 524288); f(274878431232, 524288);
f(274878955521, 524289); f(274878955521, 524289);
x = 1048575; x = 1048575;
f(0, 0);
f(1048575, 1); f(1048575, 1);
f(2097150, 2); f(2097150, 2);
f(3145725, 3); f(3145725, 3);
...@@ -1751,6 +1825,7 @@ f(549755289600, 524288); ...@@ -1751,6 +1825,7 @@ f(549755289600, 524288);
f(549756338175, 524289); f(549756338175, 524289);
f(1099509530625, 1048575); f(1099509530625, 1048575);
x = 1048576; x = 1048576;
f(0, 0);
f(1048576, 1); f(1048576, 1);
f(2097152, 2); f(2097152, 2);
f(3145728, 3); f(3145728, 3);
...@@ -1810,6 +1885,7 @@ f(549756862464, 524289); ...@@ -1810,6 +1885,7 @@ f(549756862464, 524289);
f(1099510579200, 1048575); f(1099510579200, 1048575);
f(1099511627776, 1048576); f(1099511627776, 1048576);
x = 1048577; x = 1048577;
f(0, 0);
f(1048577, 1); f(1048577, 1);
f(2097154, 2); f(2097154, 2);
f(3145731, 3); f(3145731, 3);
...@@ -1870,6 +1946,7 @@ f(1099511627775, 1048575); ...@@ -1870,6 +1946,7 @@ f(1099511627775, 1048575);
f(1099512676352, 1048576); f(1099512676352, 1048576);
f(1099513724929, 1048577); f(1099513724929, 1048577);
x = 2097151; x = 2097151;
f(0, 0);
f(2097151, 1); f(2097151, 1);
f(4194302, 2); f(4194302, 2);
f(6291453, 3); f(6291453, 3);
...@@ -1931,6 +2008,7 @@ f(2199022206976, 1048576); ...@@ -1931,6 +2008,7 @@ f(2199022206976, 1048576);
f(2199024304127, 1048577); f(2199024304127, 1048577);
f(4398042316801, 2097151); f(4398042316801, 2097151);
x = 2097152; x = 2097152;
f(0, 0);
f(2097152, 1); f(2097152, 1);
f(4194304, 2); f(4194304, 2);
f(6291456, 3); f(6291456, 3);
...@@ -1993,6 +2071,7 @@ f(2199025352704, 1048577); ...@@ -1993,6 +2071,7 @@ f(2199025352704, 1048577);
f(4398044413952, 2097151); f(4398044413952, 2097151);
f(4398046511104, 2097152); f(4398046511104, 2097152);
x = 2097153; x = 2097153;
f(0, 0);
f(2097153, 1); f(2097153, 1);
f(4194306, 2); f(4194306, 2);
f(6291459, 3); f(6291459, 3);
...@@ -2056,6 +2135,7 @@ f(4398046511103, 2097151); ...@@ -2056,6 +2135,7 @@ f(4398046511103, 2097151);
f(4398048608256, 2097152); f(4398048608256, 2097152);
f(4398050705409, 2097153); f(4398050705409, 2097153);
x = 4194303; x = 4194303;
f(0, 0);
f(4194303, 1); f(4194303, 1);
f(8388606, 2); f(8388606, 2);
f(12582909, 3); f(12582909, 3);
...@@ -2120,6 +2200,7 @@ f(8796090925056, 2097152); ...@@ -2120,6 +2200,7 @@ f(8796090925056, 2097152);
f(8796095119359, 2097153); f(8796095119359, 2097153);
f(17592177655809, 4194303); f(17592177655809, 4194303);
x = 4194304; x = 4194304;
f(0, 0);
f(4194304, 1); f(4194304, 1);
f(8388608, 2); f(8388608, 2);
f(12582912, 3); f(12582912, 3);
...@@ -2185,6 +2266,7 @@ f(8796097216512, 2097153); ...@@ -2185,6 +2266,7 @@ f(8796097216512, 2097153);
f(17592181850112, 4194303); f(17592181850112, 4194303);
f(17592186044416, 4194304); f(17592186044416, 4194304);
x = 4194305; x = 4194305;
f(0, 0);
f(4194305, 1); f(4194305, 1);
f(8388610, 2); f(8388610, 2);
f(12582915, 3); f(12582915, 3);
...@@ -2251,6 +2333,7 @@ f(17592186044415, 4194303); ...@@ -2251,6 +2333,7 @@ f(17592186044415, 4194303);
f(17592190238720, 4194304); f(17592190238720, 4194304);
f(17592194433025, 4194305); f(17592194433025, 4194305);
x = 8388607; x = 8388607;
f(0, 0);
f(8388607, 1); f(8388607, 1);
f(16777214, 2); f(16777214, 2);
f(25165821, 3); f(25165821, 3);
...@@ -2318,6 +2401,7 @@ f(35184367894528, 4194304); ...@@ -2318,6 +2401,7 @@ f(35184367894528, 4194304);
f(35184376283135, 4194305); f(35184376283135, 4194305);
f(70368727400449, 8388607); f(70368727400449, 8388607);
x = 8388608; x = 8388608;
f(0, 0);
f(8388608, 1); f(8388608, 1);
f(16777216, 2); f(16777216, 2);
f(25165824, 3); f(25165824, 3);
...@@ -2386,6 +2470,7 @@ f(35184380477440, 4194305); ...@@ -2386,6 +2470,7 @@ f(35184380477440, 4194305);
f(70368735789056, 8388607); f(70368735789056, 8388607);
f(70368744177664, 8388608); f(70368744177664, 8388608);
x = 8388609; x = 8388609;
f(0, 0);
f(8388609, 1); f(8388609, 1);
f(16777218, 2); f(16777218, 2);
f(25165827, 3); f(25165827, 3);
...@@ -2455,6 +2540,7 @@ f(70368744177663, 8388607); ...@@ -2455,6 +2540,7 @@ f(70368744177663, 8388607);
f(70368752566272, 8388608); f(70368752566272, 8388608);
f(70368760954881, 8388609); f(70368760954881, 8388609);
x = 16777215; x = 16777215;
f(0, 0);
f(16777215, 1); f(16777215, 1);
f(33554430, 2); f(33554430, 2);
f(50331645, 3); f(50331645, 3);
...@@ -2525,6 +2611,7 @@ f(140737479966720, 8388608); ...@@ -2525,6 +2611,7 @@ f(140737479966720, 8388608);
f(140737496743935, 8388609); f(140737496743935, 8388609);
f(281474943156225, 16777215); f(281474943156225, 16777215);
x = 16777216; x = 16777216;
f(0, 0);
f(16777216, 1); f(16777216, 1);
f(33554432, 2); f(33554432, 2);
f(50331648, 3); f(50331648, 3);
...@@ -2596,6 +2683,7 @@ f(140737505132544, 8388609); ...@@ -2596,6 +2683,7 @@ f(140737505132544, 8388609);
f(281474959933440, 16777215); f(281474959933440, 16777215);
f(281474976710656, 16777216); f(281474976710656, 16777216);
x = 16777217; x = 16777217;
f(0, 0);
f(16777217, 1); f(16777217, 1);
f(33554434, 2); f(33554434, 2);
f(50331651, 3); f(50331651, 3);
...@@ -2668,6 +2756,7 @@ f(281474976710655, 16777215); ...@@ -2668,6 +2756,7 @@ f(281474976710655, 16777215);
f(281474993487872, 16777216); f(281474993487872, 16777216);
f(281475010265089, 16777217); f(281475010265089, 16777217);
x = 33554431; x = 33554431;
f(0, 0);
f(33554431, 1); f(33554431, 1);
f(67108862, 2); f(67108862, 2);
f(100663293, 3); f(100663293, 3);
...@@ -2741,6 +2830,7 @@ f(562949936644096, 16777216); ...@@ -2741,6 +2830,7 @@ f(562949936644096, 16777216);
f(562949970198527, 16777217); f(562949970198527, 16777217);
f(1125899839733761, 33554431); f(1125899839733761, 33554431);
x = 33554432; x = 33554432;
f(0, 0);
f(33554432, 1); f(33554432, 1);
f(67108864, 2); f(67108864, 2);
f(100663296, 3); f(100663296, 3);
...@@ -2815,6 +2905,7 @@ f(562949986975744, 16777217); ...@@ -2815,6 +2905,7 @@ f(562949986975744, 16777217);
f(1125899873288192, 33554431); f(1125899873288192, 33554431);
f(1125899906842624, 33554432); f(1125899906842624, 33554432);
x = 33554433; x = 33554433;
f(0, 0);
f(33554433, 1); f(33554433, 1);
f(67108866, 2); f(67108866, 2);
f(100663299, 3); f(100663299, 3);
...@@ -2890,6 +2981,7 @@ f(1125899906842623, 33554431); ...@@ -2890,6 +2981,7 @@ f(1125899906842623, 33554431);
f(1125899940397056, 33554432); f(1125899940397056, 33554432);
f(1125899973951489, 33554433); f(1125899973951489, 33554433);
x = 67108863; x = 67108863;
f(0, 0);
f(67108863, 1); f(67108863, 1);
f(134217726, 2); f(134217726, 2);
f(201326589, 3); f(201326589, 3);
...@@ -2962,6 +3054,7 @@ f(1125899822956545, 16777215); ...@@ -2962,6 +3054,7 @@ f(1125899822956545, 16777215);
f(1125899890065408, 16777216); f(1125899890065408, 16777216);
f(1125899957174271, 16777217); f(1125899957174271, 16777217);
x = 67108864; x = 67108864;
f(0, 0);
f(67108864, 1); f(67108864, 1);
f(134217728, 2); f(134217728, 2);
f(201326592, 3); f(201326592, 3);
...@@ -3034,6 +3127,7 @@ f(1125899839733760, 16777215); ...@@ -3034,6 +3127,7 @@ f(1125899839733760, 16777215);
f(1125899906842624, 16777216); f(1125899906842624, 16777216);
f(1125899973951488, 16777217); f(1125899973951488, 16777217);
x = 67108865; x = 67108865;
f(0, 0);
f(67108865, 1); f(67108865, 1);
f(134217730, 2); f(134217730, 2);
f(201326595, 3); f(201326595, 3);
...@@ -3106,6 +3200,7 @@ f(1125899856510975, 16777215); ...@@ -3106,6 +3200,7 @@ f(1125899856510975, 16777215);
f(1125899923619840, 16777216); f(1125899923619840, 16777216);
f(1125899990728705, 16777217); f(1125899990728705, 16777217);
x = 134217727; x = 134217727;
f(0, 0);
f(134217727, 1); f(134217727, 1);
f(268435454, 2); f(268435454, 2);
f(402653181, 3); f(402653181, 3);
...@@ -3175,6 +3270,7 @@ f(1125899764236289, 8388607); ...@@ -3175,6 +3270,7 @@ f(1125899764236289, 8388607);
f(1125899898454016, 8388608); f(1125899898454016, 8388608);
f(1125900032671743, 8388609); f(1125900032671743, 8388609);
x = 134217728; x = 134217728;
f(0, 0);
f(134217728, 1); f(134217728, 1);
f(268435456, 2); f(268435456, 2);
f(402653184, 3); f(402653184, 3);
...@@ -3244,6 +3340,7 @@ f(1125899772624896, 8388607); ...@@ -3244,6 +3340,7 @@ f(1125899772624896, 8388607);
f(1125899906842624, 8388608); f(1125899906842624, 8388608);
f(1125900041060352, 8388609); f(1125900041060352, 8388609);
x = 134217729; x = 134217729;
f(0, 0);
f(134217729, 1); f(134217729, 1);
f(268435458, 2); f(268435458, 2);
f(402653187, 3); f(402653187, 3);
...@@ -3313,6 +3410,7 @@ f(1125899781013503, 8388607); ...@@ -3313,6 +3410,7 @@ f(1125899781013503, 8388607);
f(1125899915231232, 8388608); f(1125899915231232, 8388608);
f(1125900049448961, 8388609); f(1125900049448961, 8388609);
x = 268435455; x = 268435455;
f(0, 0);
f(268435455, 1); f(268435455, 1);
f(536870910, 2); f(536870910, 2);
f(805306365, 3); f(805306365, 3);
...@@ -3379,6 +3477,7 @@ f(1125899634212865, 4194303); ...@@ -3379,6 +3477,7 @@ f(1125899634212865, 4194303);
f(1125899902648320, 4194304); f(1125899902648320, 4194304);
f(1125900171083775, 4194305); f(1125900171083775, 4194305);
x = 268435456; x = 268435456;
f(0, 0);
f(268435456, 1); f(268435456, 1);
f(536870912, 2); f(536870912, 2);
f(805306368, 3); f(805306368, 3);
...@@ -3445,6 +3544,7 @@ f(1125899638407168, 4194303); ...@@ -3445,6 +3544,7 @@ f(1125899638407168, 4194303);
f(1125899906842624, 4194304); f(1125899906842624, 4194304);
f(1125900175278080, 4194305); f(1125900175278080, 4194305);
x = 268435457; x = 268435457;
f(0, 0);
f(268435457, 1); f(268435457, 1);
f(536870914, 2); f(536870914, 2);
f(805306371, 3); f(805306371, 3);
...@@ -3511,6 +3611,7 @@ f(1125899642601471, 4194303); ...@@ -3511,6 +3611,7 @@ f(1125899642601471, 4194303);
f(1125899911036928, 4194304); f(1125899911036928, 4194304);
f(1125900179472385, 4194305); f(1125900179472385, 4194305);
x = 536870911; x = 536870911;
f(0, 0);
f(536870911, 1); f(536870911, 1);
f(1073741822, 2); f(1073741822, 2);
f(1610612733, 3); f(1610612733, 3);
...@@ -3574,6 +3675,7 @@ f(1125899367874561, 2097151); ...@@ -3574,6 +3675,7 @@ f(1125899367874561, 2097151);
f(1125899904745472, 2097152); f(1125899904745472, 2097152);
f(1125900441616383, 2097153); f(1125900441616383, 2097153);
x = 536870912; x = 536870912;
f(0, 0);
f(536870912, 1); f(536870912, 1);
f(1073741824, 2); f(1073741824, 2);
f(1610612736, 3); f(1610612736, 3);
...@@ -3637,6 +3739,7 @@ f(1125899369971712, 2097151); ...@@ -3637,6 +3739,7 @@ f(1125899369971712, 2097151);
f(1125899906842624, 2097152); f(1125899906842624, 2097152);
f(1125900443713536, 2097153); f(1125900443713536, 2097153);
x = 536870913; x = 536870913;
f(0, 0);
f(536870913, 1); f(536870913, 1);
f(1073741826, 2); f(1073741826, 2);
f(1610612739, 3); f(1610612739, 3);
...@@ -3700,6 +3803,7 @@ f(1125899372068863, 2097151); ...@@ -3700,6 +3803,7 @@ f(1125899372068863, 2097151);
f(1125899908939776, 2097152); f(1125899908939776, 2097152);
f(1125900445810689, 2097153); f(1125900445810689, 2097153);
x = 1073741823; x = 1073741823;
f(0, 0);
f(1073741823, 1); f(1073741823, 1);
f(2147483646, 2); f(2147483646, 2);
f(3221225469, 3); f(3221225469, 3);
...@@ -3760,6 +3864,7 @@ f(1125898832052225, 1048575); ...@@ -3760,6 +3864,7 @@ f(1125898832052225, 1048575);
f(1125899905794048, 1048576); f(1125899905794048, 1048576);
f(1125900979535871, 1048577); f(1125900979535871, 1048577);
x = 1073741824; x = 1073741824;
f(0, 0);
f(1073741824, 1); f(1073741824, 1);
f(2147483648, 2); f(2147483648, 2);
f(3221225472, 3); f(3221225472, 3);
...@@ -3820,6 +3925,7 @@ f(1125898833100800, 1048575); ...@@ -3820,6 +3925,7 @@ f(1125898833100800, 1048575);
f(1125899906842624, 1048576); f(1125899906842624, 1048576);
f(1125900980584448, 1048577); f(1125900980584448, 1048577);
x = 1073741825; x = 1073741825;
f(0, 0);
f(1073741825, 1); f(1073741825, 1);
f(2147483650, 2); f(2147483650, 2);
f(3221225475, 3); f(3221225475, 3);
...@@ -3880,6 +3986,7 @@ f(1125898834149375, 1048575); ...@@ -3880,6 +3986,7 @@ f(1125898834149375, 1048575);
f(1125899907891200, 1048576); f(1125899907891200, 1048576);
f(1125900981633025, 1048577); f(1125900981633025, 1048577);
x = 2147483647; x = 2147483647;
f(0, 0);
f(2147483647, 1); f(2147483647, 1);
f(4294967294, 2); f(4294967294, 2);
f(6442450941, 3); f(6442450941, 3);
...@@ -3937,6 +4044,7 @@ f(1125897758834689, 524287); ...@@ -3937,6 +4044,7 @@ f(1125897758834689, 524287);
f(1125899906318336, 524288); f(1125899906318336, 524288);
f(1125902053801983, 524289); f(1125902053801983, 524289);
x = 2147483648; x = 2147483648;
f(0, 0);
f(2147483648, 1); f(2147483648, 1);
f(4294967296, 2); f(4294967296, 2);
f(6442450944, 3); f(6442450944, 3);
...@@ -3994,6 +4102,7 @@ f(1125897759358976, 524287); ...@@ -3994,6 +4102,7 @@ f(1125897759358976, 524287);
f(1125899906842624, 524288); f(1125899906842624, 524288);
f(1125902054326272, 524289); f(1125902054326272, 524289);
x = 2147483649; x = 2147483649;
f(0, 0);
f(2147483649, 1); f(2147483649, 1);
f(4294967298, 2); f(4294967298, 2);
f(6442450947, 3); f(6442450947, 3);
...@@ -4051,6 +4160,7 @@ f(1125897759883263, 524287); ...@@ -4051,6 +4160,7 @@ f(1125897759883263, 524287);
f(1125899907366912, 524288); f(1125899907366912, 524288);
f(1125902054850561, 524289); f(1125902054850561, 524289);
x = 4294967295; x = 4294967295;
f(0, 0);
f(4294967295, 1); f(4294967295, 1);
f(8589934590, 2); f(8589934590, 2);
f(12884901885, 3); f(12884901885, 3);
...@@ -4105,6 +4215,7 @@ f(1125895611613185, 262143); ...@@ -4105,6 +4215,7 @@ f(1125895611613185, 262143);
f(1125899906580480, 262144); f(1125899906580480, 262144);
f(1125904201547775, 262145); f(1125904201547775, 262145);
x = 4294967296; x = 4294967296;
f(0, 0);
f(4294967296, 1); f(4294967296, 1);
f(8589934592, 2); f(8589934592, 2);
f(12884901888, 3); f(12884901888, 3);
...@@ -4159,6 +4270,7 @@ f(1125895611875328, 262143); ...@@ -4159,6 +4270,7 @@ f(1125895611875328, 262143);
f(1125899906842624, 262144); f(1125899906842624, 262144);
f(1125904201809920, 262145); f(1125904201809920, 262145);
x = 4294967297; x = 4294967297;
f(0, 0);
f(4294967297, 1); f(4294967297, 1);
f(8589934594, 2); f(8589934594, 2);
f(12884901891, 3); f(12884901891, 3);
...@@ -4213,6 +4325,7 @@ f(1125895612137471, 262143); ...@@ -4213,6 +4325,7 @@ f(1125895612137471, 262143);
f(1125899907104768, 262144); f(1125899907104768, 262144);
f(1125904202072065, 262145); f(1125904202072065, 262145);
x = 8589934591; x = 8589934591;
f(0, 0);
f(8589934591, 1); f(8589934591, 1);
f(17179869182, 2); f(17179869182, 2);
f(25769803773, 3); f(25769803773, 3);
...@@ -4264,6 +4377,7 @@ f(1125891316776961, 131071); ...@@ -4264,6 +4377,7 @@ f(1125891316776961, 131071);
f(1125899906711552, 131072); f(1125899906711552, 131072);
f(1125908496646143, 131073); f(1125908496646143, 131073);
x = 8589934592; x = 8589934592;
f(0, 0);
f(8589934592, 1); f(8589934592, 1);
f(17179869184, 2); f(17179869184, 2);
f(25769803776, 3); f(25769803776, 3);
...@@ -4315,6 +4429,7 @@ f(1125891316908032, 131071); ...@@ -4315,6 +4429,7 @@ f(1125891316908032, 131071);
f(1125899906842624, 131072); f(1125899906842624, 131072);
f(1125908496777216, 131073); f(1125908496777216, 131073);
x = 8589934593; x = 8589934593;
f(0, 0);
f(8589934593, 1); f(8589934593, 1);
f(17179869186, 2); f(17179869186, 2);
f(25769803779, 3); f(25769803779, 3);
...@@ -4366,6 +4481,7 @@ f(1125891317039103, 131071); ...@@ -4366,6 +4481,7 @@ f(1125891317039103, 131071);
f(1125899906973696, 131072); f(1125899906973696, 131072);
f(1125908496908289, 131073); f(1125908496908289, 131073);
x = 17179869183; x = 17179869183;
f(0, 0);
f(17179869183, 1); f(17179869183, 1);
f(34359738366, 2); f(34359738366, 2);
f(51539607549, 3); f(51539607549, 3);
...@@ -4414,6 +4530,7 @@ f(1125882726907905, 65535); ...@@ -4414,6 +4530,7 @@ f(1125882726907905, 65535);
f(1125899906777088, 65536); f(1125899906777088, 65536);
f(1125917086646271, 65537); f(1125917086646271, 65537);
x = 17179869184; x = 17179869184;
f(0, 0);
f(17179869184, 1); f(17179869184, 1);
f(34359738368, 2); f(34359738368, 2);
f(51539607552, 3); f(51539607552, 3);
...@@ -4462,6 +4579,7 @@ f(1125882726973440, 65535); ...@@ -4462,6 +4579,7 @@ f(1125882726973440, 65535);
f(1125899906842624, 65536); f(1125899906842624, 65536);
f(1125917086711808, 65537); f(1125917086711808, 65537);
x = 17179869185; x = 17179869185;
f(0, 0);
f(17179869185, 1); f(17179869185, 1);
f(34359738370, 2); f(34359738370, 2);
f(51539607555, 3); f(51539607555, 3);
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
function IsNegativeZero(x) { function IsNegativeZero(x) {
assertEquals(0, x); assertTrue(x == 0); // Is 0 or -0.
var y = 1 / x; var y = 1 / x;
assertFalse(isFinite(y)); assertFalse(isFinite(y));
return y < 0; return y < 0;
......
...@@ -109,5 +109,5 @@ function foo(x) { ...@@ -109,5 +109,5 @@ function foo(x) {
return -x; return -x;
} }
assertEquals(0, foo(x)); assertEquals(-0, foo(x));
assertEquals(0, foo(x)); assertEquals(-0, foo(x));
...@@ -190,7 +190,7 @@ assertEquals(100, toNumber("000100")); ...@@ -190,7 +190,7 @@ assertEquals(100, toNumber("000100"));
assertEquals(Infinity, toNumber("1e999"), "1e999"); assertEquals(Infinity, toNumber("1e999"), "1e999");
assertEquals(-Infinity, toNumber("-1e999")); assertEquals(-Infinity, toNumber("-1e999"));
assertEquals(0, toNumber("1e-999")); assertEquals(0, toNumber("1e-999"));
assertEquals(0, toNumber("-1e-999")); assertEquals(-0, toNumber("-1e-999"));
assertEquals(Infinity, 1 / toNumber("1e-999"), "1e-999"); assertEquals(Infinity, 1 / toNumber("1e-999"), "1e-999");
assertEquals(-Infinity, 1 / toNumber("-1e-999")); assertEquals(-Infinity, 1 / toNumber("-1e-999"));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment