blockulator.com is home to FP127: higher precision in the same 256-bit word. The dominant Ethereum math libraries drop precision in dangerous ways; FP127 fills the whole word with correct information, offers thirty-seven operations, and stays gas-competitive. One Yul source is both a deployed contract and an inlinable Solidity library. Reading it is free, and the terminal-precision ladder shows what it buys: after a year of daily interest, WAD libraries are right to 16 digits and FP127 to 36.
See the ladder at blockulator.com →
What it is
A signed 127.128 fixed-point library for the EVM, written as a single Yul source that generates two forms: a deployed object on Ethereum's Sepolia test network that any contract can call, and an inlinable Solidity library with the same code, proven equal on the full input domain. It gives about 38 decimal digits in a single 256-bit word, thirty-seven operations including transcendentals and both real branches of the Lambert W function, checked arithmetic that reverts instead of wrapping, 115 or more correct bits measured against mpmath on every transcendental, and gas costs competitive with the Solidity libraries that carry half the precision. The site measures all of it: a ladder of iterated scenarios through FP127, ABDK, Solady and PRBMath against exact arithmetic, with every cell re-runnable on chain.
Why we built it
The dominant Ethereum math libraries drop precision in dangerous ways: they stop at the multiplication ceiling of a 128-bit number and leave the rest of the word empty. We built FP127 for our own contracts, where errors compound, and used ABDK, Solady, and PRBMath as the benchmarks to beat, operation by operation, on precision. We kept going until the whole word was full of correct information. The first version was pure Huff and was presented at EthCC[9] in Cannes; the current one is the Yul port, with the Huff bytecode kept on Sepolia as the baseline its equivalence proofs still compare against.
Two things it computes
A value is a signed 256-bit integer \(m\) read as a fixed-point number with 128 fractional bits:
$$ x = \frac{m}{2^{128}}, \qquad |x| < 2^{127} \approx 1.7 \times 10^{38} $$
Among the thirty-eight operations are both real branches of the Lambert W function, and pi itself by Ramanujan's 1914 series. The principal branch is the solution \(W_0(x)\) of
$$ W_0(x)\, e^{\,W_0(x)} = x, \qquad x \ge -\tfrac{1}{e}, \quad W_0(x) \ge -1, $$
and the secondary branch \(W_{-1}(x)\) is the other real solution of the same equation,
$$ W_{-1}(x)\, e^{\,W_{-1}(x)} = x, \qquad -\tfrac{1}{e} \le x < 0, \quad W_{-1}(x) \le -1. $$
Solady ships a principal-branch Lambert W too, and it was the benchmark to beat. FP127 computes both branches to 126 to 128 correct bits of the word's 128. The function appears wherever a quantity is defined through its own exponential: delay equations, bonding curves, and the closed forms of some option and queueing problems.
What we are looking for
- Three protocols to integrate FP127 on testnet, with our engineering time at no charge.
- One partner to fund the audit and a mainnet deployment.