From 1073d9583db79746e81ff07ec1fb61eca0f2ab4e Mon Sep 17 00:00:00 2001 From: Vectorized Date: Sat, 31 Aug 2024 02:49:06 +0000 Subject: [PATCH] T --- .gas-snapshot | 220 +++++++++++++++++------------------ test/FixedPointMathLib.t.sol | 69 ++++------- 2 files changed, 133 insertions(+), 156 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index f450423c3..bdf4089f2 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -428,141 +428,137 @@ EnumerableSetLibTest:testEnumerableSetFuzz(uint256) (runs: 316, μ: 605022, ~: 4 EnumerableSetLibTest:test__codesize() (gas: 14261) FixedPointMathLibTest:testAbs() (gas: 723) FixedPointMathLibTest:testAbs(int256) (runs: 316, μ: 510, ~: 479) -FixedPointMathLibTest:testAbsEdgeCases() (gas: 491) -FixedPointMathLibTest:testAvg() (gas: 443) -FixedPointMathLibTest:testAvgEdgeCase() (gas: 470) -FixedPointMathLibTest:testAvgSigned() (gas: 900) +FixedPointMathLibTest:testAbsEdgeCases() (gas: 513) +FixedPointMathLibTest:testAvg() (gas: 442) +FixedPointMathLibTest:testAvgEdgeCase() (gas: 492) +FixedPointMathLibTest:testAvgSigned() (gas: 923) FixedPointMathLibTest:testCbrt() (gas: 10283) -FixedPointMathLibTest:testCbrt(uint256) (runs: 316, μ: 1500, ~: 1513) -FixedPointMathLibTest:testCbrtBack(uint256) (runs: 316, μ: 34099, ~: 42293) -FixedPointMathLibTest:testCbrtWad() (gas: 12051) -FixedPointMathLibTest:testCbrtWad(uint256) (runs: 316, μ: 2101, ~: 1929) -FixedPointMathLibTest:testCbrtWadConverged() (gas: 2660) +FixedPointMathLibTest:testCbrt(uint256) (runs: 316, μ: 1522, ~: 1535) +FixedPointMathLibTest:testCbrtBack(uint256) (runs: 316, μ: 34075, ~: 42315) +FixedPointMathLibTest:testCbrtWad() (gas: 12050) +FixedPointMathLibTest:testCbrtWad(uint256) (runs: 316, μ: 2143, ~: 1973) +FixedPointMathLibTest:testCbrtWadConverged() (gas: 2682) FixedPointMathLibTest:testCbrtWadConverged(uint256) (runs: 316, μ: 2181, ~: 2232) -FixedPointMathLibTest:testCbrtWadDebug() (gas: 7338) -FixedPointMathLibTest:testCbrtWadMonotonicallyIncreasing() (gas: 4140) -FixedPointMathLibTest:testCbrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 316, μ: 3053, ~: 2381) +FixedPointMathLibTest:testCbrtWadDebug() (gas: 7360) +FixedPointMathLibTest:testCbrtWadMonotonicallyIncreasing() (gas: 4227) +FixedPointMathLibTest:testCbrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 316, μ: 3109, ~: 2425) FixedPointMathLibTest:testClamp(uint256,uint256,uint256) (runs: 316, μ: 547, ~: 546) FixedPointMathLibTest:testClampSigned(int256,int256,int256) (runs: 316, μ: 611, ~: 611) -FixedPointMathLibTest:testDist() (gas: 678) -FixedPointMathLibTest:testDist(int256,int256) (runs: 316, μ: 556, ~: 556) -FixedPointMathLibTest:testDist(uint256,uint256) (runs: 316, μ: 534, ~: 539) -FixedPointMathLibTest:testDistEdgeCases() (gas: 570) +FixedPointMathLibTest:testDist() (gas: 615) +FixedPointMathLibTest:testDist(int256,int256) (runs: 316, μ: 511, ~: 507) +FixedPointMathLibTest:testDist(uint256,uint256) (runs: 316, μ: 511, ~: 516) +FixedPointMathLibTest:testDistEdgeCases() (gas: 505) FixedPointMathLibTest:testDivWad() (gas: 692) -FixedPointMathLibTest:testDivWad(uint256,uint256) (runs: 316, μ: 2674, ~: 2203) -FixedPointMathLibTest:testDivWadEdgeCases() (gas: 403) -FixedPointMathLibTest:testDivWadUp() (gas: 2986) -FixedPointMathLibTest:testDivWadUp(uint256,uint256) (runs: 316, μ: 2771, ~: 2321) -FixedPointMathLibTest:testDivWadUpEdgeCases() (gas: 472) -FixedPointMathLibTest:testDivWadUpZeroDenominatorReverts() (gas: 3229) -FixedPointMathLibTest:testDivWadZeroDenominatorReverts() (gas: 3251) +FixedPointMathLibTest:testDivWad(uint256,uint256) (runs: 316, μ: 2728, ~: 2225) +FixedPointMathLibTest:testDivWadEdgeCases() (gas: 447) +FixedPointMathLibTest:testDivWadUp() (gas: 2942) +FixedPointMathLibTest:testDivWadUp(uint256,uint256) (runs: 316, μ: 2801, ~: 2321) +FixedPointMathLibTest:testDivWadUpEdgeCases() (gas: 428) +FixedPointMathLibTest:testDivWadUpZeroDenominatorReverts() (gas: 3196) +FixedPointMathLibTest:testDivWadZeroDenominatorReverts() (gas: 3218) FixedPointMathLibTest:testExpWad() (gas: 8047) -FixedPointMathLibTest:testFactorial() (gas: 98535) +FixedPointMathLibTest:testFactorial() (gas: 98436) FixedPointMathLibTest:testFactorialOriginal() (gas: 94187) -FixedPointMathLibTest:testFullMulDiv() (gas: 1105) -FixedPointMathLibTest:testFullMulDiv(uint256,uint256,uint256) (runs: 316, μ: 1381, ~: 968) -FixedPointMathLibTest:testFullMulDivAlwaysRevertsIfDivisorIsZero(uint256,uint256) (runs: 316, μ: 3478, ~: 3478) -FixedPointMathLibTest:testFullMulDivUnchecked() (gas: 1635) -FixedPointMathLibTest:testFullMulDivUnchecked(uint256,uint256,uint256) (runs: 316, μ: 1679, ~: 1577) -FixedPointMathLibTest:testFullMulDivUp(uint256,uint256,uint256) (runs: 316, μ: 1719, ~: 1401) -FixedPointMathLibTest:testFullMulDivUpRevertsIfRoundedUpResultOverflowsCase1() (gas: 3717) -FixedPointMathLibTest:testFullMulDivUpRevertsIfRoundedUpResultOverflowsCase2() (gas: 3727) +FixedPointMathLibTest:testFullMulDiv() (gas: 1127) +FixedPointMathLibTest:testFullMulDiv(uint256,uint256,uint256) (runs: 316, μ: 1351, ~: 946) +FixedPointMathLibTest:testFullMulDivAlwaysRevertsIfDivisorIsZero(uint256,uint256) (runs: 316, μ: 3422, ~: 3422) +FixedPointMathLibTest:testFullMulDivUnchecked() (gas: 1591) +FixedPointMathLibTest:testFullMulDivUnchecked(uint256,uint256,uint256) (runs: 316, μ: 1654, ~: 1554) +FixedPointMathLibTest:testFullMulDivUp(uint256,uint256,uint256) (runs: 316, μ: 1730, ~: 1423) +FixedPointMathLibTest:testFullMulDivUpRevertsIfRoundedUpResultOverflowsCase1() (gas: 3683) +FixedPointMathLibTest:testFullMulDivUpRevertsIfRoundedUpResultOverflowsCase2() (gas: 3716) FixedPointMathLibTest:testGcd() (gas: 4206) -FixedPointMathLibTest:testGcd(uint256,uint256) (runs: 316, μ: 6615, ~: 2892) -FixedPointMathLibTest:testIsEven(uint256) (runs: 316, μ: 475, ~: 475) +FixedPointMathLibTest:testGcd(uint256,uint256) (runs: 316, μ: 6625, ~: 2800) +FixedPointMathLibTest:testIsEven(uint256) (runs: 316, μ: 497, ~: 497) FixedPointMathLibTest:testLambertW0WadAccuracy() (gas: 7160) -FixedPointMathLibTest:testLambertW0WadAccuracy(uint184) (runs: 316, μ: 2332, ~: 409) -FixedPointMathLibTest:testLambertW0WadKnownValues() (gas: 1685582) -FixedPointMathLibTest:testLambertW0WadMonoDebug() (gas: 770645) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing() (gas: 18416553) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing(int256,int256) (runs: 316, μ: 7099, ~: 6933) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing2() (gas: 4035346) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround(int256) (runs: 316, μ: 28928, ~: 35428) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround2(uint96) (runs: 316, μ: 48620, ~: 17596) -FixedPointMathLibTest:testLambertW0WadRevertsForOutOfDomain() (gas: 16586) -FixedPointMathLibTest:testLambertW0WadWithinBounds() (gas: 122061) -FixedPointMathLibTest:testLambertW0WadWithinBounds(int256) (runs: 316, μ: 3676, ~: 4985) -FixedPointMathLibTest:testLerpInt() (gas: 6461) -FixedPointMathLibTest:testLerpInt(int256,int256,int256,int256,int256) (runs: 316, μ: 1645, ~: 1245) +FixedPointMathLibTest:testLambertW0WadAccuracy(uint184) (runs: 316, μ: 2315, ~: 431) +FixedPointMathLibTest:testLambertW0WadKnownValues() (gas: 1685626) +FixedPointMathLibTest:testLambertW0WadMonoDebug() (gas: 770667) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing() (gas: 18416509) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing(int256,int256) (runs: 316, μ: 7109, ~: 6955) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing2() (gas: 4035368) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround(int256) (runs: 316, μ: 28962, ~: 35493) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround2(uint96) (runs: 316, μ: 50208, ~: 17618) +FixedPointMathLibTest:testLambertW0WadRevertsForOutOfDomain() (gas: 16530) +FixedPointMathLibTest:testLambertW0WadWithinBounds() (gas: 122039) +FixedPointMathLibTest:testLambertW0WadWithinBounds(int256) (runs: 316, μ: 3672, ~: 4985) +FixedPointMathLibTest:testLerpInt() (gas: 6439) +FixedPointMathLibTest:testLerpInt(int256,int256,int256,int256,int256) (runs: 316, μ: 1643, ~: 1245) FixedPointMathLibTest:testLerpUint() (gas: 6398) -FixedPointMathLibTest:testLerpUint(uint256,uint256,uint256,uint256,uint256) (runs: 316, μ: 1122, ~: 819) -FixedPointMathLibTest:testLnWad() (gas: 2098) -FixedPointMathLibTest:testLnWadBig() (gas: 2087) -FixedPointMathLibTest:testLnWadNegativeReverts() (gas: 3341) -FixedPointMathLibTest:testLnWadOverflowReverts() (gas: 3359) -FixedPointMathLibTest:testLnWadSmall() (gas: 2644) -FixedPointMathLibTest:testLog10() (gas: 76167) -FixedPointMathLibTest:testLog10(uint256,uint256) (runs: 316, μ: 2179, ~: 2212) -FixedPointMathLibTest:testLog10Up() (gas: 4413) -FixedPointMathLibTest:testLog2() (gas: 243209) -FixedPointMathLibTest:testLog256() (gas: 22809) -FixedPointMathLibTest:testLog256(uint256,uint256) (runs: 316, μ: 2063, ~: 2124) +FixedPointMathLibTest:testLerpUint(uint256,uint256,uint256,uint256,uint256) (runs: 316, μ: 1148, ~: 841) +FixedPointMathLibTest:testLnWad() (gas: 2054) +FixedPointMathLibTest:testLnWadBig() (gas: 2065) +FixedPointMathLibTest:testLnWadNegativeReverts() (gas: 3285) +FixedPointMathLibTest:testLnWadOverflowReverts() (gas: 3260) +FixedPointMathLibTest:testLnWadSmall() (gas: 2666) +FixedPointMathLibTest:testLog10() (gas: 76189) +FixedPointMathLibTest:testLog10(uint256,uint256) (runs: 316, μ: 2201, ~: 2228) +FixedPointMathLibTest:testLog10Up() (gas: 4435) +FixedPointMathLibTest:testLog2() (gas: 243231) +FixedPointMathLibTest:testLog256() (gas: 22831) +FixedPointMathLibTest:testLog256(uint256,uint256) (runs: 316, μ: 2088, ~: 2146) FixedPointMathLibTest:testLog256Up() (gas: 1271) -FixedPointMathLibTest:testLog2Differential(uint256) (runs: 316, μ: 890, ~: 887) -FixedPointMathLibTest:testLog2Up() (gas: 297346) -FixedPointMathLibTest:testMax(uint256,uint256) (runs: 316, μ: 476, ~: 472) +FixedPointMathLibTest:testLog2Differential(uint256) (runs: 316, μ: 891, ~: 887) +FixedPointMathLibTest:testLog2Up() (gas: 297368) +FixedPointMathLibTest:testMax(uint256,uint256) (runs: 316, μ: 498, ~: 494) FixedPointMathLibTest:testMaxCasted(uint32,uint32,uint256) (runs: 316, μ: 869, ~: 874) -FixedPointMathLibTest:testMaxSigned(int256,int256) (runs: 316, μ: 498, ~: 498) -FixedPointMathLibTest:testMin(uint256,uint256) (runs: 316, μ: 520, ~: 525) -FixedPointMathLibTest:testMinBrutalized(uint256,uint256) (runs: 316, μ: 872, ~: 863) -FixedPointMathLibTest:testMinSigned(int256,int256) (runs: 316, μ: 541, ~: 541) -FixedPointMathLibTest:testMulDiv() (gas: 1912) -FixedPointMathLibTest:testMulDiv(uint256,uint256,uint256) (runs: 316, μ: 1673, ~: 858) -FixedPointMathLibTest:testMulDivEdgeCases() (gas: 740) -FixedPointMathLibTest:testMulDivOverflowReverts(uint256,uint256,uint256) (runs: 316, μ: 20054, ~: 27033) -FixedPointMathLibTest:testMulDivUp() (gas: 2148) -FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 316, μ: 1838, ~: 1121) -FixedPointMathLibTest:testMulDivUpEdgeCases() (gas: 839) -FixedPointMathLibTest:testMulDivUpOverflowReverts(uint256,uint256,uint256) (runs: 316, μ: 20063, ~: 27044) -FixedPointMathLibTest:testMulDivUpZeroDenominator() (gas: 3234) -FixedPointMathLibTest:testMulDivUpZeroDenominatorReverts(uint256,uint256) (runs: 316, μ: 3358, ~: 3358) -FixedPointMathLibTest:testMulDivZeroDenominatorReverts() (gas: 3256) -FixedPointMathLibTest:testMulDivZeroDenominatorReverts(uint256,uint256) (runs: 316, μ: 3336, ~: 3336) +FixedPointMathLibTest:testMaxSigned(int256,int256) (runs: 316, μ: 520, ~: 525) +FixedPointMathLibTest:testMin(uint256,uint256) (runs: 316, μ: 477, ~: 482) +FixedPointMathLibTest:testMinBrutalized(uint256,uint256) (runs: 316, μ: 829, ~: 839) +FixedPointMathLibTest:testMinSigned(int256,int256) (runs: 316, μ: 540, ~: 536) +FixedPointMathLibTest:testMulDiv() (gas: 1845) +FixedPointMathLibTest:testMulDiv(uint256,uint256,uint256) (runs: 316, μ: 2931, ~: 2184) +FixedPointMathLibTest:testMulDivEdgeCases() (gas: 762) +FixedPointMathLibTest:testMulDivUp() (gas: 2103) +FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 316, μ: 3163, ~: 2511) +FixedPointMathLibTest:testMulDivUpEdgeCases() (gas: 861) +FixedPointMathLibTest:testMulDivUpZeroDenominator() (gas: 3179) +FixedPointMathLibTest:testMulDivZeroDenominatorReverts() (gas: 3201) FixedPointMathLibTest:testMulWad() (gas: 712) -FixedPointMathLibTest:testMulWad(uint256,uint256) (runs: 316, μ: 2971, ~: 2198) -FixedPointMathLibTest:testMulWadEdgeCases() (gas: 709) +FixedPointMathLibTest:testMulWad(uint256,uint256) (runs: 316, μ: 2969, ~: 2176) +FixedPointMathLibTest:testMulWadEdgeCases() (gas: 731) FixedPointMathLibTest:testMulWadUp() (gas: 791) -FixedPointMathLibTest:testMulWadUp(uint256,uint256) (runs: 316, μ: 3087, ~: 2386) +FixedPointMathLibTest:testMulWadUp(uint256,uint256) (runs: 316, μ: 3039, ~: 2320) FixedPointMathLibTest:testMulWadUpEdgeCases() (gas: 788) -FixedPointMathLibTest:testPackUnpackSci() (gas: 129327) -FixedPointMathLibTest:testPackUnpackSci(uint256) (runs: 316, μ: 30421, ~: 30436) -FixedPointMathLibTest:testRPow() (gas: 3276) -FixedPointMathLibTest:testRPowOverflowReverts() (gas: 4974) -FixedPointMathLibTest:testRawAdd(int256,int256) (runs: 316, μ: 462, ~: 462) -FixedPointMathLibTest:testRawAdd(uint256,uint256) (runs: 316, μ: 441, ~: 441) +FixedPointMathLibTest:testPackUnpackSci() (gas: 129317) +FixedPointMathLibTest:testPackUnpackSci(uint256) (runs: 316, μ: 30414, ~: 30400) +FixedPointMathLibTest:testRPow() (gas: 3298) +FixedPointMathLibTest:testRPowOverflowReverts() (gas: 4940) +FixedPointMathLibTest:testRawAdd(int256,int256) (runs: 316, μ: 440, ~: 440) +FixedPointMathLibTest:testRawAdd(uint256,uint256) (runs: 316, μ: 485, ~: 485) FixedPointMathLibTest:testRawAddMod(uint256,uint256,uint256) (runs: 316, μ: 533, ~: 533) -FixedPointMathLibTest:testRawDiv(uint256,uint256) (runs: 316, μ: 465, ~: 465) -FixedPointMathLibTest:testRawMod(uint256,uint256) (runs: 316, μ: 464, ~: 464) -FixedPointMathLibTest:testRawMul(int256,int256) (runs: 316, μ: 412, ~: 412) -FixedPointMathLibTest:testRawMul(uint256,uint256) (runs: 316, μ: 485, ~: 485) -FixedPointMathLibTest:testRawMulMod(uint256,uint256,uint256) (runs: 316, μ: 579, ~: 579) +FixedPointMathLibTest:testRawDiv(uint256,uint256) (runs: 316, μ: 487, ~: 487) +FixedPointMathLibTest:testRawMod(uint256,uint256) (runs: 316, μ: 486, ~: 486) +FixedPointMathLibTest:testRawMul(int256,int256) (runs: 316, μ: 434, ~: 434) +FixedPointMathLibTest:testRawMul(uint256,uint256) (runs: 316, μ: 463, ~: 463) +FixedPointMathLibTest:testRawMulMod(uint256,uint256,uint256) (runs: 316, μ: 557, ~: 557) FixedPointMathLibTest:testRawSDiv(int256,int256) (runs: 316, μ: 487, ~: 487) -FixedPointMathLibTest:testRawSMod(int256,int256) (runs: 316, μ: 466, ~: 466) -FixedPointMathLibTest:testRawSub(int256,int256) (runs: 316, μ: 441, ~: 441) +FixedPointMathLibTest:testRawSMod(int256,int256) (runs: 316, μ: 422, ~: 422) +FixedPointMathLibTest:testRawSub(int256,int256) (runs: 316, μ: 463, ~: 463) FixedPointMathLibTest:testRawSub(uint256,uint256) (runs: 316, μ: 463, ~: 463) FixedPointMathLibTest:testSDivWad() (gas: 840) -FixedPointMathLibTest:testSDivWad(int256,int256) (runs: 316, μ: 2848, ~: 2365) +FixedPointMathLibTest:testSDivWad(int256,int256) (runs: 316, μ: 2819, ~: 2343) FixedPointMathLibTest:testSDivWadEdgeCases() (gas: 404) -FixedPointMathLibTest:testSMulWad() (gas: 1010) -FixedPointMathLibTest:testSMulWad(int256,int256) (runs: 316, μ: 26659, ~: 25885) -FixedPointMathLibTest:testSMulWadEdgeCases() (gas: 1309) -FixedPointMathLibTest:testSMulWadOverflowTrickDifferential(int256,int256) (runs: 316, μ: 621, ~: 632) -FixedPointMathLibTest:testSci() (gas: 1838614) -FixedPointMathLibTest:testSci(uint256) (runs: 316, μ: 34146, ~: 38235) -FixedPointMathLibTest:testSci2(uint256) (runs: 316, μ: 888, ~: 889) +FixedPointMathLibTest:testSMulWad() (gas: 1032) +FixedPointMathLibTest:testSMulWad(int256,int256) (runs: 316, μ: 26654, ~: 25906) +FixedPointMathLibTest:testSMulWadEdgeCases() (gas: 1287) +FixedPointMathLibTest:testSMulWadOverflowTrickDifferential(int256,int256) (runs: 316, μ: 643, ~: 654) +FixedPointMathLibTest:testSci() (gas: 1838636) +FixedPointMathLibTest:testSci(uint256) (runs: 316, μ: 33988, ~: 37190) +FixedPointMathLibTest:testSci2(uint256) (runs: 316, μ: 911, ~: 911) FixedPointMathLibTest:testSqrt() (gas: 43819) -FixedPointMathLibTest:testSqrt(uint256) (runs: 316, μ: 1047, ~: 1054) -FixedPointMathLibTest:testSqrtBack(uint256) (runs: 316, μ: 9878, ~: 341) -FixedPointMathLibTest:testSqrtHashed(uint256) (runs: 316, μ: 54691, ~: 54659) +FixedPointMathLibTest:testSqrt(uint256) (runs: 316, μ: 1091, ~: 1098) +FixedPointMathLibTest:testSqrtBack(uint256) (runs: 316, μ: 9737, ~: 363) +FixedPointMathLibTest:testSqrtHashed(uint256) (runs: 316, μ: 54738, ~: 55107) FixedPointMathLibTest:testSqrtHashedSingle() (gas: 54632) -FixedPointMathLibTest:testSqrtWad() (gas: 7937) -FixedPointMathLibTest:testSqrtWad(uint256) (runs: 316, μ: 1655, ~: 1580) +FixedPointMathLibTest:testSqrtWad() (gas: 7959) +FixedPointMathLibTest:testSqrtWad(uint256) (runs: 316, μ: 1587, ~: 1513) FixedPointMathLibTest:testSqrtWadConverged(uint256) (runs: 316, μ: 1892, ~: 1922) -FixedPointMathLibTest:testSqrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 316, μ: 2257, ~: 1868) -FixedPointMathLibTest:testTernary(bool,uint256,uint256) (runs: 316, μ: 561, ~: 557) -FixedPointMathLibTest:testZeroFloorSub(uint256,uint256) (runs: 316, μ: 571, ~: 601) -FixedPointMathLibTest:testZeroFloorSubCasted(uint32,uint32,uint256) (runs: 316, μ: 927, ~: 890) -FixedPointMathLibTest:test__codesize() (gas: 44779) +FixedPointMathLibTest:testSqrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 316, μ: 2207, ~: 1802) +FixedPointMathLibTest:testTernary(bool,uint256,uint256) (runs: 316, μ: 518, ~: 514) +FixedPointMathLibTest:testZeroFloorSub(uint256,uint256) (runs: 316, μ: 550, ~: 579) +FixedPointMathLibTest:testZeroFloorSubCasted(uint32,uint32,uint256) (runs: 316, μ: 926, ~: 890) +FixedPointMathLibTest:test__codesize() (gas: 44399) GasBurnerLibTest:testBurn() (gas: 105035) GasBurnerLibTest:testBurn(uint256) (runs: 316, μ: 43418, ~: 33550) GasBurnerLibTest:testBurnPure() (gas: 1700850) diff --git a/test/FixedPointMathLib.t.sol b/test/FixedPointMathLib.t.sol index ac955987c..e6d6bec93 100644 --- a/test/FixedPointMathLib.t.sol +++ b/test/FixedPointMathLib.t.sol @@ -1273,40 +1273,38 @@ contract FixedPointMathLibTest is SoladyTest { assertEq(FixedPointMathLib.divWadUp(x, y), x == 0 ? 0 : (x * 1e18 - 1) / y + 1); } - function testMulDiv(uint256 x, uint256 y, uint256 denominator) public { - unchecked { - if (denominator == 0 || (x != 0 && (x * y) / x != y)) { - vm.expectRevert(FixedPointMathLib.MulDivFailed.selector); - FixedPointMathLib.mulDiv(x, y, denominator); - return; - } - } - assertEq(FixedPointMathLib.mulDiv(x, y, denominator), (x * y) / denominator); + function mulDivOriginal(uint256 x, uint256 y, uint256 denominator) + public + pure + returns (uint256) + { + return (x * y) / denominator; } - function testMulDivOverflowReverts(uint256 x, uint256 y, uint256 denominator) public { - unchecked { - while (!(denominator != 0 && x != 0 && (x * y) / x != y)) { - x = _random(); - y = _random(); - denominator = _random(); - } - } - vm.expectRevert(FixedPointMathLib.MulDivFailed.selector); - FixedPointMathLib.mulDiv(x, y, denominator); + function _mulDivWillFail(uint256 x, uint256 y, uint256 denominator) + internal + view + returns (bool) + { + bytes memory data = + abi.encodeWithSignature("mulDivOriginal(uint256,uint256,uint256)", x, y, denominator); + (bool success,) = address(this).staticcall(data); + return !success; } - function testMulDivZeroDenominatorReverts(uint256 x, uint256 y) public { - vm.expectRevert(FixedPointMathLib.MulDivFailed.selector); - FixedPointMathLib.mulDiv(x, y, 0); + function testMulDiv(uint256 x, uint256 y, uint256 denominator) public { + if (_mulDivWillFail(x, y, denominator)) { + vm.expectRevert(FixedPointMathLib.MulDivFailed.selector); + FixedPointMathLib.mulDiv(x, y, denominator); + return; + } + assertEq(FixedPointMathLib.mulDiv(x, y, denominator), (x * y) / denominator); } function testMulDivUp(uint256 x, uint256 y, uint256 denominator) public { - unchecked { - if (denominator == 0 || (x != 0 && (x * y) / x != y)) { - vm.expectRevert(FixedPointMathLib.MulDivFailed.selector); - FixedPointMathLib.mulDivUp(x, y, denominator); - } + if (_mulDivWillFail(x, y, denominator)) { + vm.expectRevert(FixedPointMathLib.MulDivFailed.selector); + FixedPointMathLib.mulDivUp(x, y, denominator); } assertEq( FixedPointMathLib.mulDivUp(x, y, denominator), @@ -1314,23 +1312,6 @@ contract FixedPointMathLibTest is SoladyTest { ); } - function testMulDivUpOverflowReverts(uint256 x, uint256 y, uint256 denominator) public { - unchecked { - while (!(denominator != 0 && x != 0 && (x * y) / x != y)) { - x = _random(); - y = _random(); - denominator = _random(); - } - } - vm.expectRevert(FixedPointMathLib.MulDivFailed.selector); - FixedPointMathLib.mulDivUp(x, y, denominator); - } - - function testMulDivUpZeroDenominatorReverts(uint256 x, uint256 y) public { - vm.expectRevert(FixedPointMathLib.MulDivFailed.selector); - FixedPointMathLib.mulDivUp(x, y, 0); - } - function testCbrt(uint256 x) public { uint256 root = FixedPointMathLib.cbrt(x); uint256 next = root + 1;