UNPKG

fast-check

Version:

Property based testing framework for JavaScript (like QuickCheck)

29 lines (28 loc) 895 B
import { integer } from './IntegerArbitrary.js'; import { tuple } from './TupleArbitrary.js'; function next(n) { return integer(0, (1 << n) - 1); } const floatInternal = () => { return next(24).map((v) => v / (1 << 24)); }; function float(a, b) { if (a === undefined) return floatInternal(); if (b === undefined) return floatInternal().map((v) => v * a); return floatInternal().map((v) => a + v * (b - a)); } const doubleFactor = Math.pow(2, 27); const doubleDivisor = Math.pow(2, -53); const doubleInternal = () => { return tuple(next(26), next(27)).map((v) => (v[0] * doubleFactor + v[1]) * doubleDivisor); }; function double(a, b) { if (a === undefined) return doubleInternal(); if (b === undefined) return doubleInternal().map((v) => v * a); return doubleInternal().map((v) => a + v * (b - a)); } export { float, double };