From 1c021a0a8f507038d48dafc84114ba57b68ea92d Mon Sep 17 00:00:00 2001 From: thedavidmeister Date: Wed, 3 Sep 2025 22:28:48 +0400 Subject: [PATCH 1/2] div zero test --- .../LibDecimalFloatImplementation.sol | 2 +- .../LibDecimalFloatImplementation.div.t.sol | 34 +++++++++++++++++-- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/lib/implementation/LibDecimalFloatImplementation.sol b/src/lib/implementation/LibDecimalFloatImplementation.sol index 5679170a..b944146a 100644 --- a/src/lib/implementation/LibDecimalFloatImplementation.sol +++ b/src/lib/implementation/LibDecimalFloatImplementation.sol @@ -225,7 +225,7 @@ library LibDecimalFloatImplementation { pure returns (int256 signedCoefficient, int256 exponent) { - if (signedCoefficientA == 0) { + if (signedCoefficientA == 0 && signedCoefficientB != 0) { signedCoefficient = MAXIMIZED_ZERO_SIGNED_COEFFICIENT; exponent = MAXIMIZED_ZERO_EXPONENT; } else { diff --git a/test/src/lib/implementation/LibDecimalFloatImplementation.div.t.sol b/test/src/lib/implementation/LibDecimalFloatImplementation.div.t.sol index 855bc041..1d51cf41 100644 --- a/test/src/lib/implementation/LibDecimalFloatImplementation.div.t.sol +++ b/test/src/lib/implementation/LibDecimalFloatImplementation.div.t.sol @@ -2,15 +2,26 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {Test} from "forge-std/Test.sol"; +import {Test, stdError} from "forge-std/Test.sol"; import { LibDecimalFloatImplementation, EXPONENT_MIN, - EXPONENT_MAX + EXPONENT_MAX, + MulDivOverflow } from "src/lib/implementation/LibDecimalFloatImplementation.sol"; import {THREES, ONES} from "../../../lib/LibCommonResults.sol"; +import {console2} from "forge-std/console2.sol"; + contract LibDecimalFloatImplementationDivTest is Test { + function divExternal(int256 signedCoefficientA, int256 exponentA, int256 signedCoefficientB, int256 exponentB) + external + pure + returns (int256, int256) + { + return LibDecimalFloatImplementation.div(signedCoefficientA, exponentA, signedCoefficientB, exponentB); + } + function checkDiv( int256 signedCoefficientA, int256 exponentA, @@ -25,6 +36,25 @@ contract LibDecimalFloatImplementationDivTest is Test { assertEq(exponent, exponentC, "exponent"); } + function testDivZero(int256 signedCoefficient, int256 exponent) external { + exponent = bound(exponent, type(int256).min / 2, type(int256).max); + (int256 signedCoefficientMaximized, int256 exponentMaximized) = + LibDecimalFloatImplementation.maximize(signedCoefficient, exponent); + if (signedCoefficient == 0) { + vm.expectRevert(stdError.divisionError); + } else { + vm.expectRevert( + abi.encodeWithSelector( + MulDivOverflow.selector, + LibDecimalFloatImplementation.absUnsignedSignedCoefficient(signedCoefficientMaximized), + 1e75, + 0 + ) + ); + } + this.divExternal(signedCoefficient, exponent, 0, 0); + } + /// 1 / 3 gas by parts 10 function testDiv1Over3Gas10() external pure { (int256 c, int256 e) = LibDecimalFloatImplementation.div(1, 0, 3e37, -37); From 51fdbdb190716e55ecbb6dc9629ff01679942ad0 Mon Sep 17 00:00:00 2001 From: thedavidmeister Date: Wed, 3 Sep 2025 22:31:06 +0400 Subject: [PATCH 2/2] lint --- .gas-snapshot | 417 +++++++++--------- .../LibDecimalFloatImplementation.div.t.sol | 2 - 2 files changed, 209 insertions(+), 210 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index 95a6e2bd..cbd0b8c7 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -1,192 +1,193 @@ -DecimalFloatAbsTest:testAbsDeployed(bytes32) (runs: 5103, μ: 3067064, ~: 3067007) -DecimalFloatAddTest:testAddDeployed(bytes32,bytes32) (runs: 5103, μ: 3071112, ~: 3071203) -DecimalFloatCeilTest:testCeilDeployed(bytes32) (runs: 5103, μ: 3067092, ~: 3066720) -DecimalFloatConstantsTest:testEDeployed() (gas: 3066250) -DecimalFloatConstantsTest:testMaxNegativeValueDeployed() (gas: 3066239) -DecimalFloatConstantsTest:testMaxPositiveValueDeployed() (gas: 3066240) -DecimalFloatConstantsTest:testMinNegativeValueDeployed() (gas: 3066215) -DecimalFloatConstantsTest:testMinPositiveValueDeployed() (gas: 3066216) -DecimalFloatConstantsTest:testZeroDeployed() (gas: 3066283) -DecimalFloatDivTest:testDivDeployed(bytes32,bytes32) (runs: 5103, μ: 3073076, ~: 3073147) -DecimalFloatEqTest:testEqDeployed(bytes32,bytes32) (runs: 5103, μ: 3067449, ~: 3067375) -DecimalFloatFloorTest:testFloorDeployed(bytes32) (runs: 5103, μ: 3066903, ~: 3066718) -DecimalFloatFormatTest:testFormatDeployed(bytes32,uint256) (runs: 5103, μ: 3092428, ~: 3098980) -DecimalFloatFracTest:testFracDeployed(bytes32) (runs: 5103, μ: 3067294, ~: 3067278) -DecimalFloatFromFixedDecimalLosslessTest:testFromFixedDecimalLosslessDeployed(uint256,uint8) (runs: 5103, μ: 3067849, ~: 3067782) -DecimalFloatFromFixedDecimalLossyTest:testFromFixedDecimalLossyDeployed(uint256,uint8) (runs: 5103, μ: 3068335, ~: 3068252) -DecimalFloatGtTest:testGtDeployed(bytes32,bytes32) (runs: 5103, μ: 3067391, ~: 3067317) -DecimalFloatGteTest:testGteDeployed(bytes32,bytes32) (runs: 5103, μ: 3067376, ~: 3067303) -DecimalFloatInvTest:testInvDeployed(bytes32) (runs: 5103, μ: 3071923, ~: 3071962) -DecimalFloatIsZeroTest:testIsZeroDeployed(bytes32) (runs: 5103, μ: 3066560, ~: 3066560) -DecimalFloatLtTest:testLtDeployed(bytes32,bytes32) (runs: 5103, μ: 3067367, ~: 3067294) -DecimalFloatLteTest:testLteDeployed(bytes32,bytes32) (runs: 5103, μ: 3067421, ~: 3067347) -DecimalFloatMaxTest:testMaxDeployed(bytes32,bytes32) (runs: 5103, μ: 3067430, ~: 3067369) -DecimalFloatMinTest:testMinDeployed(bytes32,bytes32) (runs: 5103, μ: 3067429, ~: 3067367) -DecimalFloatMinusTest:testMinusDeployed(bytes32) (runs: 5103, μ: 3067165, ~: 3067165) -DecimalFloatMulTest:testMulDeployed(bytes32,bytes32) (runs: 5103, μ: 3071023, ~: 3071834) -DecimalFloatPackLosslessTest:testPackDeployed(int224,int32) (runs: 5103, μ: 158769, ~: 158769) -DecimalFloatParseTest:testParseDeployed(string) (runs: 5103, μ: 3069798, ~: 3069667) -DecimalFloatPowTest:testPowDeployed(bytes32,bytes32) (runs: 5103, μ: 3080042, ~: 3078775) -DecimalFloatSqrtTest:testSqrtDeployed(bytes32) (runs: 5103, μ: 3080178, ~: 3079993) -DecimalFloatSubTest:testSubDeployed(bytes32,bytes32) (runs: 5103, μ: 3071429, ~: 3071459) -DecimalFloatToFixedDecimalLosslessTest:testToFixedDecimalLosslessDeployed(bytes32,uint8) (runs: 5103, μ: 3068528, ~: 3068410) -DecimalFloatToFixedDecimalLossyTest:testToFixedDecimalLossyDeployed(bytes32,uint8) (runs: 5103, μ: 3068619, ~: 3068894) -LibDecimalFloatAbsTest:testAbsMinValue(int32) (runs: 5102, μ: 5121, ~: 5121) -LibDecimalFloatAbsTest:testAbsNegative(int256,int32) (runs: 5103, μ: 10475, ~: 10702) -LibDecimalFloatAbsTest:testAbsNonNegative(int256,int32) (runs: 5103, μ: 9641, ~: 9392) +DecimalFloatAbsTest:testAbsDeployed(bytes32) (runs: 5105, μ: 3069064, ~: 3069007) +DecimalFloatAddTest:testAddDeployed(bytes32,bytes32) (runs: 5105, μ: 3073115, ~: 3073203) +DecimalFloatCeilTest:testCeilDeployed(bytes32) (runs: 5105, μ: 3069092, ~: 3068720) +DecimalFloatConstantsTest:testEDeployed() (gas: 3068250) +DecimalFloatConstantsTest:testMaxNegativeValueDeployed() (gas: 3068239) +DecimalFloatConstantsTest:testMaxPositiveValueDeployed() (gas: 3068240) +DecimalFloatConstantsTest:testMinNegativeValueDeployed() (gas: 3068215) +DecimalFloatConstantsTest:testMinPositiveValueDeployed() (gas: 3068216) +DecimalFloatConstantsTest:testZeroDeployed() (gas: 3068283) +DecimalFloatDivTest:testDivDeployed(bytes32,bytes32) (runs: 5105, μ: 3075111, ~: 3075187) +DecimalFloatEqTest:testEqDeployed(bytes32,bytes32) (runs: 5105, μ: 3069448, ~: 3069375) +DecimalFloatFloorTest:testFloorDeployed(bytes32) (runs: 5105, μ: 3068902, ~: 3068718) +DecimalFloatFormatTest:testFormatDeployed(bytes32,uint256) (runs: 5105, μ: 3094453, ~: 3100980) +DecimalFloatFracTest:testFracDeployed(bytes32) (runs: 5105, μ: 3069294, ~: 3069278) +DecimalFloatFromFixedDecimalLosslessTest:testFromFixedDecimalLosslessDeployed(uint256,uint8) (runs: 5105, μ: 3069849, ~: 3069782) +DecimalFloatFromFixedDecimalLossyTest:testFromFixedDecimalLossyDeployed(uint256,uint8) (runs: 5105, μ: 3070335, ~: 3070252) +DecimalFloatGtTest:testGtDeployed(bytes32,bytes32) (runs: 5105, μ: 3069390, ~: 3069317) +DecimalFloatGteTest:testGteDeployed(bytes32,bytes32) (runs: 5105, μ: 3069377, ~: 3069303) +DecimalFloatInvTest:testInvDeployed(bytes32) (runs: 5105, μ: 3073960, ~: 3074002) +DecimalFloatIsZeroTest:testIsZeroDeployed(bytes32) (runs: 5105, μ: 3068560, ~: 3068560) +DecimalFloatLtTest:testLtDeployed(bytes32,bytes32) (runs: 5105, μ: 3069367, ~: 3069294) +DecimalFloatLteTest:testLteDeployed(bytes32,bytes32) (runs: 5105, μ: 3069421, ~: 3069347) +DecimalFloatMaxTest:testMaxDeployed(bytes32,bytes32) (runs: 5105, μ: 3069431, ~: 3069369) +DecimalFloatMinTest:testMinDeployed(bytes32,bytes32) (runs: 5105, μ: 3069428, ~: 3069367) +DecimalFloatMinusTest:testMinusDeployed(bytes32) (runs: 5105, μ: 3069165, ~: 3069165) +DecimalFloatMulTest:testMulDeployed(bytes32,bytes32) (runs: 5105, μ: 3073023, ~: 3073834) +DecimalFloatPackLosslessTest:testPackDeployed(int224,int32) (runs: 5105, μ: 158769, ~: 158769) +DecimalFloatParseTest:testParseDeployed(string) (runs: 5105, μ: 3071798, ~: 3071667) +DecimalFloatPowTest:testPowDeployed(bytes32,bytes32) (runs: 5105, μ: 3082112, ~: 3080775) +DecimalFloatSqrtTest:testSqrtDeployed(bytes32) (runs: 5105, μ: 3082208, ~: 3081993) +DecimalFloatSubTest:testSubDeployed(bytes32,bytes32) (runs: 5105, μ: 3073432, ~: 3073459) +DecimalFloatToFixedDecimalLosslessTest:testToFixedDecimalLosslessDeployed(bytes32,uint8) (runs: 5105, μ: 3070523, ~: 3070410) +DecimalFloatToFixedDecimalLossyTest:testToFixedDecimalLossyDeployed(bytes32,uint8) (runs: 5105, μ: 3070615, ~: 3070894) +LibDecimalFloatAbsTest:testAbsMinValue(int32) (runs: 5104, μ: 5121, ~: 5121) +LibDecimalFloatAbsTest:testAbsNegative(int256,int32) (runs: 5105, μ: 10475, ~: 10702) +LibDecimalFloatAbsTest:testAbsNonNegative(int256,int32) (runs: 5105, μ: 9641, ~: 9392) LibDecimalFloatCeilTest:testCeilExamples() (gas: 30794) -LibDecimalFloatCeilTest:testCeilInRange(int224,int256) (runs: 5103, μ: 11040, ~: 10713) -LibDecimalFloatCeilTest:testCeilLessThanMin(int224,int256) (runs: 5103, μ: 10059, ~: 9820) -LibDecimalFloatCeilTest:testCeilNonNegative(int224,int256) (runs: 5103, μ: 8961, ~: 9212) -LibDecimalFloatCeilTest:testCeilNotReverts(bytes32) (runs: 5103, μ: 598, ~: 411) -LibDecimalFloatCeilTest:testCeilZero(int32) (runs: 5103, μ: 5438, ~: 5438) +LibDecimalFloatCeilTest:testCeilInRange(int224,int256) (runs: 5105, μ: 11040, ~: 10713) +LibDecimalFloatCeilTest:testCeilLessThanMin(int224,int256) (runs: 5105, μ: 10059, ~: 9820) +LibDecimalFloatCeilTest:testCeilNonNegative(int224,int256) (runs: 5105, μ: 8961, ~: 9212) +LibDecimalFloatCeilTest:testCeilNotReverts(bytes32) (runs: 5105, μ: 598, ~: 411) +LibDecimalFloatCeilTest:testCeilZero(int32) (runs: 5105, μ: 5438, ~: 5438) LibDecimalFloatConstantsTest:testFloatE() (gas: 3357) LibDecimalFloatConstantsTest:testFloatHalf() (gas: 3336) LibDecimalFloatConstantsTest:testFloatMaxNegativeValue() (gas: 3379) -LibDecimalFloatConstantsTest:testFloatMaxNegativeValueIsMax(bytes32) (runs: 5103, μ: 4488, ~: 4594) +LibDecimalFloatConstantsTest:testFloatMaxNegativeValueIsMax(bytes32) (runs: 5105, μ: 4488, ~: 4594) LibDecimalFloatConstantsTest:testFloatMaxPositiveValue() (gas: 3335) -LibDecimalFloatConstantsTest:testFloatMaxPositiveValueIsMax(bytes32) (runs: 5103, μ: 3545, ~: 3586) +LibDecimalFloatConstantsTest:testFloatMaxPositiveValueIsMax(bytes32) (runs: 5105, μ: 3545, ~: 3586) LibDecimalFloatConstantsTest:testFloatMinNegativeValue() (gas: 3335) -LibDecimalFloatConstantsTest:testFloatMinNegativeValueIsMin(bytes32) (runs: 5103, μ: 3496, ~: 3457) +LibDecimalFloatConstantsTest:testFloatMinNegativeValueIsMin(bytes32) (runs: 5105, μ: 3496, ~: 3457) LibDecimalFloatConstantsTest:testFloatMinPositiveValue() (gas: 3357) -LibDecimalFloatConstantsTest:testFloatMinPositiveValueIsMin(bytes32) (runs: 5103, μ: 4938, ~: 4870) +LibDecimalFloatConstantsTest:testFloatMinPositiveValueIsMin(bytes32) (runs: 5105, μ: 4938, ~: 4870) LibDecimalFloatConstantsTest:testFloatOne() (gas: 3358) LibDecimalFloatConstantsTest:testFloatTwo() (gas: 3380) LibDecimalFloatConstantsTest:testFloatZero() (gas: 3337) -LibDecimalFloatDecimalAddTest:testAddPacked(bytes32,bytes32) (runs: 5103, μ: 9762, ~: 9832) -LibDecimalFloatDecimalLosslessTest:testFromFixedDecimalLosslessFail(uint256,uint8) (runs: 5102, μ: 9615, ~: 9663) -LibDecimalFloatDecimalLosslessTest:testFromFixedDecimalLosslessMem(uint256,uint8) (runs: 5103, μ: 8130, ~: 8048) -LibDecimalFloatDecimalLosslessTest:testFromFixedDecimalLosslessPass(uint256,uint8) (runs: 5103, μ: 7452, ~: 7424) +LibDecimalFloatDecimalAddTest:testAddPacked(bytes32,bytes32) (runs: 5105, μ: 9762, ~: 9832) +LibDecimalFloatDecimalLosslessTest:testFromFixedDecimalLosslessFail(uint256,uint8) (runs: 5104, μ: 9615, ~: 9663) +LibDecimalFloatDecimalLosslessTest:testFromFixedDecimalLosslessMem(uint256,uint8) (runs: 5105, μ: 8130, ~: 8048) +LibDecimalFloatDecimalLosslessTest:testFromFixedDecimalLosslessPass(uint256,uint8) (runs: 5105, μ: 7452, ~: 7424) LibDecimalFloatDecimalLosslessTest:testToFixedDecimalLosslessFail() (gas: 4894) -LibDecimalFloatDecimalLosslessTest:testToFixedDecimalLosslessPacked(bytes32,uint8) (runs: 5103, μ: 6718, ~: 6161) -LibDecimalFloatDecimalLosslessTest:testToFixedDecimalLosslessPass(int256,int256,uint8) (runs: 5103, μ: 15805, ~: 15768) -LibDecimalFloatDecimalTest:testFixedDecimalRoundTripLossless(uint256,uint8) (runs: 5103, μ: 9110, ~: 9031) +LibDecimalFloatDecimalLosslessTest:testToFixedDecimalLosslessPacked(bytes32,uint8) (runs: 5105, μ: 6719, ~: 6161) +LibDecimalFloatDecimalLosslessTest:testToFixedDecimalLosslessPass(int256,int256,uint8) (runs: 5105, μ: 15805, ~: 15768) +LibDecimalFloatDecimalTest:testFixedDecimalRoundTripLossless(uint256,uint8) (runs: 5105, μ: 9110, ~: 9031) LibDecimalFloatDecimalTest:testFromFixedDecimalLossyComplicated() (gas: 685958) LibDecimalFloatDecimalTest:testFromFixedDecimalLossyMax() (gas: 673463) LibDecimalFloatDecimalTest:testFromFixedDecimalLossyOne() (gas: 686002) LibDecimalFloatDecimalTest:testFromFixedDecimalLossyOneMillion() (gas: 685937) LibDecimalFloatDecimalTest:testFromFixedDecimalLossyOverflow() (gas: 715261) -LibDecimalFloatDecimalTest:testFromFixedDecimalLossyPacked(uint256,uint8) (runs: 5103, μ: 9481, ~: 9396) -LibDecimalFloatDecimalTest:testFromFixedDecimalLossyTruncateOne(uint256,uint8) (runs: 5103, μ: 5978, ~: 5937) -LibDecimalFloatDecimalTest:testFromFixedDecimalLossyTruncateZero(uint256,uint8) (runs: 5103, μ: 6062, ~: 5860) -LibDecimalFloatDecimalTest:testToFixedDecimalLosslessScaleUp(int256,int256,uint8) (runs: 5100, μ: 15987, ~: 15862) -LibDecimalFloatDecimalTest:testToFixedDecimalLossyExponentOverflow(int256,int256,uint8) (runs: 5103, μ: 14963, ~: 14729) -LibDecimalFloatDecimalTest:testToFixedDecimalLossyIdentity(int256,uint8) (runs: 5103, μ: 10153, ~: 9811) -LibDecimalFloatDecimalTest:testToFixedDecimalLossyNegative(int256,int256,uint8) (runs: 5103, μ: 10826, ~: 11076) -LibDecimalFloatDecimalTest:testToFixedDecimalLossyPacked(bytes32,uint8) (runs: 5103, μ: 6804, ~: 6905) -LibDecimalFloatDecimalTest:testToFixedDecimalLossyScaleUpOverflow(int256,int256,uint8) (runs: 5099, μ: 15348, ~: 15612) -LibDecimalFloatDecimalTest:testToFixedDecimalLossyTruncate(int256,int256,uint8) (runs: 5103, μ: 14492, ~: 14212) +LibDecimalFloatDecimalTest:testFromFixedDecimalLossyPacked(uint256,uint8) (runs: 5105, μ: 9481, ~: 9396) +LibDecimalFloatDecimalTest:testFromFixedDecimalLossyTruncateOne(uint256,uint8) (runs: 5105, μ: 5978, ~: 5937) +LibDecimalFloatDecimalTest:testFromFixedDecimalLossyTruncateZero(uint256,uint8) (runs: 5105, μ: 6062, ~: 5860) +LibDecimalFloatDecimalTest:testToFixedDecimalLosslessScaleUp(int256,int256,uint8) (runs: 5101, μ: 15987, ~: 15862) +LibDecimalFloatDecimalTest:testToFixedDecimalLossyExponentOverflow(int256,int256,uint8) (runs: 5105, μ: 14963, ~: 14729) +LibDecimalFloatDecimalTest:testToFixedDecimalLossyIdentity(int256,uint8) (runs: 5105, μ: 10153, ~: 9811) +LibDecimalFloatDecimalTest:testToFixedDecimalLossyNegative(int256,int256,uint8) (runs: 5105, μ: 10826, ~: 11076) +LibDecimalFloatDecimalTest:testToFixedDecimalLossyPacked(bytes32,uint8) (runs: 5105, μ: 6804, ~: 6905) +LibDecimalFloatDecimalTest:testToFixedDecimalLossyScaleUpOverflow(int256,int256,uint8) (runs: 5100, μ: 15348, ~: 15612) +LibDecimalFloatDecimalTest:testToFixedDecimalLossyTruncate(int256,int256,uint8) (runs: 5105, μ: 14492, ~: 14212) LibDecimalFloatDecimalTest:testToFixedDecimalLossyTruncateLossless() (gas: 14500) -LibDecimalFloatDecimalTest:testToFixedDecimalLossyUnderflow(int256,int256,uint8) (runs: 5103, μ: 13738, ~: 13602) -LibDecimalFloatDecimalTest:testToFixedDecimalLossyZero(int256,uint8) (runs: 5103, μ: 4575, ~: 4575) -LibDecimalFloatDivTest:testDivByNegativeOneFloat(int224,int32) (runs: 5103, μ: 327527, ~: 326998) -LibDecimalFloatDivTest:testDivByOneFloat(int224,int32) (runs: 5103, μ: 303107, ~: 302160) -LibDecimalFloatDivTest:testDivPacked(bytes32,bytes32) (runs: 5103, μ: 11577, ~: 11667) -LibDecimalFloatEqTest:testEqPacked(bytes32,bytes32) (runs: 5103, μ: 5524, ~: 5450) -LibDecimalFloatEqTest:testEqXNotYExponents(bytes32,bytes32) (runs: 5103, μ: 4341, ~: 4234) -LibDecimalFloatEqTest:testEqZero(int32) (runs: 5103, μ: 5133, ~: 5133) +LibDecimalFloatDecimalTest:testToFixedDecimalLossyUnderflow(int256,int256,uint8) (runs: 5105, μ: 13738, ~: 13602) +LibDecimalFloatDecimalTest:testToFixedDecimalLossyZero(int256,uint8) (runs: 5105, μ: 4575, ~: 4575) +LibDecimalFloatDivTest:testDivByNegativeOneFloat(int224,int32) (runs: 5105, μ: 328862, ~: 328318) +LibDecimalFloatDivTest:testDivByOneFloat(int224,int32) (runs: 5105, μ: 304449, ~: 303480) +LibDecimalFloatDivTest:testDivPacked(bytes32,bytes32) (runs: 5105, μ: 11630, ~: 11706) +LibDecimalFloatEqTest:testEqPacked(bytes32,bytes32) (runs: 5105, μ: 5524, ~: 5450) +LibDecimalFloatEqTest:testEqXNotYExponents(bytes32,bytes32) (runs: 5105, μ: 4341, ~: 4234) +LibDecimalFloatEqTest:testEqZero(int32) (runs: 5105, μ: 5133, ~: 5133) LibDecimalFloatFloorTest:testFloorExamples() (gas: 38387) LibDecimalFloatFloorTest:testFloorGas0() (gas: 960) LibDecimalFloatFloorTest:testFloorGasTiny() (gas: 881) LibDecimalFloatFloorTest:testFloorGasZero() (gas: 553) -LibDecimalFloatFloorTest:testFloorInRange(int224,int256) (runs: 5103, μ: 11032, ~: 11044) -LibDecimalFloatFloorTest:testFloorLessThanMin(int224,int256) (runs: 5103, μ: 10284, ~: 10293) -LibDecimalFloatFloorTest:testFloorNonNegative(int224,int256) (runs: 5103, μ: 9546, ~: 9806) -LibDecimalFloatFloorTest:testFloorNotReverts(bytes32) (runs: 5103, μ: 461, ~: 365) +LibDecimalFloatFloorTest:testFloorInRange(int224,int256) (runs: 5105, μ: 11032, ~: 11044) +LibDecimalFloatFloorTest:testFloorLessThanMin(int224,int256) (runs: 5105, μ: 10284, ~: 10293) +LibDecimalFloatFloorTest:testFloorNonNegative(int224,int256) (runs: 5105, μ: 9546, ~: 9806) +LibDecimalFloatFloorTest:testFloorNotReverts(bytes32) (runs: 5105, μ: 461, ~: 365) LibDecimalFloatFracTest:testFracExamples() (gas: 39135) LibDecimalFloatFracTest:testFracGas0() (gas: 960) LibDecimalFloatFracTest:testFracGasTiny() (gas: 836) LibDecimalFloatFracTest:testFracGasZero() (gas: 820) -LibDecimalFloatFracTest:testFracInRange(int224,int256) (runs: 5103, μ: 10847, ~: 10859) -LibDecimalFloatFracTest:testFracLessThanMin(int224,int256) (runs: 5103, μ: 10273, ~: 10280) -LibDecimalFloatFracTest:testFracNonNegative(int224,int256) (runs: 5103, μ: 9805, ~: 10066) -LibDecimalFloatFracTest:testFracNotReverts(bytes32) (runs: 5103, μ: 630, ~: 621) +LibDecimalFloatFracTest:testFracInRange(int224,int256) (runs: 5105, μ: 10847, ~: 10859) +LibDecimalFloatFracTest:testFracLessThanMin(int224,int256) (runs: 5105, μ: 10273, ~: 10280) +LibDecimalFloatFracTest:testFracNonNegative(int224,int256) (runs: 5105, μ: 9805, ~: 10066) +LibDecimalFloatFracTest:testFracNotReverts(bytes32) (runs: 5105, μ: 630, ~: 621) LibDecimalFloatGtTest:testGtGasAZero() (gas: 973) LibDecimalFloatGtTest:testGtGasBZero() (gas: 973) LibDecimalFloatGtTest:testGtGasBothZero() (gas: 751) LibDecimalFloatGtTest:testGtGasDifferentSigns() (gas: 974) LibDecimalFloatGtTest:testGtGasExponentDiffOverflow() (gas: 1143) -LibDecimalFloatGtTest:testGtOneEAny(bytes32) (runs: 5103, μ: 3494, ~: 3494) -LibDecimalFloatGtTest:testGtReference(int224,int32,int224,int32) (runs: 5103, μ: 8067, ~: 6272) -LibDecimalFloatGtTest:testGtX(int224,int32) (runs: 5103, μ: 3882, ~: 3882) -LibDecimalFloatGtTest:testGtXEAnyVsXEAny(int256,int32,int32) (runs: 5103, μ: 10592, ~: 10332) -LibDecimalFloatGtTest:testGtXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5103, μ: 11144, ~: 11349) -LibDecimalFloatGtTest:testGtXNotY(bytes32,bytes32) (runs: 5103, μ: 4341, ~: 4232) -LibDecimalFloatGtTest:testGtXPositiveYNegative(int256,int32,int256,int32) (runs: 5103, μ: 13764, ~: 13595) -LibDecimalFloatGtTest:testGtXPositiveYZero(int256,int32,int32) (runs: 5103, μ: 10273, ~: 10026) -LibDecimalFloatGtTest:testGtZero(int32,int32) (runs: 5103, μ: 4793, ~: 4793) +LibDecimalFloatGtTest:testGtOneEAny(bytes32) (runs: 5105, μ: 3494, ~: 3494) +LibDecimalFloatGtTest:testGtReference(int224,int32,int224,int32) (runs: 5105, μ: 8067, ~: 6272) +LibDecimalFloatGtTest:testGtX(int224,int32) (runs: 5105, μ: 3882, ~: 3882) +LibDecimalFloatGtTest:testGtXEAnyVsXEAny(int256,int32,int32) (runs: 5105, μ: 10592, ~: 10332) +LibDecimalFloatGtTest:testGtXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5105, μ: 11144, ~: 11349) +LibDecimalFloatGtTest:testGtXNotY(bytes32,bytes32) (runs: 5105, μ: 4341, ~: 4232) +LibDecimalFloatGtTest:testGtXPositiveYNegative(int256,int32,int256,int32) (runs: 5105, μ: 13764, ~: 13595) +LibDecimalFloatGtTest:testGtXPositiveYZero(int256,int32,int32) (runs: 5105, μ: 10273, ~: 10026) +LibDecimalFloatGtTest:testGtZero(int32,int32) (runs: 5105, μ: 4793, ~: 4793) LibDecimalFloatGteTest:testGteGasAZero() (gas: 976) LibDecimalFloatGteTest:testGteGasBZero() (gas: 1020) LibDecimalFloatGteTest:testGteGasBothZero() (gas: 753) LibDecimalFloatGteTest:testGteGasDifferentSigns() (gas: 996) LibDecimalFloatGteTest:testGteGasExponentDiffOverflow() (gas: 1102) -LibDecimalFloatGteTest:testGteOneEAny(bytes32) (runs: 5103, μ: 3494, ~: 3494) -LibDecimalFloatGteTest:testGteReference(int224,int32,int224,int32) (runs: 5103, μ: 8115, ~: 6344) -LibDecimalFloatGteTest:testGteX(int224,int32) (runs: 5103, μ: 3925, ~: 3925) -LibDecimalFloatGteTest:testGteXEAnyVsXEAny(int256,int32,int32) (runs: 5103, μ: 10622, ~: 10364) -LibDecimalFloatGteTest:testGteXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5103, μ: 11156, ~: 11361) -LibDecimalFloatGteTest:testGteXNotLtY(bytes32,bytes32) (runs: 5103, μ: 3947, ~: 3873) -LibDecimalFloatGteTest:testGteXPositiveYNegative(int256,int32,int256,int32) (runs: 5103, μ: 13794, ~: 13623) -LibDecimalFloatGteTest:testGteXPositiveYZero(int256,int32,int32) (runs: 5103, μ: 9551, ~: 9170) -LibDecimalFloatGteTest:testGteZero(int32,int32) (runs: 5103, μ: 4838, ~: 4838) +LibDecimalFloatGteTest:testGteOneEAny(bytes32) (runs: 5105, μ: 3494, ~: 3494) +LibDecimalFloatGteTest:testGteReference(int224,int32,int224,int32) (runs: 5105, μ: 8115, ~: 6344) +LibDecimalFloatGteTest:testGteX(int224,int32) (runs: 5105, μ: 3925, ~: 3925) +LibDecimalFloatGteTest:testGteXEAnyVsXEAny(int256,int32,int32) (runs: 5105, μ: 10622, ~: 10364) +LibDecimalFloatGteTest:testGteXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5105, μ: 11156, ~: 11361) +LibDecimalFloatGteTest:testGteXNotLtY(bytes32,bytes32) (runs: 5105, μ: 3947, ~: 3873) +LibDecimalFloatGteTest:testGteXPositiveYNegative(int256,int32,int256,int32) (runs: 5105, μ: 13794, ~: 13623) +LibDecimalFloatGteTest:testGteXPositiveYZero(int256,int32,int32) (runs: 5105, μ: 9551, ~: 9170) +LibDecimalFloatGteTest:testGteZero(int32,int32) (runs: 5105, μ: 4838, ~: 4838) LibDecimalFloatImplementationAddTest:testAdd123456789987654321() (gas: 4811) LibDecimalFloatImplementationAddTest:testAdd123456789e9987654321() (gas: 4861) -LibDecimalFloatImplementationAddTest:testAddNeverRevert(int256,int256,int256,int256) (runs: 5103, μ: 13101, ~: 13034) +LibDecimalFloatImplementationAddTest:testAddNeverRevert(int256,int256,int256,int256) (runs: 5105, μ: 13101, ~: 13034) LibDecimalFloatImplementationAddTest:testAddOneOneNotMaximized() (gas: 6148) LibDecimalFloatImplementationAddTest:testAddOneOnePreMaximized() (gas: 4300) LibDecimalFloatImplementationAddTest:testAddOneZero() (gas: 3666) -LibDecimalFloatImplementationAddTest:testAddSameExponent(int256,int256) (runs: 5102, μ: 6865, ~: 6935) +LibDecimalFloatImplementationAddTest:testAddSameExponent(int256,int256) (runs: 5104, μ: 6865, ~: 6935) LibDecimalFloatImplementationAddTest:testAddZero() (gas: 3665) -LibDecimalFloatImplementationAddTest:testAddZeroAnyExponent(int128) (runs: 5103, μ: 9293, ~: 9271) +LibDecimalFloatImplementationAddTest:testAddZeroAnyExponent(int128) (runs: 5105, μ: 9293, ~: 9271) LibDecimalFloatImplementationAddTest:testAddZeroOne() (gas: 3664) -LibDecimalFloatImplementationAddTest:testAddZeroToAnyNonZero(int256,int256,int256) (runs: 5103, μ: 13974, ~: 13948) +LibDecimalFloatImplementationAddTest:testAddZeroToAnyNonZero(int256,int256,int256) (runs: 5105, μ: 13974, ~: 13948) LibDecimalFloatImplementationAddTest:testAddingSmallToLargeReturnsLargeExamples() (gas: 92086) -LibDecimalFloatImplementationAddTest:testAddingSmallToLargeReturnsLargeFuzz(int256,int256,int256,int256) (runs: 5101, μ: 16979, ~: 16963) +LibDecimalFloatImplementationAddTest:testAddingSmallToLargeReturnsLargeFuzz(int256,int256,int256,int256) (runs: 5102, μ: 16980, ~: 16963) LibDecimalFloatImplementationAddTest:testGasAddOne() (gas: 1342) LibDecimalFloatImplementationAddTest:testGasAddZero() (gas: 360) -LibDecimalFloatImplementationAddTest:testOverflowChecks(int256,int256) (runs: 5103, μ: 3857, ~: 3843) +LibDecimalFloatImplementationAddTest:testOverflowChecks(int256,int256) (runs: 5105, μ: 3857, ~: 3843) LibDecimalFloatImplementationCharacteristicMantissaTest:testCharacteristicMantissaExamples() (gas: 30611) -LibDecimalFloatImplementationDivTest:testDiv1Over3() (gas: 7062) -LibDecimalFloatImplementationDivTest:testDiv1Over3Gas0() (gas: 2277) -LibDecimalFloatImplementationDivTest:testDiv1Over3Gas10() (gas: 19442) -LibDecimalFloatImplementationDivTest:testDiv1Over9Over1Over3() (gas: 14735) -LibDecimalFloatImplementationDivTest:testDiv1e18Over3() (gas: 6766) -LibDecimalFloatImplementationDivTest:testDivBy1(int256,int256) (runs: 5103, μ: 335332, ~: 339387) -LibDecimalFloatImplementationDivTest:testDivByNegativeOneFloat(int256,int256) (runs: 5103, μ: 337838, ~: 342152) -LibDecimalFloatImplementationDivTest:testDivNegative1Over3() (gas: 7157) -LibDecimalFloatImplementationDivTest:testDivOOMs5and2() (gas: 6387) -LibDecimalFloatImplementationDivTest:testDivOOMsOverTen() (gas: 7077) -LibDecimalFloatImplementationDivTest:testDivTenOverOOMs() (gas: 6990) -LibDecimalFloatImplementationDivTest:testUnnormalizedThreesDiv0(int256,int256) (runs: 107, μ: 27473511, ~: 27491668) +LibDecimalFloatImplementationDivTest:testDiv1Over3() (gas: 7100) +LibDecimalFloatImplementationDivTest:testDiv1Over3Gas0() (gas: 2315) +LibDecimalFloatImplementationDivTest:testDiv1Over3Gas10() (gas: 19624) +LibDecimalFloatImplementationDivTest:testDiv1Over9Over1Over3() (gas: 14799) +LibDecimalFloatImplementationDivTest:testDiv1e18Over3() (gas: 6782) +LibDecimalFloatImplementationDivTest:testDivBy1(int256,int256) (runs: 5105, μ: 336608, ~: 340641) +LibDecimalFloatImplementationDivTest:testDivByNegativeOneFloat(int256,int256) (runs: 5105, μ: 339113, ~: 343299) +LibDecimalFloatImplementationDivTest:testDivNegative1Over3() (gas: 7173) +LibDecimalFloatImplementationDivTest:testDivOOMs5and2() (gas: 6425) +LibDecimalFloatImplementationDivTest:testDivOOMsOverTen() (gas: 7049) +LibDecimalFloatImplementationDivTest:testDivTenOverOOMs() (gas: 7006) +LibDecimalFloatImplementationDivTest:testDivZero(int256,int256) (runs: 5105, μ: 12126, ~: 12122) +LibDecimalFloatImplementationDivTest:testUnnormalizedThreesDiv0(int256,int256) (runs: 109, μ: 27566756, ~: 27586532) LibDecimalFloatImplementationEqTest:testEqGasAZero() (gas: 430) LibDecimalFloatImplementationEqTest:testEqGasBZero() (gas: 473) LibDecimalFloatImplementationEqTest:testEqGasBothZero() (gas: 450) LibDecimalFloatImplementationEqTest:testEqGasDifferentSigns() (gas: 482) LibDecimalFloatImplementationEqTest:testEqGasExponentDiffOverflow() (gas: 533) -LibDecimalFloatImplementationEqTest:testEqNotReverts(int256,int256,int256,int256) (runs: 5103, μ: 654, ~: 679) -LibDecimalFloatImplementationEqTest:testEqOneEAny(int256,int256) (runs: 5103, μ: 3416, ~: 3416) -LibDecimalFloatImplementationEqTest:testEqReference(int256,int256,int256,int256) (runs: 5103, μ: 9906, ~: 11456) -LibDecimalFloatImplementationEqTest:testEqX(int256) (runs: 5103, μ: 3392, ~: 3392) -LibDecimalFloatImplementationEqTest:testEqXEAnyVsXEAny(int256,int256,int256) (runs: 5103, μ: 4718, ~: 4714) -LibDecimalFloatImplementationEqTest:testEqXEqY(int256,int256,int256,int256) (runs: 5103, μ: 732, ~: 753) -LibDecimalFloatImplementationEqTest:testEqXNotY(int256,int256,int256,int256) (runs: 5103, μ: 3928, ~: 3953) -LibDecimalFloatImplementationEqTest:testEqZero(int256,int256) (runs: 5103, μ: 3440, ~: 3440) -LibDecimalFloatImplementationInvTest:testInv0() (gas: 5527) -LibDecimalFloatImplementationInvTest:testInvGas0() (gas: 2081) -LibDecimalFloatImplementationInvTest:testInvReference(int256,int256) (runs: 5103, μ: 14576, ~: 14532) -LibDecimalFloatImplementationInvTest:testInvSlowGas0() (gas: 2265) +LibDecimalFloatImplementationEqTest:testEqNotReverts(int256,int256,int256,int256) (runs: 5105, μ: 654, ~: 679) +LibDecimalFloatImplementationEqTest:testEqOneEAny(int256,int256) (runs: 5105, μ: 3416, ~: 3416) +LibDecimalFloatImplementationEqTest:testEqReference(int256,int256,int256,int256) (runs: 5105, μ: 9904, ~: 11456) +LibDecimalFloatImplementationEqTest:testEqX(int256) (runs: 5105, μ: 3392, ~: 3392) +LibDecimalFloatImplementationEqTest:testEqXEAnyVsXEAny(int256,int256,int256) (runs: 5104, μ: 4718, ~: 4714) +LibDecimalFloatImplementationEqTest:testEqXEqY(int256,int256,int256,int256) (runs: 5105, μ: 732, ~: 753) +LibDecimalFloatImplementationEqTest:testEqXNotY(int256,int256,int256,int256) (runs: 5105, μ: 3928, ~: 3953) +LibDecimalFloatImplementationEqTest:testEqZero(int256,int256) (runs: 5105, μ: 3440, ~: 3440) +LibDecimalFloatImplementationInvTest:testInv0() (gas: 5547) +LibDecimalFloatImplementationInvTest:testInvGas0() (gas: 2101) +LibDecimalFloatImplementationInvTest:testInvReference(int256,int256) (runs: 5104, μ: 14617, ~: 14572) +LibDecimalFloatImplementationInvTest:testInvSlowGas0() (gas: 2285) LibDecimalFloatImplementationLog10Test:testExactLogs() (gas: 1265623) LibDecimalFloatImplementationLog10Test:testExactLookupsLog10() (gas: 1301577) -LibDecimalFloatImplementationLog10Test:testInterpolatedLookups() (gas: 1260156) +LibDecimalFloatImplementationLog10Test:testInterpolatedLookups() (gas: 1260176) LibDecimalFloatImplementationLog10Test:testLog10One() (gas: 1463200) -LibDecimalFloatImplementationLog10Test:testSub1() (gas: 1262077) -LibDecimalFloatImplementationMaximizeTest:testMaximizedEverything(int256,int256) (runs: 5103, μ: 9477, ~: 9455) +LibDecimalFloatImplementationLog10Test:testSub1() (gas: 1262148) +LibDecimalFloatImplementationMaximizeTest:testMaximizedEverything(int256,int256) (runs: 5105, μ: 9477, ~: 9455) LibDecimalFloatImplementationMaximizeTest:testMaximizedExamples() (gas: 165819) -LibDecimalFloatImplementationMaximizeTest:testMaximizedIdempotent(int256,int256) (runs: 5103, μ: 9902, ~: 9868) -LibDecimalFloatImplementationMaximizeTest:testMaximizedReference(int256,int256) (runs: 5103, μ: 13375, ~: 14263) -LibDecimalFloatImplementationMinusTest:testMinusIsSubZero(int256,int256,int256) (runs: 5103, μ: 12949, ~: 12929) +LibDecimalFloatImplementationMaximizeTest:testMaximizedIdempotent(int256,int256) (runs: 5105, μ: 9902, ~: 9868) +LibDecimalFloatImplementationMaximizeTest:testMaximizedReference(int256,int256) (runs: 5105, μ: 13375, ~: 14263) +LibDecimalFloatImplementationMinusTest:testMinusIsSubZero(int256,int256,int256) (runs: 5105, μ: 12949, ~: 12929) LibDecimalFloatImplementationMulTest:testMul123456789987654321() (gas: 5559) -LibDecimalFloatImplementationMulTest:testMul123456789987654321WithExponents(int128,int128) (runs: 5103, μ: 15078, ~: 15160) +LibDecimalFloatImplementationMulTest:testMul123456789987654321WithExponents(int128,int128) (runs: 5105, μ: 15078, ~: 15160) LibDecimalFloatImplementationMulTest:testMul1_3979_0_5() (gas: 6193) LibDecimalFloatImplementationMulTest:testMul1e181e19() (gas: 5603) LibDecimalFloatImplementationMulTest:testMulGasOne() (gas: 1470) @@ -194,106 +195,106 @@ LibDecimalFloatImplementationMulTest:testMulGasZero() (gas: 325) LibDecimalFloatImplementationMulTest:testMulMaxSignedCoefficient() (gas: 6674) LibDecimalFloatImplementationMulTest:testMulNegativeOne() (gas: 5660) LibDecimalFloatImplementationMulTest:testMulNegativeOneOne() (gas: 5659) -LibDecimalFloatImplementationMulTest:testMulNotRevertAnyExpectation(int256,int256,int256,int256) (runs: 5103, μ: 15244, ~: 14593) +LibDecimalFloatImplementationMulTest:testMulNotRevertAnyExpectation(int256,int256,int256,int256) (runs: 5105, μ: 15243, ~: 14593) LibDecimalFloatImplementationMulTest:testMulOneNegativeOne() (gas: 5635) LibDecimalFloatImplementationMulTest:testMulOneOne() (gas: 5582) LibDecimalFloatImplementationMulTest:testMulOneZero() (gas: 4481) LibDecimalFloatImplementationMulTest:testMulZero0Exponent() (gas: 4503) -LibDecimalFloatImplementationMulTest:testMulZeroAnyExponent(int64,int64) (runs: 5103, μ: 4704, ~: 4704) +LibDecimalFloatImplementationMulTest:testMulZeroAnyExponent(int64,int64) (runs: 5105, μ: 4704, ~: 4704) LibDecimalFloatImplementationMulTest:testMulZeroOne() (gas: 4438) -LibDecimalFloatImplementationPow10Test:testExactLookupsPow10() (gas: 1283164) +LibDecimalFloatImplementationPow10Test:testExactLookupsPow10() (gas: 1283184) LibDecimalFloatImplementationPow10Test:testExactPows() (gas: 1260107) -LibDecimalFloatImplementationPow10Test:testInterpolatedLookupsPower() (gas: 1285555) -LibDecimalFloatImplementationPow10Test:testNoRevert(int224,int32) (runs: 5099, μ: 1259397, ~: 1259129) +LibDecimalFloatImplementationPow10Test:testInterpolatedLookupsPower() (gas: 1285615) +LibDecimalFloatImplementationPow10Test:testNoRevert(int224,int32) (runs: 5102, μ: 1259410, ~: 1259180) LibDecimalFloatImplementationPow10Test:testPow10One() (gas: 1507444) -LibDecimalFloatImplementationSubTest:testSubIsAdd(int256,int256,int256,int256) (runs: 5103, μ: 15801, ~: 15833) -LibDecimalFloatImplementationSubTest:testSubMinSignedValue(int256,int256,int256) (runs: 5103, μ: 14990, ~: 14932) +LibDecimalFloatImplementationSubTest:testSubIsAdd(int256,int256,int256,int256) (runs: 5105, μ: 15801, ~: 15833) +LibDecimalFloatImplementationSubTest:testSubMinSignedValue(int256,int256,int256) (runs: 5105, μ: 14990, ~: 14932) LibDecimalFloatImplementationSubTest:testSubOneFromMax() (gas: 6517) -LibDecimalFloatImplementationSubTest:testSubSelf(int224,int32) (runs: 5103, μ: 5510, ~: 5620) -LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedAB(uint256,uint256,uint256,int256) (runs: 5103, μ: 9961, ~: 9888) -LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedABOverflow(uint256,uint256,uint256,int256) (runs: 5103, μ: 11207, ~: 11200) -LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedBA(uint256,uint256,uint256,int256) (runs: 5103, μ: 11205, ~: 11198) -LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedBAOverflow(uint256,uint256,int256) (runs: 5103, μ: 9070, ~: 9018) -LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyNegative(uint256,uint256,uint256,int256) (runs: 5103, μ: 9968, ~: 9892) -LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyNegativeOverflow(uint256,uint256,uint256,int256) (runs: 5103, μ: 11200, ~: 11190) -LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyPositive(uint256,uint256,uint256,int256) (runs: 5103, μ: 9103, ~: 9033) -LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyPositiveOverflow(uint256,uint256,uint256,int256) (runs: 5103, μ: 11090, ~: 11086) +LibDecimalFloatImplementationSubTest:testSubSelf(int224,int32) (runs: 5105, μ: 5510, ~: 5620) +LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedAB(uint256,uint256,uint256,int256) (runs: 5105, μ: 9961, ~: 9888) +LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedABOverflow(uint256,uint256,uint256,int256) (runs: 5105, μ: 11207, ~: 11200) +LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedBA(uint256,uint256,uint256,int256) (runs: 5105, μ: 11205, ~: 11198) +LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedBAOverflow(uint256,uint256,int256) (runs: 5105, μ: 9070, ~: 9018) +LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyNegative(uint256,uint256,uint256,int256) (runs: 5105, μ: 9968, ~: 9892) +LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyNegativeOverflow(uint256,uint256,uint256,int256) (runs: 5105, μ: 11200, ~: 11190) +LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyPositive(uint256,uint256,uint256,int256) (runs: 5105, μ: 9102, ~: 9033) +LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyPositiveOverflow(uint256,uint256,uint256,int256) (runs: 5105, μ: 11090, ~: 11086) LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentExamples() (gas: 13429) LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentLargerExponentOverflowRescaleRevert(int256,int256,int256) (runs: 5099, μ: 14426, ~: 14395) -LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentLargerExponentVeryLargeDiffRevert(int256,int256,int256) (runs: 5103, μ: 13307, ~: 13527) -LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentLargerTargetExponentNoRevert(int256,int256,int256) (runs: 5103, μ: 11669, ~: 11718) -LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentSameExponentNoop(int256,int256) (runs: 5103, μ: 3676, ~: 3676) -LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentSmallerExponentNoRevert(int256,int256,int256) (runs: 5100, μ: 13874, ~: 13665) -LibDecimalFloatInvTest:testInvMem(bytes32) (runs: 5103, μ: 10606, ~: 10628) -LibDecimalFloatIsZeroTest:testIsZeroDeployed(bytes32) (runs: 5103, μ: 3899, ~: 3899) -LibDecimalFloatIsZeroTest:testIsZeroEqZero(bytes32) (runs: 5103, μ: 3527, ~: 3527) -LibDecimalFloatIsZeroTest:testIsZeroExamples(int32) (runs: 5103, μ: 4477, ~: 4477) -LibDecimalFloatIsZeroTest:testNotIsZero(int224,int32) (runs: 5103, μ: 3896, ~: 3896) -LibDecimalFloatLog10Test:testLog10Packed(bytes32) (runs: 5103, μ: 1646020, ~: 1270121) +LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentLargerExponentVeryLargeDiffRevert(int256,int256,int256) (runs: 5105, μ: 13307, ~: 13527) +LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentLargerTargetExponentNoRevert(int256,int256,int256) (runs: 5105, μ: 11669, ~: 11718) +LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentSameExponentNoop(int256,int256) (runs: 5105, μ: 3676, ~: 3676) +LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentSmallerExponentNoRevert(int256,int256,int256) (runs: 5102, μ: 13874, ~: 13665) +LibDecimalFloatInvTest:testInvMem(bytes32) (runs: 5105, μ: 10646, ~: 10686) +LibDecimalFloatIsZeroTest:testIsZeroDeployed(bytes32) (runs: 5105, μ: 3899, ~: 3899) +LibDecimalFloatIsZeroTest:testIsZeroEqZero(bytes32) (runs: 5105, μ: 3527, ~: 3527) +LibDecimalFloatIsZeroTest:testIsZeroExamples(int32) (runs: 5105, μ: 4477, ~: 4477) +LibDecimalFloatIsZeroTest:testNotIsZero(int224,int32) (runs: 5105, μ: 3896, ~: 3896) +LibDecimalFloatLog10Test:testLog10Packed(bytes32) (runs: 5105, μ: 1647560, ~: 1270163) LibDecimalFloatLtTest:testLtExamples() (gas: 3994) LibDecimalFloatLtTest:testLtGasAZero() (gas: 946) LibDecimalFloatLtTest:testLtGasBZero() (gas: 1012) LibDecimalFloatLtTest:testLtGasBothZero() (gas: 969) LibDecimalFloatLtTest:testLtGasDifferentSigns() (gas: 969) LibDecimalFloatLtTest:testLtGasExponentDiffOverflow() (gas: 1053) -LibDecimalFloatLtTest:testLtNegativeVsPositive(int256,int32,int256,int32) (runs: 5103, μ: 13749, ~: 13593) -LibDecimalFloatLtTest:testLtNegativeVsZero(int256,int32,int32) (runs: 5103, μ: 10790, ~: 11008) -LibDecimalFloatLtTest:testLtOneEAny(int224,int32) (runs: 5103, μ: 3905, ~: 3905) -LibDecimalFloatLtTest:testLtReference(bytes32,bytes32) (runs: 5103, μ: 4698, ~: 4998) -LibDecimalFloatLtTest:testLtVsEqualVsGt(bytes32,bytes32) (runs: 5103, μ: 4323, ~: 4210) -LibDecimalFloatLtTest:testLtX(int224) (runs: 5103, μ: 3798, ~: 3798) -LibDecimalFloatLtTest:testLtXEAnyVsXEAny(int256,int32,int32) (runs: 5103, μ: 10557, ~: 10297) -LibDecimalFloatLtTest:testLtXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5103, μ: 11153, ~: 11359) -LibDecimalFloatLtTest:testLtZero(int32,int32) (runs: 5103, μ: 4171, ~: 4171) +LibDecimalFloatLtTest:testLtNegativeVsPositive(int256,int32,int256,int32) (runs: 5105, μ: 13750, ~: 13593) +LibDecimalFloatLtTest:testLtNegativeVsZero(int256,int32,int32) (runs: 5105, μ: 10790, ~: 11008) +LibDecimalFloatLtTest:testLtOneEAny(int224,int32) (runs: 5105, μ: 3905, ~: 3905) +LibDecimalFloatLtTest:testLtReference(bytes32,bytes32) (runs: 5105, μ: 4698, ~: 4998) +LibDecimalFloatLtTest:testLtVsEqualVsGt(bytes32,bytes32) (runs: 5105, μ: 4323, ~: 4210) +LibDecimalFloatLtTest:testLtX(int224) (runs: 5105, μ: 3798, ~: 3798) +LibDecimalFloatLtTest:testLtXEAnyVsXEAny(int256,int32,int32) (runs: 5105, μ: 10557, ~: 10297) +LibDecimalFloatLtTest:testLtXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5105, μ: 11153, ~: 11359) +LibDecimalFloatLtTest:testLtZero(int32,int32) (runs: 5105, μ: 4171, ~: 4171) LibDecimalFloatLteTest:testLteGasAZero() (gas: 997) LibDecimalFloatLteTest:testLteGasBZero() (gas: 999) LibDecimalFloatLteTest:testLteGasBothZero() (gas: 753) LibDecimalFloatLteTest:testLteGasDifferentSigns() (gas: 976) LibDecimalFloatLteTest:testLteGasExponentDiffOverflow() (gas: 1082) -LibDecimalFloatLteTest:testLteOneEAny(bytes32) (runs: 5103, μ: 3493, ~: 3493) -LibDecimalFloatLteTest:testLteReference(int224,int32,int224,int32) (runs: 5103, μ: 8110, ~: 6315) -LibDecimalFloatLteTest:testLteX(int224,int32) (runs: 5103, μ: 3904, ~: 3904) -LibDecimalFloatLteTest:testLteXEAnyVsXEAny(int256,int32,int32) (runs: 5103, μ: 10582, ~: 10321) -LibDecimalFloatLteTest:testLteXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5103, μ: 11177, ~: 11383) -LibDecimalFloatLteTest:testLteXNotLtY(bytes32,bytes32) (runs: 5103, μ: 3882, ~: 3807) -LibDecimalFloatLteTest:testLteXPositiveYNegative(int256,int32,int256,int32) (runs: 5103, μ: 13103, ~: 12931) -LibDecimalFloatLteTest:testLteXPositiveYZero(int256,int32,int32) (runs: 5103, μ: 9575, ~: 9191) -LibDecimalFloatLteTest:testLteZero(int32,int32) (runs: 5103, μ: 4816, ~: 4816) -LibDecimalFloatMaxTest:testMaxX(bytes32) (runs: 5103, μ: 4246, ~: 4246) -LibDecimalFloatMaxTest:testMaxXY(bytes32,bytes32) (runs: 5103, μ: 4689, ~: 4613) -LibDecimalFloatMaxTest:testMaxXYEqual(bytes32) (runs: 5103, μ: 5272, ~: 5272) -LibDecimalFloatMaxTest:testMaxXYGreater(bytes32,bytes32) (runs: 5101, μ: 6129, ~: 6016) +LibDecimalFloatLteTest:testLteOneEAny(bytes32) (runs: 5105, μ: 3493, ~: 3493) +LibDecimalFloatLteTest:testLteReference(int224,int32,int224,int32) (runs: 5105, μ: 8111, ~: 6315) +LibDecimalFloatLteTest:testLteX(int224,int32) (runs: 5105, μ: 3904, ~: 3904) +LibDecimalFloatLteTest:testLteXEAnyVsXEAny(int256,int32,int32) (runs: 5105, μ: 10582, ~: 10321) +LibDecimalFloatLteTest:testLteXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5105, μ: 11177, ~: 11383) +LibDecimalFloatLteTest:testLteXNotLtY(bytes32,bytes32) (runs: 5105, μ: 3882, ~: 3807) +LibDecimalFloatLteTest:testLteXPositiveYNegative(int256,int32,int256,int32) (runs: 5105, μ: 13102, ~: 12931) +LibDecimalFloatLteTest:testLteXPositiveYZero(int256,int32,int32) (runs: 5105, μ: 9575, ~: 9191) +LibDecimalFloatLteTest:testLteZero(int32,int32) (runs: 5105, μ: 4816, ~: 4816) +LibDecimalFloatMaxTest:testMaxX(bytes32) (runs: 5105, μ: 4246, ~: 4246) +LibDecimalFloatMaxTest:testMaxXY(bytes32,bytes32) (runs: 5105, μ: 4689, ~: 4613) +LibDecimalFloatMaxTest:testMaxXYEqual(bytes32) (runs: 5105, μ: 5272, ~: 5272) +LibDecimalFloatMaxTest:testMaxXYGreater(bytes32,bytes32) (runs: 5103, μ: 6129, ~: 6016) LibDecimalFloatMaxTest:testMaxXYLess(bytes32,bytes32) (runs: 5098, μ: 6141, ~: 6027) -LibDecimalFloatMinTest:testMinX(bytes32) (runs: 5103, μ: 4268, ~: 4268) -LibDecimalFloatMinTest:testMinXY(bytes32,bytes32) (runs: 5103, μ: 4689, ~: 4613) -LibDecimalFloatMinTest:testMinXYEqual(bytes32) (runs: 5103, μ: 5292, ~: 5292) -LibDecimalFloatMinTest:testMinXYGreater(bytes32,bytes32) (runs: 5099, μ: 6074, ~: 5961) +LibDecimalFloatMinTest:testMinX(bytes32) (runs: 5105, μ: 4268, ~: 4268) +LibDecimalFloatMinTest:testMinXY(bytes32,bytes32) (runs: 5105, μ: 4689, ~: 4613) +LibDecimalFloatMinTest:testMinXYEqual(bytes32) (runs: 5105, μ: 5292, ~: 5292) +LibDecimalFloatMinTest:testMinXYGreater(bytes32,bytes32) (runs: 5101, μ: 6074, ~: 5961) LibDecimalFloatMinTest:testMinXYLess(bytes32,bytes32) (runs: 5100, μ: 6087, ~: 5972) -LibDecimalFloatMinusTest:testMinusPacked(bytes32) (runs: 5103, μ: 5550, ~: 5550) -LibDecimalFloatMixedTest:testDiv1Over3Mixed() (gas: 11063) -LibDecimalFloatMulTest:testMulPacked(bytes32,bytes32) (runs: 5103, μ: 9629, ~: 10369) -LibDecimalFloatPackTest:testPartsRoundTrip(int224,int32) (runs: 5103, μ: 5352, ~: 5352) -LibDecimalFloatPow10Test:testPow10Packed(bytes32) (runs: 5103, μ: 1646475, ~: 1256455) -LibDecimalFloatPowTest:testNegativePowError(bytes32,bytes32) (runs: 5103, μ: 1247808, ~: 1247883) +LibDecimalFloatMinusTest:testMinusPacked(bytes32) (runs: 5105, μ: 5550, ~: 5550) +LibDecimalFloatMixedTest:testDiv1Over3Mixed() (gas: 11083) +LibDecimalFloatMulTest:testMulPacked(bytes32,bytes32) (runs: 5105, μ: 9629, ~: 10369) +LibDecimalFloatPackTest:testPartsRoundTrip(int224,int32) (runs: 5105, μ: 5352, ~: 5352) +LibDecimalFloatPow10Test:testPow10Packed(bytes32) (runs: 5105, μ: 1643927, ~: 1256517) +LibDecimalFloatPowTest:testNegativePowError(bytes32,bytes32) (runs: 5104, μ: 1247809, ~: 1247883) LibDecimalFloatPowTest:testPowAZero(int32,bytes32) (runs: 5102, μ: 1246471, ~: 1246471) LibDecimalFloatPowTest:testPowAZeroNegative(bytes32) (runs: 5096, μ: 1246849, ~: 1246849) -LibDecimalFloatPowTest:testPowBOne(bytes32) (runs: 5103, μ: 1547891, ~: 1547859) -LibDecimalFloatPowTest:testPowBZero(bytes32,int32) (runs: 5103, μ: 1246035, ~: 1246035) -LibDecimalFloatPowTest:testPows() (gas: 1316472) -LibDecimalFloatPowTest:testRoundTripFuzzPow(bytes32,bytes32) (runs: 5103, μ: 1262547, ~: 1258984) -LibDecimalFloatPowTest:testRoundTripSimple() (gas: 1607470) -LibDecimalFloatSqrtTest:testRoundTripFuzzSqrt(int224,int32) (runs: 5103, μ: 1296851, ~: 1300798) -LibDecimalFloatSqrtTest:testSqrt() (gas: 1293803) -LibDecimalFloatSqrtTest:testSqrtNegative(bytes32) (runs: 5103, μ: 1247737, ~: 1247845) -LibDecimalFloatSqrtTest:testSqrtRoundTrip() (gas: 1423214) -LibDecimalFloatSubTest:testSubPacked(bytes32,bytes32) (runs: 5103, μ: 9974, ~: 9995) +LibDecimalFloatPowTest:testPowBOne(bytes32) (runs: 5105, μ: 1547891, ~: 1547859) +LibDecimalFloatPowTest:testPowBZero(bytes32,int32) (runs: 5105, μ: 1246035, ~: 1246035) +LibDecimalFloatPowTest:testPows() (gas: 1316634) +LibDecimalFloatPowTest:testRoundTripFuzzPow(bytes32,bytes32) (runs: 5105, μ: 1262759, ~: 1259024) +LibDecimalFloatPowTest:testRoundTripSimple() (gas: 1608505) +LibDecimalFloatSqrtTest:testRoundTripFuzzSqrt(int224,int32) (runs: 5105, μ: 1297059, ~: 1300666) +LibDecimalFloatSqrtTest:testSqrt() (gas: 1293854) +LibDecimalFloatSqrtTest:testSqrtNegative(bytes32) (runs: 5105, μ: 1247737, ~: 1247845) +LibDecimalFloatSqrtTest:testSqrtRoundTrip() (gas: 1423485) +LibDecimalFloatSubTest:testSubPacked(bytes32,bytes32) (runs: 5105, μ: 9974, ~: 9995) LibFormatDecimalFloatCountSigFigs:testCountSigFigsExamples() (gas: 83596) -LibFormatDecimalFloatCountSigFigs:testCountSigFigsOne(int256) (runs: 5103, μ: 31879, ~: 31719) -LibFormatDecimalFloatCountSigFigs:testCountSigFigsZero(int256) (runs: 5103, μ: 3764, ~: 3764) +LibFormatDecimalFloatCountSigFigs:testCountSigFigsOne(int256) (runs: 5105, μ: 31874, ~: 31719) +LibFormatDecimalFloatCountSigFigs:testCountSigFigsZero(int256) (runs: 5105, μ: 3764, ~: 3764) LibFormatDecimalFloatToDecimalStringTest:testFormatDecimalCustomSigFigs() (gas: 26601) LibFormatDecimalFloatToDecimalStringTest:testFormatDecimalExamples() (gas: 895496) -LibFormatDecimalFloatToDecimalStringTest:testFormatDecimalRoundTripNegative(int256,uint256) (runs: 5103, μ: 71187, ~: 73798) -LibFormatDecimalFloatToDecimalStringTest:testFormatDecimalRoundTripNonNegative(uint256,uint256) (runs: 5103, μ: 54829, ~: 47508) +LibFormatDecimalFloatToDecimalStringTest:testFormatDecimalRoundTripNegative(int256,uint256) (runs: 5105, μ: 71186, ~: 73798) +LibFormatDecimalFloatToDecimalStringTest:testFormatDecimalRoundTripNonNegative(uint256,uint256) (runs: 5105, μ: 54819, ~: 47508) LibLogTableBytesTest:testToBytesAntiLogTableDec() (gas: 159794) LibLogTableBytesTest:testToBytesAntiLogTableDecSmall() (gas: 162322) LibLogTableBytesTest:testToBytesLogTableDec() (gas: 143165) @@ -316,7 +317,7 @@ LibParseDecimalFloatTest:testParseLiteralDecimalFloatEDot() (gas: 4168) LibParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert5() (gas: 4176) LibParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert6() (gas: 4166) LibParseDecimalFloatTest:testParseLiteralDecimalFloatExponents() (gas: 402907) -LibParseDecimalFloatTest:testParseLiteralDecimalFloatFuzz(uint256,uint8,bool) (runs: 5103, μ: 46202, ~: 37321) +LibParseDecimalFloatTest:testParseLiteralDecimalFloatFuzz(uint256,uint8,bool) (runs: 5105, μ: 46189, ~: 37319) LibParseDecimalFloatTest:testParseLiteralDecimalFloatLeadingZeros() (gas: 59757) LibParseDecimalFloatTest:testParseLiteralDecimalFloatNegativeE() (gas: 6120) LibParseDecimalFloatTest:testParseLiteralDecimalFloatNegativeFrac() (gas: 5115) @@ -324,5 +325,5 @@ LibParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert0() (gas: 27 LibParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert1() (gas: 24934) LibParseDecimalFloatTest:testParseLiteralDecimalFloatSpecific() (gas: 22959) LibParseDecimalFloatTest:testParseLiteralDecimalFloatUnrelated() (gas: 51254) -LibParseDecimalFloatTest:testParsePacked(string) (runs: 5103, μ: 9811, ~: 9692) -TestDecimalFloatUnpackTest:testUnpackDeployed(bytes32) (runs: 5103, μ: 158422, ~: 158422) \ No newline at end of file +LibParseDecimalFloatTest:testParsePacked(string) (runs: 5105, μ: 9811, ~: 9692) +TestDecimalFloatUnpackTest:testUnpackDeployed(bytes32) (runs: 5105, μ: 158422, ~: 158422) \ No newline at end of file diff --git a/test/src/lib/implementation/LibDecimalFloatImplementation.div.t.sol b/test/src/lib/implementation/LibDecimalFloatImplementation.div.t.sol index 1d51cf41..9ffa1ee6 100644 --- a/test/src/lib/implementation/LibDecimalFloatImplementation.div.t.sol +++ b/test/src/lib/implementation/LibDecimalFloatImplementation.div.t.sol @@ -11,8 +11,6 @@ import { } from "src/lib/implementation/LibDecimalFloatImplementation.sol"; import {THREES, ONES} from "../../../lib/LibCommonResults.sol"; -import {console2} from "forge-std/console2.sol"; - contract LibDecimalFloatImplementationDivTest is Test { function divExternal(int256 signedCoefficientA, int256 exponentA, int256 signedCoefficientB, int256 exponentB) external