fast-check
Version:
Property based testing framework for JavaScript (like QuickCheck)
37 lines (36 loc) • 1.24 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.integerLogLike = integerLogLike;
exports.bigIntLogLike = bigIntLogLike;
exports.biasNumericRange = biasNumericRange;
const globals_1 = require("../../../utils/globals");
const safeMathFloor = Math.floor;
const safeMathLog = Math.log;
function integerLogLike(v) {
return safeMathFloor(safeMathLog(v) / safeMathLog(2));
}
function bigIntLogLike(v) {
if (v === (0, globals_1.BigInt)(0))
return (0, globals_1.BigInt)(0);
return (0, globals_1.BigInt)((0, globals_1.String)(v).length);
}
function biasNumericRange(min, max, logLike) {
if (min === max) {
return [{ min: min, max: max }];
}
if (min < 0 && max > 0) {
const logMin = logLike(-min);
const logMax = logLike(max);
return [
{ min: -logMin, max: logMax },
{ min: (max - logMax), max: max },
{ min: min, max: min + logMin },
];
}
const logGap = logLike((max - min));
const arbCloseToMin = { min: min, max: min + logGap };
const arbCloseToMax = { min: (max - logGap), max: max };
return min < 0
? [arbCloseToMax, arbCloseToMin]
: [arbCloseToMin, arbCloseToMax];
}
;