Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 27 additions & 27 deletions .gas-snapshot
Original file line number Diff line number Diff line change
Expand Up @@ -373,48 +373,48 @@ FixedPointMathLibTest:testAvgEdgeCase() (gas: 425)
FixedPointMathLibTest:testAvgSigned() (gas: 897)
FixedPointMathLibTest:testCbrt() (gas: 10261)
FixedPointMathLibTest:testCbrt(uint256) (runs: 256, μ: 1424, ~: 1513)
FixedPointMathLibTest:testCbrtBack(uint256) (runs: 256, μ: 31364, ~: 39721)
FixedPointMathLibTest:testCbrtBack(uint256) (runs: 256, μ: 30635, ~: 33622)
FixedPointMathLibTest:testCbrtWad() (gas: 12006)
FixedPointMathLibTest:testCbrtWad(uint256) (runs: 256, μ: 1996, ~: 2005)
FixedPointMathLibTest:testCbrtWad(uint256) (runs: 256, μ: 1997, ~: 2005)
FixedPointMathLibTest:testClamp(uint256,uint256,uint256) (runs: 256, μ: 546, ~: 546)
FixedPointMathLibTest:testClampSigned(int256,int256,int256) (runs: 256, μ: 611, ~: 611)
FixedPointMathLibTest:testDist() (gas: 634)
FixedPointMathLibTest:testDist(int256,int256) (runs: 256, μ: 540, ~: 536)
FixedPointMathLibTest:testDistEdgeCases() (gas: 505)
FixedPointMathLibTest:testDivWad() (gas: 702)
FixedPointMathLibTest:testDivWad(uint256,uint256) (runs: 256, μ: 798, ~: 913)
FixedPointMathLibTest:testDivWad(uint256,uint256) (runs: 256, μ: 799, ~: 913)
FixedPointMathLibTest:testDivWadEdgeCases() (gas: 458)
FixedPointMathLibTest:testDivWadOverflowReverts(uint256,uint256) (runs: 256, μ: 3749, ~: 3749)
FixedPointMathLibTest:testDivWadUp() (gas: 3084)
FixedPointMathLibTest:testDivWadUp(uint256,uint256) (runs: 256, μ: 793, ~: 942)
FixedPointMathLibTest:testDivWadUp(uint256,uint256) (runs: 256, μ: 795, ~: 942)
FixedPointMathLibTest:testDivWadUpEdgeCases() (gas: 483)
FixedPointMathLibTest:testDivWadUpOverflowReverts(uint256,uint256) (runs: 256, μ: 3748, ~: 3748)
FixedPointMathLibTest:testDivWadUpZeroDenominatorReverts() (gas: 3239)
FixedPointMathLibTest:testDivWadUpZeroDenominatorReverts(uint256) (runs: 256, μ: 3295, ~: 3295)
FixedPointMathLibTest:testDivWadZeroDenominatorReverts() (gas: 3240)
FixedPointMathLibTest:testDivWadZeroDenominatorReverts(uint256) (runs: 256, μ: 3315, ~: 3315)
FixedPointMathLibTest:testExpWad() (gas: 7544)
FixedPointMathLibTest:testExpWad() (gas: 8024)
FixedPointMathLibTest:testFactorial() (gas: 98825)
FixedPointMathLibTest:testFactorialOriginal() (gas: 94187)
FixedPointMathLibTest:testFullMulDiv() (gas: 1184)
FixedPointMathLibTest:testFullMulDiv(uint256,uint256,uint256) (runs: 256, μ: 1374, ~: 988)
FixedPointMathLibTest:testFullMulDivUp(uint256,uint256,uint256) (runs: 256, μ: 1738, ~: 1523)
FixedPointMathLibTest:testFullMulDiv(uint256,uint256,uint256) (runs: 256, μ: 1393, ~: 988)
FixedPointMathLibTest:testFullMulDivUp(uint256,uint256,uint256) (runs: 256, μ: 1745, ~: 1523)
FixedPointMathLibTest:testFullMulDivUpRevertsIfRoundedUpResultOverflowsCase1() (gas: 3677)
FixedPointMathLibTest:testFullMulDivUpRevertsIfRoundedUpResultOverflowsCase2() (gas: 3688)
FixedPointMathLibTest:testGcd() (gas: 4206)
FixedPointMathLibTest:testGcd(uint256,uint256) (runs: 256, μ: 5031, ~: 2223)
FixedPointMathLibTest:testGcd(uint256,uint256) (runs: 256, μ: 5211, ~: 2408)
FixedPointMathLibTest:testLambertW0WadAccuracy() (gas: 7170)
FixedPointMathLibTest:testLambertW0WadAccuracy(uint184) (runs: 256, μ: 1719, ~: 386)
FixedPointMathLibTest:testLambertW0WadAccuracy(uint184) (runs: 256, μ: 1656, ~: 386)
FixedPointMathLibTest:testLambertW0WadKnownValues() (gas: 1689686)
FixedPointMathLibTest:testLambertW0WadMonoDebug() (gas: 772665)
FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing() (gas: 18485606)
FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing(int256,int256) (runs: 256, μ: 7077, ~: 6969)
FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing(int256,int256) (runs: 256, μ: 6965, ~: 6836)
FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing2() (gas: 4045100)
FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround(int256) (runs: 256, μ: 26704, ~: 17568)
FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround2(uint96) (runs: 256, μ: 41253, ~: 17628)
FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround(int256) (runs: 256, μ: 26596, ~: 17568)
FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround2(uint96) (runs: 256, μ: 40662, ~: 17332)
FixedPointMathLibTest:testLambertW0WadRevertsForOutOfDomain() (gas: 16567)
FixedPointMathLibTest:testLambertW0WadWithinBounds() (gas: 122497)
FixedPointMathLibTest:testLambertW0WadWithinBounds(int256) (runs: 256, μ: 3040, ~: 1273)
FixedPointMathLibTest:testLambertW0WadWithinBounds(int256) (runs: 256, μ: 3143, ~: 2628)
FixedPointMathLibTest:testLnWad() (gas: 2098)
FixedPointMathLibTest:testLnWadBig() (gas: 2109)
FixedPointMathLibTest:testLnWadNegativeReverts() (gas: 3318)
Expand All @@ -425,38 +425,38 @@ FixedPointMathLibTest:testLog10(uint256,uint256) (runs: 256, μ: 2171, ~: 2237)
FixedPointMathLibTest:testLog10Up() (gas: 4413)
FixedPointMathLibTest:testLog2() (gas: 243209)
FixedPointMathLibTest:testLog256() (gas: 22786)
FixedPointMathLibTest:testLog256(uint256,uint256) (runs: 256, μ: 2016, ~: 2082)
FixedPointMathLibTest:testLog256(uint256,uint256) (runs: 256, μ: 2027, ~: 2091)
FixedPointMathLibTest:testLog256Up() (gas: 1249)
FixedPointMathLibTest:testLog2Differential(uint256) (runs: 256, μ: 870, ~: 864)
FixedPointMathLibTest:testLog2Up() (gas: 297368)
FixedPointMathLibTest:testMax(uint256,uint256) (runs: 256, μ: 517, ~: 513)
FixedPointMathLibTest:testMaxCasted(uint32,uint32,uint256) (runs: 256, μ: 886, ~: 882)
FixedPointMathLibTest:testMax(uint256,uint256) (runs: 256, μ: 518, ~: 523)
FixedPointMathLibTest:testMaxCasted(uint32,uint32,uint256) (runs: 256, μ: 887, ~: 892)
FixedPointMathLibTest:testMaxSigned(int256,int256) (runs: 256, μ: 476, ~: 481)
FixedPointMathLibTest:testMin(uint256,uint256) (runs: 256, μ: 499, ~: 504)
FixedPointMathLibTest:testMinBrutalized(uint256,uint256) (runs: 256, μ: 830, ~: 839)
FixedPointMathLibTest:testMinSigned(int256,int256) (runs: 256, μ: 474, ~: 470)
FixedPointMathLibTest:testMulDiv() (gas: 1890)
FixedPointMathLibTest:testMulDiv(uint256,uint256,uint256) (runs: 256, μ: 717, ~: 816)
FixedPointMathLibTest:testMulDiv(uint256,uint256,uint256) (runs: 256, μ: 716, ~: 816)
FixedPointMathLibTest:testMulDivEdgeCases() (gas: 740)
FixedPointMathLibTest:testMulDivOverflowReverts(uint256,uint256,uint256) (runs: 256, μ: 3854, ~: 3854)
FixedPointMathLibTest:testMulDivUp() (gas: 2103)
FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 256, μ: 906, ~: 1121)
FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 256, μ: 904, ~: 1121)
FixedPointMathLibTest:testMulDivUpEdgeCases() (gas: 861)
FixedPointMathLibTest:testMulDivUpOverflowReverts(uint256,uint256,uint256) (runs: 256, μ: 3877, ~: 3877)
FixedPointMathLibTest:testMulDivUpZeroDenominator() (gas: 3253)
FixedPointMathLibTest:testMulDivUpZeroDenominatorReverts(uint256,uint256) (runs: 256, μ: 3310, ~: 3310)
FixedPointMathLibTest:testMulDivZeroDenominatorReverts() (gas: 3252)
FixedPointMathLibTest:testMulDivZeroDenominatorReverts(uint256,uint256) (runs: 256, μ: 3310, ~: 3310)
FixedPointMathLibTest:testMulWad() (gas: 714)
FixedPointMathLibTest:testMulWad(uint256,uint256) (runs: 256, μ: 720, ~: 854)
FixedPointMathLibTest:testMulWad(uint256,uint256) (runs: 256, μ: 723, ~: 854)
FixedPointMathLibTest:testMulWadEdgeCases() (gas: 692)
FixedPointMathLibTest:testMulWadOverflowReverts(uint256,uint256) (runs: 256, μ: 3832, ~: 3832)
FixedPointMathLibTest:testMulWadUp() (gas: 815)
FixedPointMathLibTest:testMulWadUp(uint256,uint256) (runs: 256, μ: 851, ~: 1065)
FixedPointMathLibTest:testMulWadUp(uint256,uint256) (runs: 256, μ: 855, ~: 1065)
FixedPointMathLibTest:testMulWadUpEdgeCases() (gas: 793)
FixedPointMathLibTest:testMulWadUpOverflowReverts(uint256,uint256) (runs: 256, μ: 3769, ~: 3769)
FixedPointMathLibTest:testPackUnpackSci() (gas: 129349)
FixedPointMathLibTest:testPackUnpackSci(uint256) (runs: 256, μ: 30147, ~: 30088)
FixedPointMathLibTest:testPackUnpackSci(uint256) (runs: 256, μ: 30149, ~: 30088)
FixedPointMathLibTest:testRPow() (gas: 3276)
FixedPointMathLibTest:testRPowOverflowReverts() (gas: 4973)
FixedPointMathLibTest:testRawAdd(int256,int256) (runs: 256, μ: 484, ~: 484)
Expand All @@ -472,18 +472,18 @@ FixedPointMathLibTest:testRawSMod(int256,int256) (runs: 256, μ: 422, ~: 422)
FixedPointMathLibTest:testRawSub(int256,int256) (runs: 256, μ: 485, ~: 485)
FixedPointMathLibTest:testRawSub(uint256,uint256) (runs: 256, μ: 440, ~: 440)
FixedPointMathLibTest:testSci() (gas: 1838635)
FixedPointMathLibTest:testSci(uint256) (runs: 256, μ: 31825, ~: 37538)
FixedPointMathLibTest:testSci(uint256) (runs: 256, μ: 31423, ~: 33716)
FixedPointMathLibTest:testSci2(uint256) (runs: 256, μ: 901, ~: 911)
FixedPointMathLibTest:testSqrt() (gas: 42576)
FixedPointMathLibTest:testSqrt(uint256) (runs: 256, μ: 1037, ~: 1086)
FixedPointMathLibTest:testSqrtBack(uint256) (runs: 256, μ: 14111, ~: 385)
FixedPointMathLibTest:testSqrtHashed(uint256) (runs: 256, μ: 53198, ~: 53549)
FixedPointMathLibTest:testSqrtBack(uint256) (runs: 256, μ: 13888, ~: 385)
FixedPointMathLibTest:testSqrtHashed(uint256) (runs: 256, μ: 53160, ~: 53549)
FixedPointMathLibTest:testSqrtHashedSingle() (gas: 53041)
FixedPointMathLibTest:testSqrtWad() (gas: 7470)
FixedPointMathLibTest:testSqrtWad(uint256) (runs: 256, μ: 1493, ~: 1498)
FixedPointMathLibTest:testZeroFloorSub(uint256,uint256) (runs: 256, μ: 503, ~: 534)
FixedPointMathLibTest:testZeroFloorSubCasted(uint32,uint32,uint256) (runs: 256, μ: 928, ~: 967)
FixedPointMathLibTest:test__codesize() (gas: 39705)
FixedPointMathLibTest:testZeroFloorSub(uint256,uint256) (runs: 256, μ: 502, ~: 473)
FixedPointMathLibTest:testZeroFloorSubCasted(uint32,uint32,uint256) (runs: 256, μ: 924, ~: 886)
FixedPointMathLibTest:test__codesize() (gas: 39734)
GasBurnerLibTest:testBurnGas() (gas: 1700805)
GasBurnerLibTest:test__codesize() (gas: 1435)
JSONParserLibTest:testDecodeEncodedStringDoesNotRevert(string) (runs: 256, μ: 58291, ~: 57099)
Expand Down
2 changes: 1 addition & 1 deletion src/utils/FixedPointMathLib.sol
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ library FixedPointMathLib {
unchecked {
// When the result is less than 0.5 we return zero.
// This happens when `x <= floor(log(0.5e18) * 1e18) ≈ -42e18`.
if (x <= -42139678854452767551) return r;
if (x <= -41446531673892822313) return r;

/// @solidity memory-safe-assembly
assembly {
Expand Down
3 changes: 2 additions & 1 deletion test/FixedPointMathLib.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ import {FixedPointMathLib} from "../src/utils/FixedPointMathLib.sol";

contract FixedPointMathLibTest is SoladyTest {
function testExpWad() public {
assertEq(FixedPointMathLib.expWad(-42139678854452767551), 0);
assertEq(FixedPointMathLib.expWad(-41446531673892822312), 1);
assertEq(FixedPointMathLib.expWad(-41446531673892822313), 0);

assertEq(FixedPointMathLib.expWad(-3e18), 49787068367863942);
assertEq(FixedPointMathLib.expWad(-2e18), 135335283236612691);
Expand Down