function ceil(x) { // A nice but not always efficient polyfill. return -Math.floor(-x);
}
function doubleCheck(g) { for (var j = 0; j < 200; j++) { var i = j;
assertEq(g(i), i);
assertEq(g(i+.5), i+1);
assertEq(g(-i), -i);
assertEq(g(-i-.5), -i);
}
}
function floatCheck(g, val) { for (var j = 0; j < 200; j++) { var i = Math.fround(j);
assertEq(g(i), i);
assertEq(g(i+.5), i+1);
assertEq(g(-i), -i);
assertEq(g(-i-.5), -i);
}
}
function testBailout(value) { var dceil = eval('(function(x) { return Math.ceil(x) })');
log('start double');
doubleCheck(dceil);
log('bailout'); // At this point, the compiled code should bailout, if 'value' is in the // edge case set.
assertEq(dceil(value), ceil(value));
var INT_MAX = Math.pow(2, 31) - 1; var INT_MIN = INT_MAX + 1 | 0; var UINT_MAX = Math.pow(2, 32) - 1;
// Values in ]-1; -0]
testBailout(-0);
testBailout(-.5); // Values outside the INT32 range, when represented in either double or // single precision
testBailout(INT_MAX + .5);
testBailout(INT_MIN - 129); // (UINT_MAX; +inf] have special behavior on ARM
testBailout(UINT_MAX);
testBailout(UINT_MAX + .5);
testBailout(UINT_MAX + 1);
testBailout(UINT_MAX + 2); // BatNaN
testBailout(NaN);
Messung V0.5
¤ Dauer der Verarbeitung: 0.0 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.