From 9037bad29b7d3dbf93e29f780cde550c88ec574b Mon Sep 17 00:00:00 2001 From: thedavidmeister Date: Sun, 30 Nov 2025 20:55:27 +0400 Subject: [PATCH 1/5] update datacontract --- foundry.lock | 2 +- lib/rain.datacontract | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/foundry.lock b/foundry.lock index f133982..a23d28e 100644 --- a/foundry.lock +++ b/foundry.lock @@ -3,7 +3,7 @@ "rev": "b8f065fda83b8cd94a6b2fec8fcd911dc3b444fd" }, "lib/rain.datacontract": { - "rev": "9c8d6e64208fb1788ba38cec942e9234725f134d" + "rev": "061bf7cd63496ccbe4f74bcd0c48715883c1c3cb" }, "lib/rain.math.fixedpoint": { "rev": "0a1dbfb246d903768f52687555bab62a5a3d4da3" diff --git a/lib/rain.datacontract b/lib/rain.datacontract index 9c8d6e6..061bf7c 160000 --- a/lib/rain.datacontract +++ b/lib/rain.datacontract @@ -1 +1 @@ -Subproject commit 9c8d6e64208fb1788ba38cec942e9234725f134d +Subproject commit 061bf7cd63496ccbe4f74bcd0c48715883c1c3cb From 0b31c127d4454f5485e3959a80b9d3ea049c0064 Mon Sep 17 00:00:00 2001 From: thedavidmeister Date: Mon, 1 Dec 2025 05:06:03 +0400 Subject: [PATCH 2/5] update fixedpoint --- foundry.lock | 2 +- lib/rain.math.fixedpoint | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/foundry.lock b/foundry.lock index a23d28e..ed4ecc3 100644 --- a/foundry.lock +++ b/foundry.lock @@ -6,7 +6,7 @@ "rev": "061bf7cd63496ccbe4f74bcd0c48715883c1c3cb" }, "lib/rain.math.fixedpoint": { - "rev": "0a1dbfb246d903768f52687555bab62a5a3d4da3" + "rev": "1752e9fbd635901ac7eb177699681ed97290e12e" }, "lib/rain.sol.codegen": { "rev": "00734d24d91db3fc4aac87c0a3c885de28449f96" diff --git a/lib/rain.math.fixedpoint b/lib/rain.math.fixedpoint index 0a1dbfb..1752e9f 160000 --- a/lib/rain.math.fixedpoint +++ b/lib/rain.math.fixedpoint @@ -1 +1 @@ -Subproject commit 0a1dbfb246d903768f52687555bab62a5a3d4da3 +Subproject commit 1752e9fbd635901ac7eb177699681ed97290e12e From 00da201888cc0fbe15862d70ea653ce1ede2c16f Mon Sep 17 00:00:00 2001 From: thedavidmeister Date: Mon, 1 Dec 2025 19:40:05 +0400 Subject: [PATCH 3/5] update codegen --- foundry.lock | 2 +- lib/rain.sol.codegen | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/foundry.lock b/foundry.lock index ed4ecc3..f61e970 100644 --- a/foundry.lock +++ b/foundry.lock @@ -9,7 +9,7 @@ "rev": "1752e9fbd635901ac7eb177699681ed97290e12e" }, "lib/rain.sol.codegen": { - "rev": "00734d24d91db3fc4aac87c0a3c885de28449f96" + "rev": "bd7993b3f6b301e5a667ff687f25b80fdda878cd" }, "lib/rain.string": { "rev": "85d0074c8cd1fdca3285366c15bc9b44b84ad5e9" diff --git a/lib/rain.sol.codegen b/lib/rain.sol.codegen index 00734d2..bd7993b 160000 --- a/lib/rain.sol.codegen +++ b/lib/rain.sol.codegen @@ -1 +1 @@ -Subproject commit 00734d24d91db3fc4aac87c0a3c885de28449f96 +Subproject commit bd7993b3f6b301e5a667ff687f25b80fdda878cd From 699d9bba46e3b0507d4aa89c17c2064493a41c2b Mon Sep 17 00:00:00 2001 From: thedavidmeister Date: Mon, 1 Dec 2025 19:42:52 +0400 Subject: [PATCH 4/5] update rain.string --- foundry.lock | 2 +- foundry.toml | 2 +- lib/rain.string | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/foundry.lock b/foundry.lock index f61e970..c03a15c 100644 --- a/foundry.lock +++ b/foundry.lock @@ -12,6 +12,6 @@ "rev": "bd7993b3f6b301e5a667ff687f25b80fdda878cd" }, "lib/rain.string": { - "rev": "85d0074c8cd1fdca3285366c15bc9b44b84ad5e9" + "rev": "0b1ca08aed6d9c06b83fe127a7d20ee7002ead28" } } \ No newline at end of file diff --git a/foundry.toml b/foundry.toml index 6998427..69e1a50 100644 --- a/foundry.toml +++ b/foundry.toml @@ -18,7 +18,7 @@ solc = "0.8.25" optimizer = true optimizer_runs = 1000000 -evm_version = "paris" +evm_version = "cancun" bytecode_hash = "none" cbor_metadata = false diff --git a/lib/rain.string b/lib/rain.string index 85d0074..0b1ca08 160000 --- a/lib/rain.string +++ b/lib/rain.string @@ -1 +1 @@ -Subproject commit 85d0074c8cd1fdca3285366c15bc9b44b84ad5e9 +Subproject commit 0b1ca08aed6d9c06b83fe127a7d20ee7002ead28 From 47a94a6731925fdd095f28e7aebfd89d0d5df68d Mon Sep 17 00:00:00 2001 From: thedavidmeister Date: Mon, 1 Dec 2025 19:53:44 +0400 Subject: [PATCH 5/5] fix compile --- .gas-snapshot | 690 +++++++++++------------ foundry.toml | 1 + src/lib/format/LibFormatDecimalFloat.sol | 6 +- 3 files changed, 349 insertions(+), 348 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index dde36a1..7faa21d 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -1,345 +1,345 @@ -DecimalFloatAbsTest:testAbsDeployed(bytes32) (runs: 5096, μ: 3675859, ~: 3675798) -DecimalFloatAddTest:testAddDeployed(bytes32,bytes32) (runs: 5096, μ: 3681285, ~: 3681358) -DecimalFloatCeilTest:testCeilDeployed(bytes32) (runs: 5096, μ: 3675776, ~: 3675374) -DecimalFloatConstantsTest:testEDeployed() (gas: 3674948) -DecimalFloatConstantsTest:testMaxNegativeValueDeployed() (gas: 3674938) -DecimalFloatConstantsTest:testMaxPositiveValueDeployed() (gas: 3674939) -DecimalFloatConstantsTest:testMinNegativeValueDeployed() (gas: 3674914) -DecimalFloatConstantsTest:testMinPositiveValueDeployed() (gas: 3674937) -DecimalFloatConstantsTest:testZeroDeployed() (gas: 3674959) -DecimalFloatDivTest:testDivDeployed(bytes32,bytes32) (runs: 5096, μ: 3683146, ~: 3683046) -DecimalFloatEqTest:testEqDeployed(bytes32,bytes32) (runs: 5096, μ: 3676157, ~: 3676080) -DecimalFloatFloorTest:testFloorDeployed(bytes32) (runs: 5096, μ: 3675611, ~: 3675417) -DecimalFloatFormatTest:testFormatConstants() (gas: 3675540) -DecimalFloatFormatTest:testFormatDeployed(bytes32,bytes32,bytes32) (runs: 2585, μ: 3704853, ~: 3710797) -DecimalFloatFracTest:testFracDeployed(bytes32) (runs: 5096, μ: 3675980, ~: 3675944) -DecimalFloatFromFixedDecimalLosslessTest:testFromFixedDecimalLosslessDeployed(uint256,uint8) (runs: 5096, μ: 3676890, ~: 3676512) -DecimalFloatFromFixedDecimalLossyTest:testFromFixedDecimalLossyDeployed(uint256,uint8) (runs: 5096, μ: 3676737, ~: 3676663) -DecimalFloatGtTest:testGtDeployed(bytes32,bytes32) (runs: 5096, μ: 3676053, ~: 3675977) -DecimalFloatGteTest:testGteDeployed(bytes32,bytes32) (runs: 5096, μ: 3676126, ~: 3676050) -DecimalFloatInvTest:testInvDeployed(bytes32) (runs: 5096, μ: 3681291, ~: 3681332) -DecimalFloatIsZeroTest:testIsZeroDeployed(bytes32) (runs: 5096, μ: 3675287, ~: 3675287) -DecimalFloatLtTest:testLtDeployed(bytes32,bytes32) (runs: 5096, μ: 3676030, ~: 3675954) -DecimalFloatLteTest:testLteDeployed(bytes32,bytes32) (runs: 5096, μ: 3676084, ~: 3676007) -DecimalFloatMaxTest:testMaxDeployed(bytes32,bytes32) (runs: 5096, μ: 3676130, ~: 3676067) -DecimalFloatMinTest:testMinDeployed(bytes32,bytes32) (runs: 5096, μ: 3676106, ~: 3676043) -DecimalFloatMinusTest:testMinusDeployed(bytes32) (runs: 5096, μ: 3675901, ~: 3675902) -DecimalFloatMulTest:testMulDeployed(bytes32,bytes32) (runs: 5096, μ: 3680110, ~: 3680678) -DecimalFloatPackLosslessTest:testPackDeployed(int224,int32) (runs: 5096, μ: 167213, ~: 167214) -DecimalFloatParseTest:testParseDeployed(string) (runs: 5096, μ: 3678233, ~: 3678101) -DecimalFloatPowTest:testPowDeployed(bytes32,bytes32) (runs: 5096, μ: 3728393, ~: 3705268) -DecimalFloatSqrtTest:testSqrtDeployed(bytes32) (runs: 5096, μ: 3693905, ~: 3693958) -DecimalFloatSubTest:testSubDeployed(bytes32,bytes32) (runs: 5096, μ: 3681612, ~: 3681687) -DecimalFloatToFixedDecimalLosslessTest:testToFixedDecimalLosslessDeployed(bytes32,uint8) (runs: 5096, μ: 3679685, ~: 3679400) -DecimalFloatToFixedDecimalLossyTest:testToFixedDecimalLossyDeployed(bytes32,uint8) (runs: 5096, μ: 3679209, ~: 3678972) -LibDecimalFloatAbsTest:testAbsMinValue(int32) (runs: 5039, μ: 4497, ~: 4497) -LibDecimalFloatAbsTest:testAbsNegative(int256,int32) (runs: 5096, μ: 9868, ~: 10086) -LibDecimalFloatAbsTest:testAbsNonNegative(int256,int32) (runs: 5096, μ: 9031, ~: 8651) -LibDecimalFloatCeilTest:testCeilExamples() (gas: 35053) -LibDecimalFloatCeilTest:testCeilInRange(int224,int256) (runs: 5096, μ: 11142, ~: 10763) -LibDecimalFloatCeilTest:testCeilLessThanMin(int224,int256) (runs: 5096, μ: 10082, ~: 9840) -LibDecimalFloatCeilTest:testCeilNonNegative(int224,int256) (runs: 5096, μ: 8989, ~: 9237) -LibDecimalFloatCeilTest:testCeilNotReverts(bytes32) (runs: 5096, μ: 617, ~: 411) -LibDecimalFloatCeilTest:testCeilZero(int32) (runs: 5096, μ: 1939, ~: 1939) -LibDecimalFloatConstantsTest:testFloatE() (gas: 540) -LibDecimalFloatConstantsTest:testFloatHalf() (gas: 519) -LibDecimalFloatConstantsTest:testFloatMaxNegativeValue() (gas: 562) -LibDecimalFloatConstantsTest:testFloatMaxNegativeValueIsMax(bytes32) (runs: 5074, μ: 4181, ~: 4298) -LibDecimalFloatConstantsTest:testFloatMaxPositiveValue() (gas: 518) -LibDecimalFloatConstantsTest:testFloatMaxPositiveValueIsMax(bytes32) (runs: 5096, μ: 713, ~: 755) -LibDecimalFloatConstantsTest:testFloatMinNegativeValue() (gas: 518) -LibDecimalFloatConstantsTest:testFloatMinNegativeValueIsMin(bytes32) (runs: 5096, μ: 666, ~: 626) -LibDecimalFloatConstantsTest:testFloatMinPositiveValue() (gas: 540) -LibDecimalFloatConstantsTest:testFloatMinPositiveValueIsMin(bytes32) (runs: 5071, μ: 4644, ~: 4574) -LibDecimalFloatConstantsTest:testFloatOne() (gas: 541) -LibDecimalFloatConstantsTest:testFloatTwo() (gas: 563) -LibDecimalFloatConstantsTest:testFloatZero() (gas: 489) -LibDecimalFloatDecimalAddTest:testAddPacked(bytes32,bytes32) (runs: 5096, μ: 8071, ~: 8176) -LibDecimalFloatDecimalLosslessTest:testFromFixedDecimalLosslessFail(uint256,uint8) (runs: 4581, μ: 9616, ~: 9663) -LibDecimalFloatDecimalLosslessTest:testFromFixedDecimalLosslessMem(uint256,uint8) (runs: 5096, μ: 4989, ~: 4912) -LibDecimalFloatDecimalLosslessTest:testFromFixedDecimalLosslessPass(uint256,uint8) (runs: 5096, μ: 4383, ~: 4356) -LibDecimalFloatDecimalLosslessTest:testToFixedDecimalLosslessFail() (gas: 4894) -LibDecimalFloatDecimalLosslessTest:testToFixedDecimalLosslessPacked(bytes32,uint8) (runs: 5096, μ: 6306, ~: 6161) -LibDecimalFloatDecimalLosslessTest:testToFixedDecimalLosslessPass(int256,int256,uint8) (runs: 5096, μ: 14483, ~: 14456) -LibDecimalFloatDecimalTest:testFixedDecimalRoundTripLossless(uint256,uint8) (runs: 5096, μ: 4636, ~: 4565) -LibDecimalFloatDecimalTest:testFromFixedDecimalLossyComplicated() (gas: 186154) -LibDecimalFloatDecimalTest:testFromFixedDecimalLossyMax() (gas: 173659) -LibDecimalFloatDecimalTest:testFromFixedDecimalLossyOne() (gas: 186198) -LibDecimalFloatDecimalTest:testFromFixedDecimalLossyOneMillion() (gas: 186133) -LibDecimalFloatDecimalTest:testFromFixedDecimalLossyOverflow() (gas: 215457) -LibDecimalFloatDecimalTest:testFromFixedDecimalLossyPacked(uint256,uint8) (runs: 5096, μ: 5064, ~: 4986) -LibDecimalFloatDecimalTest:testFromFixedDecimalLossyTruncateOne(uint256,uint8) (runs: 5096, μ: 1505, ~: 1469) -LibDecimalFloatDecimalTest:testFromFixedDecimalLossyTruncateZero(uint256,uint8) (runs: 5096, μ: 1575, ~: 1392) -LibDecimalFloatDecimalTest:testToFixedDecimalLosslessScaleUp(int256,int256,uint8) (runs: 2627, μ: 14668, ~: 14546) -LibDecimalFloatDecimalTest:testToFixedDecimalLossyExponentOverflow(int256,int256,uint8) (runs: 5096, μ: 14961, ~: 14729) -LibDecimalFloatDecimalTest:testToFixedDecimalLossyIdentity(int256,uint8) (runs: 5096, μ: 8850, ~: 8642) -LibDecimalFloatDecimalTest:testToFixedDecimalLossyNegative(int256,int256,uint8) (runs: 5096, μ: 10823, ~: 11076) -LibDecimalFloatDecimalTest:testToFixedDecimalLossyPacked(bytes32,uint8) (runs: 5096, μ: 5685, ~: 5689) -LibDecimalFloatDecimalTest:testToFixedDecimalLossyScaleUpOverflow(int256,int256,uint8) (runs: 2484, μ: 15349, ~: 15612) -LibDecimalFloatDecimalTest:testToFixedDecimalLossyTruncate(int256,int256,uint8) (runs: 5096, μ: 13172, ~: 12894) -LibDecimalFloatDecimalTest:testToFixedDecimalLossyTruncateLossless() (gas: 4181) -LibDecimalFloatDecimalTest:testToFixedDecimalLossyUnderflow(int256,int256,uint8) (runs: 5096, μ: 12427, ~: 12286) -LibDecimalFloatDecimalTest:testToFixedDecimalLossyZero(int256,uint8) (runs: 5096, μ: 757, ~: 757) -LibDecimalFloatDivTest:testDivByNegativeOneFloat(int224,int32) (runs: 5096, μ: 341822, ~: 338189) -LibDecimalFloatDivTest:testDivByOneFloat(int224,int32) (runs: 5096, μ: 317864, ~: 315864) -LibDecimalFloatDivTest:testDivPacked(bytes32,bytes32) (runs: 5096, μ: 9821, ~: 9750) -LibDecimalFloatEqTest:testEqPacked(bytes32,bytes32) (runs: 5096, μ: 2699, ~: 2624) -LibDecimalFloatEqTest:testEqXNotYExponents(bytes32,bytes32) (runs: 5096, μ: 1505, ~: 1396) -LibDecimalFloatEqTest:testEqZero(int32) (runs: 5096, μ: 1624, ~: 1624) -LibDecimalFloatFloorTest:testFloorExamples() (gas: 21402) -LibDecimalFloatFloorTest:testFloorGas0() (gas: 1003) -LibDecimalFloatFloorTest:testFloorGasTiny() (gas: 902) -LibDecimalFloatFloorTest:testFloorGasZero() (gas: 548) -LibDecimalFloatFloorTest:testFloorInRange(int224,int256) (runs: 5096, μ: 10437, ~: 10462) -LibDecimalFloatFloorTest:testFloorLessThanMin(int224,int256) (runs: 5096, μ: 9636, ~: 9646) -LibDecimalFloatFloorTest:testFloorNonNegative(int224,int256) (runs: 5096, μ: 8928, ~: 9183) -LibDecimalFloatFloorTest:testFloorNotReverts(bytes32) (runs: 5096, μ: 464, ~: 365) -LibDecimalFloatFracTest:testFracExamples() (gas: 37092) -LibDecimalFloatFracTest:testFracGas0() (gas: 1003) -LibDecimalFloatFracTest:testFracGasTiny() (gas: 888) -LibDecimalFloatFracTest:testFracGasZero() (gas: 810) -LibDecimalFloatFracTest:testFracInRange(int224,int256) (runs: 5096, μ: 10255, ~: 10266) -LibDecimalFloatFracTest:testFracLessThanMin(int224,int256) (runs: 5096, μ: 9672, ~: 9683) -LibDecimalFloatFracTest:testFracNonNegative(int224,int256) (runs: 5096, μ: 9166, ~: 9419) -LibDecimalFloatFracTest:testFracNotReverts(bytes32) (runs: 5096, μ: 637, ~: 616) -LibDecimalFloatGtTest:testGtGasAZero() (gas: 994) -LibDecimalFloatGtTest:testGtGasBZero() (gas: 994) -LibDecimalFloatGtTest:testGtGasBothZero() (gas: 746) -LibDecimalFloatGtTest:testGtGasDifferentSigns() (gas: 1026) -LibDecimalFloatGtTest:testGtGasExponentDiffOverflow() (gas: 1195) -LibDecimalFloatGtTest:testGtOneEAny(bytes32) (runs: 5096, μ: 663, ~: 663) -LibDecimalFloatGtTest:testGtReference(int224,int32,int224,int32) (runs: 5096, μ: 5324, ~: 3735) -LibDecimalFloatGtTest:testGtX(int224,int32) (runs: 5096, μ: 1076, ~: 1077) -LibDecimalFloatGtTest:testGtXEAnyVsXEAny(int256,int32,int32) (runs: 5096, μ: 9970, ~: 9715) -LibDecimalFloatGtTest:testGtXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5096, μ: 10532, ~: 10733) -LibDecimalFloatGtTest:testGtXNotY(bytes32,bytes32) (runs: 5096, μ: 1506, ~: 1395) -LibDecimalFloatGtTest:testGtXPositiveYNegative(int256,int32,int256,int32) (runs: 5096, μ: 13138, ~: 12975) -LibDecimalFloatGtTest:testGtXPositiveYZero(int256,int32,int32) (runs: 5096, μ: 9629, ~: 9387) -LibDecimalFloatGtTest:testGtZero(int32,int32) (runs: 5096, μ: 1630, ~: 1630) -LibDecimalFloatGteTest:testGteGasAZero() (gas: 997) -LibDecimalFloatGteTest:testGteGasBZero() (gas: 1041) -LibDecimalFloatGteTest:testGteGasBothZero() (gas: 748) -LibDecimalFloatGteTest:testGteGasDifferentSigns() (gas: 1048) -LibDecimalFloatGteTest:testGteGasExponentDiffOverflow() (gas: 1154) -LibDecimalFloatGteTest:testGteOneEAny(bytes32) (runs: 5096, μ: 663, ~: 663) -LibDecimalFloatGteTest:testGteReference(int224,int32,int224,int32) (runs: 5096, μ: 5373, ~: 3781) -LibDecimalFloatGteTest:testGteX(int224,int32) (runs: 5096, μ: 1119, ~: 1120) -LibDecimalFloatGteTest:testGteXEAnyVsXEAny(int256,int32,int32) (runs: 5096, μ: 10001, ~: 9747) -LibDecimalFloatGteTest:testGteXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5096, μ: 10545, ~: 10745) -LibDecimalFloatGteTest:testGteXNotLtY(bytes32,bytes32) (runs: 5096, μ: 1112, ~: 1036) -LibDecimalFloatGteTest:testGteXPositiveYNegative(int256,int32,int256,int32) (runs: 5096, μ: 13165, ~: 13003) -LibDecimalFloatGteTest:testGteXPositiveYZero(int256,int32,int32) (runs: 5096, μ: 9231, ~: 8857) -LibDecimalFloatGteTest:testGteZero(int32,int32) (runs: 5096, μ: 1675, ~: 1675) -LibDecimalFloatImplementationAddTest:testAdd123456789987654321() (gas: 2153) -LibDecimalFloatImplementationAddTest:testAdd123456789e9987654321() (gas: 2203) -LibDecimalFloatImplementationAddTest:testAddNeverRevert(int256,int256,int256,int256) (runs: 5096, μ: 13740, ~: 13711) -LibDecimalFloatImplementationAddTest:testAddOneOneNotMaximized() (gas: 3132) -LibDecimalFloatImplementationAddTest:testAddOneOnePreMaximized() (gas: 1322) -LibDecimalFloatImplementationAddTest:testAddOneZero() (gas: 470) -LibDecimalFloatImplementationAddTest:testAddRevertMaxA() (gas: 6316) -LibDecimalFloatImplementationAddTest:testAddSameExponent(int256,int256) (runs: 4332, μ: 6364, ~: 6493) -LibDecimalFloatImplementationAddTest:testAddZero() (gas: 491) -LibDecimalFloatImplementationAddTest:testAddZeroAnyExponent(int128) (runs: 5096, μ: 8625, ~: 8602) -LibDecimalFloatImplementationAddTest:testAddZeroOne() (gas: 490) -LibDecimalFloatImplementationAddTest:testAddZeroToAnyNonZero(int256,int256,int256) (runs: 5046, μ: 12723, ~: 12688) -LibDecimalFloatImplementationAddTest:testAddingSmallToLargeReturnsLargeExamples() (gas: 63274) -LibDecimalFloatImplementationAddTest:testAddingSmallToLargeReturnsLargeFuzz(int256,int256,int256,int256) (runs: 2462, μ: 17598, ~: 17654) -LibDecimalFloatImplementationAddTest:testGasAddOne() (gas: 1861) -LibDecimalFloatImplementationAddTest:testGasAddZero() (gas: 382) -LibDecimalFloatImplementationAddTest:testOverflowChecks(int256,int256) (runs: 5096, μ: 710, ~: 697) -LibDecimalFloatImplementationCharacteristicMantissaTest:testCharacteristicMantissaExamples() (gas: 7996) -LibDecimalFloatImplementationCharacteristicMantissaTest:testCharacteristicMantissaNegExponentLarge(int256,int256) (runs: 5096, μ: 9217, ~: 9446) -LibDecimalFloatImplementationCharacteristicMantissaTest:testCharacteristicMantissaNegExponentSmall(int256) (runs: 5096, μ: 101838, ~: 101838) -LibDecimalFloatImplementationCharacteristicMantissaTest:testCharacteristicMantissaNonNegExponent(int256,int256) (runs: 5096, μ: 8588, ~: 8380) -LibDecimalFloatImplementationDivTest:testDiv1Over3() (gas: 3861) -LibDecimalFloatImplementationDivTest:testDiv1Over3Gas0() (gas: 2566) -LibDecimalFloatImplementationDivTest:testDiv1Over3Gas10() (gas: 21216) -LibDecimalFloatImplementationDivTest:testDiv1Over9Over1Over3() (gas: 10876) -LibDecimalFloatImplementationDivTest:testDiv1e18Over3() (gas: 3415) -LibDecimalFloatImplementationDivTest:testDivBy1(int256,int256) (runs: 5096, μ: 267007, ~: 271637) -LibDecimalFloatImplementationDivTest:testDivByNegativeOneFloat(int256,int256) (runs: 5096, μ: 271275, ~: 278244) -LibDecimalFloatImplementationDivTest:testDivMaxPositiveValueDenominatorNotRevert(int256,int256) (runs: 5096, μ: 2606, ~: 2645) -LibDecimalFloatImplementationDivTest:testDivNegative1Over3() (gas: 4014) -LibDecimalFloatImplementationDivTest:testDivOOMs5and2() (gas: 2858) -LibDecimalFloatImplementationDivTest:testDivOOMsOverTen() (gas: 3796) -LibDecimalFloatImplementationDivTest:testDivTenOverOOMs() (gas: 3755) -LibDecimalFloatImplementationDivTest:testDivZero(int256,int256) (runs: 5096, μ: 9938, ~: 9948) -LibDecimalFloatImplementationDivTest:testUnnormalizedThreesDiv0(int256,int256) (runs: 100, μ: 22201866, ~: 22117113) -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: 5096, μ: 654, ~: 679) -LibDecimalFloatImplementationEqTest:testEqOneEAny(int256,int256) (runs: 5096, μ: 585, ~: 585) -LibDecimalFloatImplementationEqTest:testEqReference(int256,int256,int256,int256) (runs: 5096, μ: 7036, ~: 8512) -LibDecimalFloatImplementationEqTest:testEqX(int256) (runs: 5096, μ: 561, ~: 561) -LibDecimalFloatImplementationEqTest:testEqXEAnyVsXEAny(int256,int256,int256) (runs: 5048, μ: 4040, ~: 4037) -LibDecimalFloatImplementationEqTest:testEqXEqY(int256,int256,int256,int256) (runs: 5096, μ: 728, ~: 753) -LibDecimalFloatImplementationEqTest:testEqXNotY(int256,int256,int256,int256) (runs: 5094, μ: 3606, ~: 3631) -LibDecimalFloatImplementationEqTest:testEqZero(int256,int256) (runs: 5096, μ: 609, ~: 609) -LibDecimalFloatImplementationInvTest:testInv0() (gas: 4452) -LibDecimalFloatImplementationInvTest:testInvGas0() (gas: 2248) -LibDecimalFloatImplementationInvTest:testInvReference(int256,int256) (runs: 5046, μ: 13995, ~: 14047) -LibDecimalFloatImplementationInvTest:testInvSlowGas0() (gas: 2560) -LibDecimalFloatImplementationLog10Test:testExactLogs() (gas: 1255801) -LibDecimalFloatImplementationLog10Test:testExactLookupsLog10() (gas: 1300597) -LibDecimalFloatImplementationLog10Test:testInterpolatedLookups() (gas: 1254440) -LibDecimalFloatImplementationLog10Test:testLog10One() (gas: 1437604) -LibDecimalFloatImplementationLog10Test:testSub1() (gas: 1255463) -LibDecimalFloatImplementationLookupLogTableValTest:testLookupLogTableVal() (gas: 1338351) -LibDecimalFloatImplementationMaximizeTest:testMaximizedEverything(int256,int256) (runs: 5096, μ: 9460, ~: 9462) -LibDecimalFloatImplementationMaximizeTest:testMaximizedExamples() (gas: 131443) -LibDecimalFloatImplementationMaximizeTest:testMaximizedIdempotent(int256,int256) (runs: 5096, μ: 9661, ~: 9624) -LibDecimalFloatImplementationMaximizeTest:testMaximizedReference(int256,int256) (runs: 5096, μ: 12969, ~: 13856) -LibDecimalFloatImplementationMinusTest:testMinusIsSubZero(int256,int256,int256) (runs: 5096, μ: 12264, ~: 12242) -LibDecimalFloatImplementationMulTest:testMul123456789987654321() (gas: 1741) -LibDecimalFloatImplementationMulTest:testMul123456789987654321WithExponents(int128,int128) (runs: 5096, μ: 13755, ~: 13844) -LibDecimalFloatImplementationMulTest:testMul1_3979_0_5() (gas: 2536) -LibDecimalFloatImplementationMulTest:testMul1e181e19() (gas: 1785) -LibDecimalFloatImplementationMulTest:testMulGasOne() (gas: 1470) -LibDecimalFloatImplementationMulTest:testMulGasZero() (gas: 325) -LibDecimalFloatImplementationMulTest:testMulMaxSignedCoefficient() (gas: 2856) -LibDecimalFloatImplementationMulTest:testMulNegativeOne() (gas: 1842) -LibDecimalFloatImplementationMulTest:testMulNegativeOneOne() (gas: 1899) -LibDecimalFloatImplementationMulTest:testMulNotRevertAnyExpectation(int256,int256,int256,int256) (runs: 5096, μ: 14653, ~: 13970) -LibDecimalFloatImplementationMulTest:testMulOneNegativeOne() (gas: 1875) -LibDecimalFloatImplementationMulTest:testMulOneOne() (gas: 1764) -LibDecimalFloatImplementationMulTest:testMulOneZero() (gas: 663) -LibDecimalFloatImplementationMulTest:testMulZero0Exponent() (gas: 685) -LibDecimalFloatImplementationMulTest:testMulZeroAnyExponent(int64,int64) (runs: 5096, μ: 886, ~: 886) -LibDecimalFloatImplementationMulTest:testMulZeroOne() (gas: 620) -LibDecimalFloatImplementationPow10Test:testExactLookupsPow10() (gas: 1269211) -LibDecimalFloatImplementationPow10Test:testExactPows() (gas: 1249378) -LibDecimalFloatImplementationPow10Test:testInterpolatedLookupsPower() (gas: 1283747) -LibDecimalFloatImplementationPow10Test:testNoRevert(int224,int32) (runs: 3634, μ: 1255875, ~: 1253800) -LibDecimalFloatImplementationPow10Test:testPow10One() (gas: 1461134) -LibDecimalFloatImplementationSubTest:testSubIsAdd(int256,int256,int256,int256) (runs: 5081, μ: 16460, ~: 16576) -LibDecimalFloatImplementationSubTest:testSubMinSignedValue(int256,int256,int256) (runs: 5096, μ: 15265, ~: 15241) -LibDecimalFloatImplementationSubTest:testSubOneFromMax() (gas: 3353) -LibDecimalFloatImplementationSubTest:testSubSelf(int224,int32) (runs: 5096, μ: 2972, ~: 3131) -LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedAB(uint256,uint256,uint256,int256) (runs: 5096, μ: 6209, ~: 6135) -LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedABOverflow(uint256,uint256,uint256,int256) (runs: 5069, μ: 10192, ~: 10180) -LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedBA(uint256,uint256,uint256,int256) (runs: 5069, μ: 10190, ~: 10178) -LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedBAOverflow(uint256,uint256,int256) (runs: 5096, μ: 5348, ~: 5295) -LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyNegative(uint256,uint256,uint256,int256) (runs: 5096, μ: 6159, ~: 6081) -LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyNegativeOverflow(uint256,uint256,uint256,int256) (runs: 5069, μ: 10055, ~: 10040) -LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyPositive(uint256,uint256,uint256,int256) (runs: 5096, μ: 5900, ~: 5829) -LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyPositiveOverflow(uint256,uint256,uint256,int256) (runs: 5069, μ: 9944, ~: 9936) -LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentExamples() (gas: 4409) -LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentLargerExponentOverflowRescaleRevert(int256,int256,int256) (runs: 1760, μ: 14450, ~: 14443) -LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentLargerExponentVeryLargeDiffRevert(int256,int256,int256) (runs: 5096, μ: 13322, ~: 13562) -LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentLargerTargetExponentNoRevert(int256,int256,int256) (runs: 5096, μ: 11677, ~: 11740) -LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentMaxOverflow(int256) (runs: 5096, μ: 601, ~: 601) -LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentSameExponentNoop(int256,int256) (runs: 5096, μ: 553, ~: 553) -LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentScaleDown(int256,int256,int256) (runs: 5096, μ: 12298, ~: 12259) -LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentScaleUpLargeDiffRevert(int256,int256,int256) (runs: 5096, μ: 13499, ~: 13803) -LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentScaleUpNotOverflow(int256,int256,int256) (runs: 3337, μ: 12828, ~: 12765) -LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentScaleUpOverflow(int256,int256,int256) (runs: 1759, μ: 14128, ~: 14155) -LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentSmallerExponentNoRevert(int256,int256,int256) (runs: 3336, μ: 13196, ~: 13002) -LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentTargetMoreThan76Larger(int256,int256,int256) (runs: 5096, μ: 11777, ~: 11886) -LibDecimalFloatInvTest:testInvMem(bytes32) (runs: 5096, μ: 8128, ~: 8166) -LibDecimalFloatIsZeroTest:testIsZeroDeployed(bytes32) (runs: 5096, μ: 1068, ~: 1068) -LibDecimalFloatIsZeroTest:testIsZeroEqZero(bytes32) (runs: 5096, μ: 690, ~: 690) -LibDecimalFloatIsZeroTest:testIsZeroExamples(int32) (runs: 5096, μ: 992, ~: 992) -LibDecimalFloatIsZeroTest:testNotIsZero(int224,int32) (runs: 5039, μ: 3600, ~: 3600) -LibDecimalFloatLog10Test:testLog10Packed(bytes32) (runs: 5096, μ: 1651741, ~: 1267848) -LibDecimalFloatLtTest:testLtExamples() (gas: 1178) -LibDecimalFloatLtTest:testLtGasAZero() (gas: 967) -LibDecimalFloatLtTest:testLtGasBZero() (gas: 1033) -LibDecimalFloatLtTest:testLtGasBothZero() (gas: 959) -LibDecimalFloatLtTest:testLtGasDifferentSigns() (gas: 1021) -LibDecimalFloatLtTest:testLtGasExponentDiffOverflow() (gas: 1105) -LibDecimalFloatLtTest:testLtNegativeVsPositive(int256,int32,int256,int32) (runs: 5096, μ: 13157, ~: 12997) -LibDecimalFloatLtTest:testLtNegativeVsZero(int256,int32,int32) (runs: 5096, μ: 10166, ~: 10382) -LibDecimalFloatLtTest:testLtOneEAny(int224,int32) (runs: 5096, μ: 1099, ~: 1100) -LibDecimalFloatLtTest:testLtReference(bytes32,bytes32) (runs: 5096, μ: 1819, ~: 2161) -LibDecimalFloatLtTest:testLtVsEqualVsGt(bytes32,bytes32) (runs: 5096, μ: 1489, ~: 1373) -LibDecimalFloatLtTest:testLtX(int224) (runs: 5096, μ: 992, ~: 993) -LibDecimalFloatLtTest:testLtXEAnyVsXEAny(int256,int32,int32) (runs: 5096, μ: 9946, ~: 9692) -LibDecimalFloatLtTest:testLtXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5096, μ: 10553, ~: 10755) -LibDecimalFloatLtTest:testLtZero(int32,int32) (runs: 5096, μ: 1330, ~: 1330) -LibDecimalFloatLteTest:testLteGasAZero() (gas: 1018) -LibDecimalFloatLteTest:testLteGasBZero() (gas: 1020) -LibDecimalFloatLteTest:testLteGasBothZero() (gas: 748) -LibDecimalFloatLteTest:testLteGasDifferentSigns() (gas: 1028) -LibDecimalFloatLteTest:testLteGasExponentDiffOverflow() (gas: 1134) -LibDecimalFloatLteTest:testLteOneEAny(bytes32) (runs: 5096, μ: 662, ~: 662) -LibDecimalFloatLteTest:testLteReference(int224,int32,int224,int32) (runs: 5096, μ: 5365, ~: 3778) -LibDecimalFloatLteTest:testLteX(int224,int32) (runs: 5096, μ: 1098, ~: 1099) -LibDecimalFloatLteTest:testLteXEAnyVsXEAny(int256,int32,int32) (runs: 5096, μ: 9959, ~: 9704) -LibDecimalFloatLteTest:testLteXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5096, μ: 10566, ~: 10767) -LibDecimalFloatLteTest:testLteXNotLtY(bytes32,bytes32) (runs: 5096, μ: 1047, ~: 970) -LibDecimalFloatLteTest:testLteXPositiveYNegative(int256,int32,int256,int32) (runs: 5096, μ: 12795, ~: 12633) -LibDecimalFloatLteTest:testLteXPositiveYZero(int256,int32,int32) (runs: 5096, μ: 9253, ~: 8878) -LibDecimalFloatLteTest:testLteZero(int32,int32) (runs: 5096, μ: 1653, ~: 1653) -LibDecimalFloatMaxTest:testMaxX(bytes32) (runs: 5096, μ: 1114, ~: 1114) -LibDecimalFloatMaxTest:testMaxXY(bytes32,bytes32) (runs: 5096, μ: 1559, ~: 1481) -LibDecimalFloatMaxTest:testMaxXYEqual(bytes32) (runs: 5096, μ: 1523, ~: 1523) -LibDecimalFloatMaxTest:testMaxXYGreater(bytes32,bytes32) (runs: 2538, μ: 4883, ~: 4767) -LibDecimalFloatMaxTest:testMaxXYLess(bytes32,bytes32) (runs: 2553, μ: 4897, ~: 4778) -LibDecimalFloatMinTest:testMinX(bytes32) (runs: 5096, μ: 1136, ~: 1136) -LibDecimalFloatMinTest:testMinXY(bytes32,bytes32) (runs: 5096, μ: 1559, ~: 1481) -LibDecimalFloatMinTest:testMinXYEqual(bytes32) (runs: 5096, μ: 1543, ~: 1543) -LibDecimalFloatMinTest:testMinXYGreater(bytes32,bytes32) (runs: 2543, μ: 4830, ~: 4712) -LibDecimalFloatMinTest:testMinXYLess(bytes32,bytes32) (runs: 2548, μ: 4841, ~: 4723) -LibDecimalFloatMinusTest:testMinusPacked(bytes32) (runs: 5096, μ: 2438, ~: 2439) -LibDecimalFloatMixedTest:testDiv1Over3Mixed() (gas: 7330) -LibDecimalFloatMulTest:testMulPacked(bytes32,bytes32) (runs: 5096, μ: 6867, ~: 7464) -LibDecimalFloatPackTest:testPackExponentOverflow(int256,int256) (runs: 5046, μ: 11085, ~: 11267) -LibDecimalFloatPackTest:testPackNegativeExponentLossyZero(int256,int256) (runs: 5046, μ: 10654, ~: 10808) -LibDecimalFloatPackTest:testPackZero(int256) (runs: 5096, μ: 662, ~: 662) -LibDecimalFloatPackTest:testPartsRoundTrip(int224,int32) (runs: 5096, μ: 1027, ~: 1028) -LibDecimalFloatPow10Test:testPow10Packed(bytes32) (runs: 5096, μ: 1638452, ~: 1251517) -LibDecimalFloatPowTest:testNegativePowError(bytes32,bytes32) (runs: 5046, μ: 1241606, ~: 1241724) -LibDecimalFloatPowTest:testPowAZero(int32,bytes32) (runs: 3534, μ: 1240095, ~: 1240095) -LibDecimalFloatPowTest:testPowAZeroNegative(bytes32) (runs: 1615, μ: 1241138, ~: 1241138) -LibDecimalFloatPowTest:testPowBOne(bytes32) (runs: 5062, μ: 1457268, ~: 1457239) -LibDecimalFloatPowTest:testPowBZero(bytes32,int32) (runs: 5096, μ: 1237163, ~: 1237163) -LibDecimalFloatPowTest:testPows() (gas: 1680872) -LibDecimalFloatPowTest:testRoundTripFuzzPow(bytes32,bytes32) (runs: 5096, μ: 1291554, ~: 1262280) -LibDecimalFloatPowTest:testRoundTripSimple() (gas: 1873010) -LibDecimalFloatSqrtTest:testRoundTripFuzzSqrt(int224,int32) (runs: 5096, μ: 1303312, ~: 1306128) -LibDecimalFloatSqrtTest:testSqrt() (gas: 1296518) -LibDecimalFloatSqrtTest:testSqrtNegative(bytes32) (runs: 5065, μ: 1241318, ~: 1241437) -LibDecimalFloatSqrtTest:testSqrtRoundTrip() (gas: 1515240) -LibDecimalFloatSubTest:testSubPacked(bytes32,bytes32) (runs: 5096, μ: 9411, ~: 9461) -LibFormatDecimalFloatCountSigFigs:testCountSigFigsExamples() (gas: 48089) -LibFormatDecimalFloatCountSigFigs:testCountSigFigsOne(int256) (runs: 5096, μ: 30221, ~: 30196) -LibFormatDecimalFloatCountSigFigs:testCountSigFigsZero(int256) (runs: 5096, μ: 526, ~: 526) -LibFormatDecimalFloatToDecimalStringTest:testFormatDecimalExamples() (gas: 792935) -LibFormatDecimalFloatToDecimalStringTest:testFormatDecimalRoundTripExamples() (gas: 729004) -LibFormatDecimalFloatToDecimalStringTest:testFormatDecimalRoundTripNegative(int256,bool) (runs: 5096, μ: 65290, ~: 63712) -LibFormatDecimalFloatToDecimalStringTest:testFormatDecimalRoundTripNonNegative(uint256,bool) (runs: 5096, μ: 47951, ~: 49556) -LibLogTableBytesTest:testToBytesAntiLogTableDec() (gas: 158047) -LibLogTableBytesTest:testToBytesAntiLogTableDecSmall() (gas: 160663) -LibLogTableBytesTest:testToBytesLogTableDec() (gas: 141790) -LibLogTableBytesTest:testToBytesLogTableDecSmall() (gas: 144156) -LibLogTableBytesTest:testToBytesLogTableDecSmallAlt() (gas: 18375) -LibParseDecimalFloatTest:testParseDecimalFloatEmpty() (gas: 992) -LibParseDecimalFloatTest:testParseDecimalFloatExponentRevert() (gas: 985) -LibParseDecimalFloatTest:testParseDecimalFloatExponentRevert2() (gas: 2155) -LibParseDecimalFloatTest:testParseDecimalFloatExponentRevert3() (gas: 2263) -LibParseDecimalFloatTest:testParseDecimalFloatExponentRevert4() (gas: 963) -LibParseDecimalFloatTest:testParseDecimalFloatNonDecimal() (gas: 961) -LibParseDecimalFloatTest:testParseFormatterRoundTripBug0() (gas: 23326) -LibParseDecimalFloatTest:testParseLiteralDecimalFloatDecimals() (gas: 328316) -LibParseDecimalFloatTest:testParseLiteralDecimalFloatDotE() (gas: 982) -LibParseDecimalFloatTest:testParseLiteralDecimalFloatDotE0() (gas: 983) -LibParseDecimalFloatTest:testParseLiteralDecimalFloatDotRevert() (gas: 961) -LibParseDecimalFloatTest:testParseLiteralDecimalFloatDotRevert2() (gas: 983) -LibParseDecimalFloatTest:testParseLiteralDecimalFloatDotRevert3() (gas: 1959) -LibParseDecimalFloatTest:testParseLiteralDecimalFloatEDot() (gas: 984) -LibParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert5() (gas: 992) -LibParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert6() (gas: 982) -LibParseDecimalFloatTest:testParseLiteralDecimalFloatExponents() (gas: 321256) -LibParseDecimalFloatTest:testParseLiteralDecimalFloatFuzz(uint256,uint8,bool) (runs: 5096, μ: 42435, ~: 33401) -LibParseDecimalFloatTest:testParseLiteralDecimalFloatLeadingZeros() (gas: 47723) -LibParseDecimalFloatTest:testParseLiteralDecimalFloatNegativeE() (gas: 2819) -LibParseDecimalFloatTest:testParseLiteralDecimalFloatNegativeFrac() (gas: 1934) -LibParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert0() (gas: 24627) -LibParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert1() (gas: 21803) -LibParseDecimalFloatTest:testParseLiteralDecimalFloatSpecific() (gas: 12287) -LibParseDecimalFloatTest:testParseLiteralDecimalFloatUnrelated() (gas: 35135) -LibParseDecimalFloatTest:testParsePacked(string) (runs: 5096, μ: 5342, ~: 5223) -TestDecimalFloatUnpackTest:testUnpackDeployed(bytes32) (runs: 5096, μ: 166485, ~: 166485) \ No newline at end of file +DecimalFloatAbsTest:testAbsDeployed(bytes32) (runs: 5096, μ: 3573478, ~: 3573418) +DecimalFloatAddTest:testAddDeployed(bytes32,bytes32) (runs: 5096, μ: 3578891, ~: 3578954) +DecimalFloatCeilTest:testCeilDeployed(bytes32) (runs: 5096, μ: 3573396, ~: 3573000) +DecimalFloatConstantsTest:testEDeployed() (gas: 3572581) +DecimalFloatConstantsTest:testMaxNegativeValueDeployed() (gas: 3572571) +DecimalFloatConstantsTest:testMaxPositiveValueDeployed() (gas: 3572572) +DecimalFloatConstantsTest:testMinNegativeValueDeployed() (gas: 3572547) +DecimalFloatConstantsTest:testMinPositiveValueDeployed() (gas: 3572570) +DecimalFloatConstantsTest:testZeroDeployed() (gas: 3572590) +DecimalFloatDivTest:testDivDeployed(bytes32,bytes32) (runs: 5096, μ: 3580693, ~: 3580610) +DecimalFloatEqTest:testEqDeployed(bytes32,bytes32) (runs: 5096, μ: 3573777, ~: 3573702) +DecimalFloatFloorTest:testFloorDeployed(bytes32) (runs: 5096, μ: 3573231, ~: 3573043) +DecimalFloatFormatTest:testFormatConstants() (gas: 3573166) +DecimalFloatFormatTest:testFormatDeployed(bytes32,bytes32,bytes32) (runs: 2568, μ: 3599609, ~: 3604266) +DecimalFloatFracTest:testFracDeployed(bytes32) (runs: 5096, μ: 3573593, ~: 3573556) +DecimalFloatFromFixedDecimalLosslessTest:testFromFixedDecimalLosslessDeployed(uint256,uint8) (runs: 5096, μ: 3574471, ~: 3574120) +DecimalFloatFromFixedDecimalLossyTest:testFromFixedDecimalLossyDeployed(uint256,uint8) (runs: 5096, μ: 3574349, ~: 3574277) +DecimalFloatGtTest:testGtDeployed(bytes32,bytes32) (runs: 5096, μ: 3573676, ~: 3573601) +DecimalFloatGteTest:testGteDeployed(bytes32,bytes32) (runs: 5096, μ: 3573748, ~: 3573674) +DecimalFloatInvTest:testInvDeployed(bytes32) (runs: 5096, μ: 3578891, ~: 3578912) +DecimalFloatIsZeroTest:testIsZeroDeployed(bytes32) (runs: 5096, μ: 3572916, ~: 3572916) +DecimalFloatLtTest:testLtDeployed(bytes32,bytes32) (runs: 5096, μ: 3573653, ~: 3573578) +DecimalFloatLteTest:testLteDeployed(bytes32,bytes32) (runs: 5096, μ: 3573705, ~: 3573631) +DecimalFloatMaxTest:testMaxDeployed(bytes32,bytes32) (runs: 5096, μ: 3573751, ~: 3573689) +DecimalFloatMinTest:testMinDeployed(bytes32,bytes32) (runs: 5096, μ: 3573727, ~: 3573665) +DecimalFloatMinusTest:testMinusDeployed(bytes32) (runs: 5096, μ: 3573518, ~: 3573518) +DecimalFloatMulTest:testMulDeployed(bytes32,bytes32) (runs: 5096, μ: 3577672, ~: 3578256) +DecimalFloatPackLosslessTest:testPackDeployed(int224,int32) (runs: 5096, μ: 163826, ~: 163827) +DecimalFloatParseTest:testParseDeployed(string) (runs: 5096, μ: 3575585, ~: 3575530) +DecimalFloatPowTest:testPowDeployed(bytes32,bytes32) (runs: 5096, μ: 3622090, ~: 3602460) +DecimalFloatSqrtTest:testSqrtDeployed(bytes32) (runs: 5096, μ: 3590984, ~: 3591392) +DecimalFloatSubTest:testSubDeployed(bytes32,bytes32) (runs: 5096, μ: 3579194, ~: 3579273) +DecimalFloatToFixedDecimalLosslessTest:testToFixedDecimalLosslessDeployed(bytes32,uint8) (runs: 5096, μ: 3577132, ~: 3576770) +DecimalFloatToFixedDecimalLossyTest:testToFixedDecimalLossyDeployed(bytes32,uint8) (runs: 5096, μ: 3576661, ~: 3576354) +LibDecimalFloatAbsTest:testAbsMinValue(int32) (runs: 5042, μ: 4480, ~: 4480) +LibDecimalFloatAbsTest:testAbsNegative(int256,int32) (runs: 5096, μ: 9313, ~: 9477) +LibDecimalFloatAbsTest:testAbsNonNegative(int256,int32) (runs: 5096, μ: 8579, ~: 8306) +LibDecimalFloatCeilTest:testCeilExamples() (gas: 34682) +LibDecimalFloatCeilTest:testCeilInRange(int224,int256) (runs: 5096, μ: 10768, ~: 10395) +LibDecimalFloatCeilTest:testCeilLessThanMin(int224,int256) (runs: 5096, μ: 9721, ~: 9481) +LibDecimalFloatCeilTest:testCeilNonNegative(int224,int256) (runs: 5096, μ: 8643, ~: 8889) +LibDecimalFloatCeilTest:testCeilNotReverts(bytes32) (runs: 5096, μ: 607, ~: 408) +LibDecimalFloatCeilTest:testCeilZero(int32) (runs: 5096, μ: 1915, ~: 1915) +LibDecimalFloatConstantsTest:testFloatE() (gas: 534) +LibDecimalFloatConstantsTest:testFloatHalf() (gas: 513) +LibDecimalFloatConstantsTest:testFloatMaxNegativeValue() (gas: 556) +LibDecimalFloatConstantsTest:testFloatMaxNegativeValueIsMax(bytes32) (runs: 5077, μ: 4165, ~: 4281) +LibDecimalFloatConstantsTest:testFloatMaxPositiveValue() (gas: 512) +LibDecimalFloatConstantsTest:testFloatMaxPositiveValueIsMax(bytes32) (runs: 5096, μ: 707, ~: 748) +LibDecimalFloatConstantsTest:testFloatMinNegativeValue() (gas: 512) +LibDecimalFloatConstantsTest:testFloatMinNegativeValueIsMin(bytes32) (runs: 5096, μ: 661, ~: 622) +LibDecimalFloatConstantsTest:testFloatMinPositiveValue() (gas: 534) +LibDecimalFloatConstantsTest:testFloatMinPositiveValueIsMin(bytes32) (runs: 5073, μ: 4628, ~: 4559) +LibDecimalFloatConstantsTest:testFloatOne() (gas: 535) +LibDecimalFloatConstantsTest:testFloatTwo() (gas: 557) +LibDecimalFloatConstantsTest:testFloatZero() (gas: 482) +LibDecimalFloatDecimalAddTest:testAddPacked(bytes32,bytes32) (runs: 5096, μ: 7996, ~: 8125) +LibDecimalFloatDecimalLosslessTest:testFromFixedDecimalLosslessFail(uint256,uint8) (runs: 4553, μ: 9247, ~: 9292) +LibDecimalFloatDecimalLosslessTest:testFromFixedDecimalLosslessMem(uint256,uint8) (runs: 5096, μ: 4854, ~: 4779) +LibDecimalFloatDecimalLosslessTest:testFromFixedDecimalLosslessPass(uint256,uint8) (runs: 5096, μ: 4259, ~: 4233) +LibDecimalFloatDecimalLosslessTest:testToFixedDecimalLosslessFail() (gas: 4640) +LibDecimalFloatDecimalLosslessTest:testToFixedDecimalLosslessPacked(bytes32,uint8) (runs: 5096, μ: 6137, ~: 5892) +LibDecimalFloatDecimalLosslessTest:testToFixedDecimalLosslessPass(int256,int256,uint8) (runs: 5096, μ: 13679, ~: 13644) +LibDecimalFloatDecimalTest:testFixedDecimalRoundTripLossless(uint256,uint8) (runs: 5096, μ: 4513, ~: 4440) +LibDecimalFloatDecimalTest:testFromFixedDecimalLossyComplicated() (gas: 184877) +LibDecimalFloatDecimalTest:testFromFixedDecimalLossyMax() (gas: 172382) +LibDecimalFloatDecimalTest:testFromFixedDecimalLossyOne() (gas: 184921) +LibDecimalFloatDecimalTest:testFromFixedDecimalLossyOneMillion() (gas: 184856) +LibDecimalFloatDecimalTest:testFromFixedDecimalLossyOverflow() (gas: 213925) +LibDecimalFloatDecimalTest:testFromFixedDecimalLossyPacked(uint256,uint8) (runs: 5096, μ: 4939, ~: 4859) +LibDecimalFloatDecimalTest:testFromFixedDecimalLossyTruncateOne(uint256,uint8) (runs: 5096, μ: 1492, ~: 1454) +LibDecimalFloatDecimalTest:testFromFixedDecimalLossyTruncateZero(uint256,uint8) (runs: 5096, μ: 1567, ~: 1377) +LibDecimalFloatDecimalTest:testToFixedDecimalLosslessScaleUp(int256,int256,uint8) (runs: 2612, μ: 13867, ~: 13877) +LibDecimalFloatDecimalTest:testToFixedDecimalLossyExponentOverflow(int256,int256,uint8) (runs: 5096, μ: 13559, ~: 13333) +LibDecimalFloatDecimalTest:testToFixedDecimalLossyIdentity(int256,uint8) (runs: 5096, μ: 8392, ~: 8170) +LibDecimalFloatDecimalTest:testToFixedDecimalLossyNegative(int256,int256,uint8) (runs: 5096, μ: 10033, ~: 10233) +LibDecimalFloatDecimalTest:testToFixedDecimalLossyPacked(bytes32,uint8) (runs: 5096, μ: 5574, ~: 5432) +LibDecimalFloatDecimalTest:testToFixedDecimalLossyScaleUpOverflow(int256,int256,uint8) (runs: 2483, μ: 14262, ~: 14480) +LibDecimalFloatDecimalTest:testToFixedDecimalLossyTruncate(int256,int256,uint8) (runs: 5096, μ: 12369, ~: 12156) +LibDecimalFloatDecimalTest:testToFixedDecimalLossyTruncateLossless() (gas: 4135) +LibDecimalFloatDecimalTest:testToFixedDecimalLossyUnderflow(int256,int256,uint8) (runs: 5096, μ: 11418, ~: 11348) +LibDecimalFloatDecimalTest:testToFixedDecimalLossyZero(int256,uint8) (runs: 5096, μ: 748, ~: 748) +LibDecimalFloatDivTest:testDivByNegativeOneFloat(int224,int32) (runs: 5096, μ: 338189, ~: 334483) +LibDecimalFloatDivTest:testDivByOneFloat(int224,int32) (runs: 5096, μ: 314679, ~: 312621) +LibDecimalFloatDivTest:testDivPacked(bytes32,bytes32) (runs: 5096, μ: 9729, ~: 9661) +LibDecimalFloatEqTest:testEqPacked(bytes32,bytes32) (runs: 5096, μ: 2678, ~: 2605) +LibDecimalFloatEqTest:testEqXNotYExponents(bytes32,bytes32) (runs: 5096, μ: 1490, ~: 1384) +LibDecimalFloatEqTest:testEqZero(int32) (runs: 5096, μ: 1603, ~: 1603) +LibDecimalFloatFloorTest:testFloorExamples() (gas: 21113) +LibDecimalFloatFloorTest:testFloorGas0() (gas: 989) +LibDecimalFloatFloorTest:testFloorGasTiny() (gas: 887) +LibDecimalFloatFloorTest:testFloorGasZero() (gas: 539) +LibDecimalFloatFloorTest:testFloorInRange(int224,int256) (runs: 5096, μ: 10074, ~: 10101) +LibDecimalFloatFloorTest:testFloorLessThanMin(int224,int256) (runs: 5096, μ: 9281, ~: 9292) +LibDecimalFloatFloorTest:testFloorNonNegative(int224,int256) (runs: 5096, μ: 8583, ~: 8837) +LibDecimalFloatFloorTest:testFloorNotReverts(bytes32) (runs: 5096, μ: 459, ~: 362) +LibDecimalFloatFracTest:testFracExamples() (gas: 36585) +LibDecimalFloatFracTest:testFracGas0() (gas: 990) +LibDecimalFloatFracTest:testFracGasTiny() (gas: 875) +LibDecimalFloatFracTest:testFracGasZero() (gas: 794) +LibDecimalFloatFracTest:testFracInRange(int224,int256) (runs: 5096, μ: 9896, ~: 9907) +LibDecimalFloatFracTest:testFracLessThanMin(int224,int256) (runs: 5096, μ: 9318, ~: 9331) +LibDecimalFloatFracTest:testFracNonNegative(int224,int256) (runs: 5096, μ: 8816, ~: 9064) +LibDecimalFloatFracTest:testFracNotReverts(bytes32) (runs: 5096, μ: 627, ~: 606) +LibDecimalFloatGtTest:testGtGasAZero() (gas: 978) +LibDecimalFloatGtTest:testGtGasBZero() (gas: 978) +LibDecimalFloatGtTest:testGtGasBothZero() (gas: 736) +LibDecimalFloatGtTest:testGtGasDifferentSigns() (gas: 1011) +LibDecimalFloatGtTest:testGtGasExponentDiffOverflow() (gas: 1179) +LibDecimalFloatGtTest:testGtOneEAny(bytes32) (runs: 5096, μ: 658, ~: 658) +LibDecimalFloatGtTest:testGtReference(int224,int32,int224,int32) (runs: 5096, μ: 5304, ~: 3715) +LibDecimalFloatGtTest:testGtX(int224,int32) (runs: 5096, μ: 1066, ~: 1067) +LibDecimalFloatGtTest:testGtXEAnyVsXEAny(int256,int32,int32) (runs: 5096, μ: 9507, ~: 9231) +LibDecimalFloatGtTest:testGtXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5096, μ: 9966, ~: 10116) +LibDecimalFloatGtTest:testGtXNotY(bytes32,bytes32) (runs: 5096, μ: 1491, ~: 1383) +LibDecimalFloatGtTest:testGtXPositiveYNegative(int256,int32,int256,int32) (runs: 5096, μ: 12139, ~: 12031) +LibDecimalFloatGtTest:testGtXPositiveYZero(int256,int32,int32) (runs: 5096, μ: 9169, ~: 8907) +LibDecimalFloatGtTest:testGtZero(int32,int32) (runs: 5096, μ: 1609, ~: 1609) +LibDecimalFloatGteTest:testGteGasAZero() (gas: 981) +LibDecimalFloatGteTest:testGteGasBZero() (gas: 1025) +LibDecimalFloatGteTest:testGteGasBothZero() (gas: 738) +LibDecimalFloatGteTest:testGteGasDifferentSigns() (gas: 1033) +LibDecimalFloatGteTest:testGteGasExponentDiffOverflow() (gas: 1138) +LibDecimalFloatGteTest:testGteOneEAny(bytes32) (runs: 5096, μ: 658, ~: 658) +LibDecimalFloatGteTest:testGteReference(int224,int32,int224,int32) (runs: 5096, μ: 5348, ~: 3760) +LibDecimalFloatGteTest:testGteX(int224,int32) (runs: 5096, μ: 1109, ~: 1110) +LibDecimalFloatGteTest:testGteXEAnyVsXEAny(int256,int32,int32) (runs: 5096, μ: 9539, ~: 9263) +LibDecimalFloatGteTest:testGteXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5096, μ: 9979, ~: 10128) +LibDecimalFloatGteTest:testGteXNotLtY(bytes32,bytes32) (runs: 5096, μ: 1103, ~: 1028) +LibDecimalFloatGteTest:testGteXPositiveYNegative(int256,int32,int256,int32) (runs: 5096, μ: 12167, ~: 12059) +LibDecimalFloatGteTest:testGteXPositiveYZero(int256,int32,int32) (runs: 5096, μ: 8775, ~: 8506) +LibDecimalFloatGteTest:testGteZero(int32,int32) (runs: 5096, μ: 1654, ~: 1654) +LibDecimalFloatImplementationAddTest:testAdd123456789987654321() (gas: 2134) +LibDecimalFloatImplementationAddTest:testAdd123456789e9987654321() (gas: 2185) +LibDecimalFloatImplementationAddTest:testAddNeverRevert(int256,int256,int256,int256) (runs: 5096, μ: 12911, ~: 12936) +LibDecimalFloatImplementationAddTest:testAddOneOneNotMaximized() (gas: 3113) +LibDecimalFloatImplementationAddTest:testAddOneOnePreMaximized() (gas: 1305) +LibDecimalFloatImplementationAddTest:testAddOneZero() (gas: 463) +LibDecimalFloatImplementationAddTest:testAddRevertMaxA() (gas: 6056) +LibDecimalFloatImplementationAddTest:testAddSameExponent(int256,int256) (runs: 4314, μ: 6327, ~: 6453) +LibDecimalFloatImplementationAddTest:testAddZero() (gas: 483) +LibDecimalFloatImplementationAddTest:testAddZeroAnyExponent(int128) (runs: 5096, μ: 8213, ~: 8248) +LibDecimalFloatImplementationAddTest:testAddZeroOne() (gas: 483) +LibDecimalFloatImplementationAddTest:testAddZeroToAnyNonZero(int256,int256,int256) (runs: 5046, μ: 11901, ~: 11856) +LibDecimalFloatImplementationAddTest:testAddingSmallToLargeReturnsLargeExamples() (gas: 62746) +LibDecimalFloatImplementationAddTest:testAddingSmallToLargeReturnsLargeFuzz(int256,int256,int256,int256) (runs: 2446, μ: 16744, ~: 16846) +LibDecimalFloatImplementationAddTest:testGasAddOne() (gas: 1845) +LibDecimalFloatImplementationAddTest:testGasAddZero() (gas: 377) +LibDecimalFloatImplementationAddTest:testOverflowChecks(int256,int256) (runs: 5096, μ: 704, ~: 691) +LibDecimalFloatImplementationCharacteristicMantissaTest:testCharacteristicMantissaExamples() (gas: 7919) +LibDecimalFloatImplementationCharacteristicMantissaTest:testCharacteristicMantissaNegExponentLarge(int256,int256) (runs: 5096, μ: 8665, ~: 8846) +LibDecimalFloatImplementationCharacteristicMantissaTest:testCharacteristicMantissaNegExponentSmall(int256) (runs: 5096, μ: 100696, ~: 100696) +LibDecimalFloatImplementationCharacteristicMantissaTest:testCharacteristicMantissaNonNegExponent(int256,int256) (runs: 5096, μ: 8135, ~: 7912) +LibDecimalFloatImplementationDivTest:testDiv1Over3() (gas: 3829) +LibDecimalFloatImplementationDivTest:testDiv1Over3Gas0() (gas: 2536) +LibDecimalFloatImplementationDivTest:testDiv1Over3Gas10() (gas: 20933) +LibDecimalFloatImplementationDivTest:testDiv1Over9Over1Over3() (gas: 10756) +LibDecimalFloatImplementationDivTest:testDiv1e18Over3() (gas: 3383) +LibDecimalFloatImplementationDivTest:testDivBy1(int256,int256) (runs: 5096, μ: 264291, ~: 268985) +LibDecimalFloatImplementationDivTest:testDivByNegativeOneFloat(int256,int256) (runs: 5096, μ: 268411, ~: 275358) +LibDecimalFloatImplementationDivTest:testDivMaxPositiveValueDenominatorNotRevert(int256,int256) (runs: 5096, μ: 2576, ~: 2616) +LibDecimalFloatImplementationDivTest:testDivNegative1Over3() (gas: 3978) +LibDecimalFloatImplementationDivTest:testDivOOMs5and2() (gas: 2828) +LibDecimalFloatImplementationDivTest:testDivOOMsOverTen() (gas: 3765) +LibDecimalFloatImplementationDivTest:testDivTenOverOOMs() (gas: 3724) +LibDecimalFloatImplementationDivTest:testDivZero(int256,int256) (runs: 5096, μ: 9286, ~: 9247) +LibDecimalFloatImplementationDivTest:testUnnormalizedThreesDiv0(int256,int256) (runs: 100, μ: 22007748, ~: 21926298) +LibDecimalFloatImplementationEqTest:testEqGasAZero() (gas: 425) +LibDecimalFloatImplementationEqTest:testEqGasBZero() (gas: 468) +LibDecimalFloatImplementationEqTest:testEqGasBothZero() (gas: 445) +LibDecimalFloatImplementationEqTest:testEqGasDifferentSigns() (gas: 477) +LibDecimalFloatImplementationEqTest:testEqGasExponentDiffOverflow() (gas: 527) +LibDecimalFloatImplementationEqTest:testEqNotReverts(int256,int256,int256,int256) (runs: 5096, μ: 646, ~: 671) +LibDecimalFloatImplementationEqTest:testEqOneEAny(int256,int256) (runs: 5096, μ: 580, ~: 580) +LibDecimalFloatImplementationEqTest:testEqReference(int256,int256,int256,int256) (runs: 5096, μ: 7034, ~: 8575) +LibDecimalFloatImplementationEqTest:testEqX(int256) (runs: 5096, μ: 554, ~: 554) +LibDecimalFloatImplementationEqTest:testEqXEAnyVsXEAny(int256,int256,int256) (runs: 5048, μ: 4025, ~: 4022) +LibDecimalFloatImplementationEqTest:testEqXEqY(int256,int256,int256,int256) (runs: 5096, μ: 719, ~: 744) +LibDecimalFloatImplementationEqTest:testEqXNotY(int256,int256,int256,int256) (runs: 5096, μ: 3596, ~: 3621) +LibDecimalFloatImplementationEqTest:testEqZero(int256,int256) (runs: 5096, μ: 602, ~: 602) +LibDecimalFloatImplementationInvTest:testInv0() (gas: 4204) +LibDecimalFloatImplementationInvTest:testInvGas0() (gas: 2217) +LibDecimalFloatImplementationInvTest:testInvReference(int256,int256) (runs: 5046, μ: 13526, ~: 13598) +LibDecimalFloatImplementationInvTest:testInvSlowGas0() (gas: 2529) +LibDecimalFloatImplementationLog10Test:testExactLogs() (gas: 1229922) +LibDecimalFloatImplementationLog10Test:testExactLookupsLog10() (gas: 1273910) +LibDecimalFloatImplementationLog10Test:testInterpolatedLookups() (gas: 1229175) +LibDecimalFloatImplementationLog10Test:testLog10One() (gas: 1402769) +LibDecimalFloatImplementationLog10Test:testSub1() (gas: 1230040) +LibDecimalFloatImplementationLookupLogTableValTest:testLookupLogTableVal() (gas: 1312355) +LibDecimalFloatImplementationMaximizeTest:testMaximizedEverything(int256,int256) (runs: 5096, μ: 9042, ~: 9077) +LibDecimalFloatImplementationMaximizeTest:testMaximizedExamples() (gas: 130254) +LibDecimalFloatImplementationMaximizeTest:testMaximizedIdempotent(int256,int256) (runs: 5096, μ: 9240, ~: 9270) +LibDecimalFloatImplementationMaximizeTest:testMaximizedReference(int256,int256) (runs: 5096, μ: 12525, ~: 13353) +LibDecimalFloatImplementationMinusTest:testMinusIsSubZero(int256,int256,int256) (runs: 5096, μ: 11439, ~: 11413) +LibDecimalFloatImplementationMulTest:testMul123456789987654321() (gas: 1718) +LibDecimalFloatImplementationMulTest:testMul123456789987654321WithExponents(int128,int128) (runs: 5096, μ: 13056, ~: 13149) +LibDecimalFloatImplementationMulTest:testMul1_3979_0_5() (gas: 2512) +LibDecimalFloatImplementationMulTest:testMul1e181e19() (gas: 1765) +LibDecimalFloatImplementationMulTest:testMulGasOne() (gas: 1450) +LibDecimalFloatImplementationMulTest:testMulGasZero() (gas: 318) +LibDecimalFloatImplementationMulTest:testMulMaxSignedCoefficient() (gas: 2832) +LibDecimalFloatImplementationMulTest:testMulNegativeOne() (gas: 1817) +LibDecimalFloatImplementationMulTest:testMulNegativeOneOne() (gas: 1873) +LibDecimalFloatImplementationMulTest:testMulNotRevertAnyExpectation(int256,int256,int256,int256) (runs: 5096, μ: 13809, ~: 13105) +LibDecimalFloatImplementationMulTest:testMulOneNegativeOne() (gas: 1849) +LibDecimalFloatImplementationMulTest:testMulOneOne() (gas: 1741) +LibDecimalFloatImplementationMulTest:testMulOneZero() (gas: 655) +LibDecimalFloatImplementationMulTest:testMulZero0Exponent() (gas: 677) +LibDecimalFloatImplementationMulTest:testMulZeroAnyExponent(int64,int64) (runs: 5096, μ: 877, ~: 877) +LibDecimalFloatImplementationMulTest:testMulZeroOne() (gas: 612) +LibDecimalFloatImplementationPow10Test:testExactLookupsPow10() (gas: 1243871) +LibDecimalFloatImplementationPow10Test:testExactPows() (gas: 1224263) +LibDecimalFloatImplementationPow10Test:testInterpolatedLookupsPower() (gas: 1258298) +LibDecimalFloatImplementationPow10Test:testNoRevert(int224,int32) (runs: 3560, μ: 1230372, ~: 1228383) +LibDecimalFloatImplementationPow10Test:testPow10One() (gas: 1434006) +LibDecimalFloatImplementationSubTest:testSubIsAdd(int256,int256,int256,int256) (runs: 5080, μ: 15611, ~: 15807) +LibDecimalFloatImplementationSubTest:testSubMinSignedValue(int256,int256,int256) (runs: 5096, μ: 14427, ~: 14472) +LibDecimalFloatImplementationSubTest:testSubOneFromMax() (gas: 3331) +LibDecimalFloatImplementationSubTest:testSubSelf(int224,int32) (runs: 5096, μ: 2951, ~: 3109) +LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedAB(uint256,uint256,uint256,int256) (runs: 5096, μ: 5922, ~: 5849) +LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedABOverflow(uint256,uint256,uint256,int256) (runs: 5073, μ: 9894, ~: 9885) +LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedBA(uint256,uint256,uint256,int256) (runs: 5073, μ: 9893, ~: 9883) +LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedBAOverflow(uint256,uint256,int256) (runs: 5096, μ: 5158, ~: 5104) +LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyNegative(uint256,uint256,uint256,int256) (runs: 5096, μ: 5875, ~: 5798) +LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyNegativeOverflow(uint256,uint256,uint256,int256) (runs: 5073, μ: 9760, ~: 9748) +LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyPositive(uint256,uint256,uint256,int256) (runs: 5096, μ: 5620, ~: 5550) +LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyPositiveOverflow(uint256,uint256,uint256,int256) (runs: 5073, μ: 9651, ~: 9646) +LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentExamples() (gas: 4372) +LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentLargerExponentOverflowRescaleRevert(int256,int256,int256) (runs: 1707, μ: 13304, ~: 13218) +LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentLargerExponentVeryLargeDiffRevert(int256,int256,int256) (runs: 5096, μ: 12115, ~: 12278) +LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentLargerTargetExponentNoRevert(int256,int256,int256) (runs: 5096, μ: 10790, ~: 10703) +LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentMaxOverflow(int256) (runs: 5096, μ: 594, ~: 594) +LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentSameExponentNoop(int256,int256) (runs: 5096, μ: 549, ~: 549) +LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentScaleDown(int256,int256,int256) (runs: 5096, μ: 11554, ~: 11527) +LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentScaleUpLargeDiffRevert(int256,int256,int256) (runs: 5096, μ: 12292, ~: 12564) +LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentScaleUpNotOverflow(int256,int256,int256) (runs: 3401, μ: 12098, ~: 12082) +LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentScaleUpOverflow(int256,int256,int256) (runs: 1695, μ: 13055, ~: 13051) +LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentSmallerExponentNoRevert(int256,int256,int256) (runs: 3389, μ: 12410, ~: 12318) +LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentTargetMoreThan76Larger(int256,int256,int256) (runs: 5096, μ: 10886, ~: 10993) +LibDecimalFloatInvTest:testInvMem(bytes32) (runs: 5096, μ: 8055, ~: 8094) +LibDecimalFloatIsZeroTest:testIsZeroDeployed(bytes32) (runs: 5096, μ: 1063, ~: 1063) +LibDecimalFloatIsZeroTest:testIsZeroEqZero(bytes32) (runs: 5096, μ: 684, ~: 684) +LibDecimalFloatIsZeroTest:testIsZeroExamples(int32) (runs: 5096, μ: 977, ~: 977) +LibDecimalFloatIsZeroTest:testNotIsZero(int224,int32) (runs: 5039, μ: 3592, ~: 3592) +LibDecimalFloatLog10Test:testLog10Packed(bytes32) (runs: 5096, μ: 1621253, ~: 1242793) +LibDecimalFloatLtTest:testLtExamples() (gas: 1161) +LibDecimalFloatLtTest:testLtGasAZero() (gas: 953) +LibDecimalFloatLtTest:testLtGasBZero() (gas: 1019) +LibDecimalFloatLtTest:testLtGasBothZero() (gas: 944) +LibDecimalFloatLtTest:testLtGasDifferentSigns() (gas: 1008) +LibDecimalFloatLtTest:testLtGasExponentDiffOverflow() (gas: 1091) +LibDecimalFloatLtTest:testLtNegativeVsPositive(int256,int32,int256,int32) (runs: 5096, μ: 12162, ~: 12053) +LibDecimalFloatLtTest:testLtNegativeVsZero(int256,int32,int32) (runs: 5096, μ: 9604, ~: 9769) +LibDecimalFloatLtTest:testLtOneEAny(int224,int32) (runs: 5096, μ: 1089, ~: 1090) +LibDecimalFloatLtTest:testLtReference(bytes32,bytes32) (runs: 5096, μ: 1822, ~: 2152) +LibDecimalFloatLtTest:testLtVsEqualVsGt(bytes32,bytes32) (runs: 5096, μ: 1473, ~: 1361) +LibDecimalFloatLtTest:testLtX(int224) (runs: 5096, μ: 981, ~: 982) +LibDecimalFloatLtTest:testLtXEAnyVsXEAny(int256,int32,int32) (runs: 5096, μ: 9482, ~: 9208) +LibDecimalFloatLtTest:testLtXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5096, μ: 9988, ~: 10138) +LibDecimalFloatLtTest:testLtZero(int32,int32) (runs: 5096, μ: 1311, ~: 1311) +LibDecimalFloatLteTest:testLteGasAZero() (gas: 1002) +LibDecimalFloatLteTest:testLteGasBZero() (gas: 1004) +LibDecimalFloatLteTest:testLteGasBothZero() (gas: 738) +LibDecimalFloatLteTest:testLteGasDifferentSigns() (gas: 1013) +LibDecimalFloatLteTest:testLteGasExponentDiffOverflow() (gas: 1118) +LibDecimalFloatLteTest:testLteOneEAny(bytes32) (runs: 5096, μ: 657, ~: 657) +LibDecimalFloatLteTest:testLteReference(int224,int32,int224,int32) (runs: 5096, μ: 5349, ~: 3770) +LibDecimalFloatLteTest:testLteX(int224,int32) (runs: 5096, μ: 1088, ~: 1089) +LibDecimalFloatLteTest:testLteXEAnyVsXEAny(int256,int32,int32) (runs: 5096, μ: 9495, ~: 9220) +LibDecimalFloatLteTest:testLteXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5096, μ: 10000, ~: 10150) +LibDecimalFloatLteTest:testLteXNotLtY(bytes32,bytes32) (runs: 5096, μ: 1036, ~: 962) +LibDecimalFloatLteTest:testLteXPositiveYNegative(int256,int32,int256,int32) (runs: 5096, μ: 11799, ~: 11691) +LibDecimalFloatLteTest:testLteXPositiveYZero(int256,int32,int32) (runs: 5096, μ: 8796, ~: 8527) +LibDecimalFloatLteTest:testLteZero(int32,int32) (runs: 5096, μ: 1632, ~: 1632) +LibDecimalFloatMaxTest:testMaxX(bytes32) (runs: 5096, μ: 1105, ~: 1105) +LibDecimalFloatMaxTest:testMaxXY(bytes32,bytes32) (runs: 5096, μ: 1544, ~: 1468) +LibDecimalFloatMaxTest:testMaxXYEqual(bytes32) (runs: 5096, μ: 1511, ~: 1511) +LibDecimalFloatMaxTest:testMaxXYGreater(bytes32,bytes32) (runs: 2521, μ: 4864, ~: 4752) +LibDecimalFloatMaxTest:testMaxXYLess(bytes32,bytes32) (runs: 2572, μ: 4879, ~: 4763) +LibDecimalFloatMinTest:testMinX(bytes32) (runs: 5096, μ: 1127, ~: 1127) +LibDecimalFloatMinTest:testMinXY(bytes32,bytes32) (runs: 5096, μ: 1544, ~: 1468) +LibDecimalFloatMinTest:testMinXYEqual(bytes32) (runs: 5096, μ: 1531, ~: 1531) +LibDecimalFloatMinTest:testMinXYGreater(bytes32,bytes32) (runs: 2543, μ: 4809, ~: 4697) +LibDecimalFloatMinTest:testMinXYLess(bytes32,bytes32) (runs: 2550, μ: 4825, ~: 4708) +LibDecimalFloatMinusTest:testMinusPacked(bytes32) (runs: 5096, μ: 2418, ~: 2419) +LibDecimalFloatMixedTest:testDiv1Over3Mixed() (gas: 7258) +LibDecimalFloatMulTest:testMulPacked(bytes32,bytes32) (runs: 5096, μ: 6789, ~: 7397) +LibDecimalFloatPackTest:testPackExponentOverflow(int256,int256) (runs: 5046, μ: 10285, ~: 10423) +LibDecimalFloatPackTest:testPackNegativeExponentLossyZero(int256,int256) (runs: 5046, μ: 10085, ~: 10201) +LibDecimalFloatPackTest:testPackZero(int256) (runs: 5096, μ: 654, ~: 654) +LibDecimalFloatPackTest:testPartsRoundTrip(int224,int32) (runs: 5096, μ: 1021, ~: 1022) +LibDecimalFloatPow10Test:testPow10Packed(bytes32) (runs: 5096, μ: 1605231, ~: 1226366) +LibDecimalFloatPowTest:testNegativePowError(bytes32,bytes32) (runs: 5047, μ: 1216370, ~: 1216486) +LibDecimalFloatPowTest:testPowAZero(int32,bytes32) (runs: 3521, μ: 1215095, ~: 1215095) +LibDecimalFloatPowTest:testPowAZeroNegative(bytes32) (runs: 1628, μ: 1215967, ~: 1215967) +LibDecimalFloatPowTest:testPowBOne(bytes32) (runs: 5074, μ: 1423037, ~: 1423008) +LibDecimalFloatPowTest:testPowBZero(bytes32,int32) (runs: 5096, μ: 1212165, ~: 1212165) +LibDecimalFloatPowTest:testPows() (gas: 1649967) +LibDecimalFloatPowTest:testRoundTripFuzzPow(bytes32,bytes32) (runs: 5096, μ: 1260589, ~: 1236902) +LibDecimalFloatPowTest:testRoundTripSimple() (gas: 1840934) +LibDecimalFloatSqrtTest:testRoundTripFuzzSqrt(int224,int32) (runs: 5096, μ: 1277051, ~: 1279819) +LibDecimalFloatSqrtTest:testSqrt() (gas: 1270465) +LibDecimalFloatSqrtTest:testSqrtNegative(bytes32) (runs: 5070, μ: 1216082, ~: 1216198) +LibDecimalFloatSqrtTest:testSqrtRoundTrip() (gas: 1487078) +LibDecimalFloatSubTest:testSubPacked(bytes32,bytes32) (runs: 5096, μ: 9327, ~: 9400) +LibFormatDecimalFloatCountSigFigs:testCountSigFigsExamples() (gas: 47425) +LibFormatDecimalFloatCountSigFigs:testCountSigFigsOne(int256) (runs: 5096, μ: 29890, ~: 30589) +LibFormatDecimalFloatCountSigFigs:testCountSigFigsZero(int256) (runs: 5096, μ: 520, ~: 520) +LibFormatDecimalFloatToDecimalStringTest:testFormatDecimalExamples() (gas: 709867) +LibFormatDecimalFloatToDecimalStringTest:testFormatDecimalRoundTripExamples() (gas: 675555) +LibFormatDecimalFloatToDecimalStringTest:testFormatDecimalRoundTripNegative(int256,bool) (runs: 5096, μ: 60366, ~: 56707) +LibFormatDecimalFloatToDecimalStringTest:testFormatDecimalRoundTripNonNegative(uint256,bool) (runs: 5096, μ: 44916, ~: 47146) +LibLogTableBytesTest:testToBytesAntiLogTableDec() (gas: 153244) +LibLogTableBytesTest:testToBytesAntiLogTableDecSmall() (gas: 158078) +LibLogTableBytesTest:testToBytesLogTableDec() (gas: 137440) +LibLogTableBytesTest:testToBytesLogTableDecSmall() (gas: 141832) +LibLogTableBytesTest:testToBytesLogTableDecSmallAlt() (gas: 18046) +LibParseDecimalFloatTest:testParseDecimalFloatEmpty() (gas: 979) +LibParseDecimalFloatTest:testParseDecimalFloatExponentRevert() (gas: 973) +LibParseDecimalFloatTest:testParseDecimalFloatExponentRevert2() (gas: 2126) +LibParseDecimalFloatTest:testParseDecimalFloatExponentRevert3() (gas: 2232) +LibParseDecimalFloatTest:testParseDecimalFloatExponentRevert4() (gas: 951) +LibParseDecimalFloatTest:testParseDecimalFloatNonDecimal() (gas: 949) +LibParseDecimalFloatTest:testParseFormatterRoundTripBug0() (gas: 23065) +LibParseDecimalFloatTest:testParseLiteralDecimalFloatDecimals() (gas: 324084) +LibParseDecimalFloatTest:testParseLiteralDecimalFloatDotE() (gas: 970) +LibParseDecimalFloatTest:testParseLiteralDecimalFloatDotE0() (gas: 971) +LibParseDecimalFloatTest:testParseLiteralDecimalFloatDotRevert() (gas: 949) +LibParseDecimalFloatTest:testParseLiteralDecimalFloatDotRevert2() (gas: 971) +LibParseDecimalFloatTest:testParseLiteralDecimalFloatDotRevert3() (gas: 1933) +LibParseDecimalFloatTest:testParseLiteralDecimalFloatEDot() (gas: 972) +LibParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert5() (gas: 980) +LibParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert6() (gas: 970) +LibParseDecimalFloatTest:testParseLiteralDecimalFloatExponents() (gas: 317178) +LibParseDecimalFloatTest:testParseLiteralDecimalFloatFuzz(uint256,uint8,bool) (runs: 5096, μ: 41818, ~: 32939) +LibParseDecimalFloatTest:testParseLiteralDecimalFloatLeadingZeros() (gas: 47119) +LibParseDecimalFloatTest:testParseLiteralDecimalFloatNegativeE() (gas: 2777) +LibParseDecimalFloatTest:testParseLiteralDecimalFloatNegativeFrac() (gas: 1908) +LibParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert0() (gas: 24357) +LibParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert1() (gas: 21563) +LibParseDecimalFloatTest:testParseLiteralDecimalFloatSpecific() (gas: 12124) +LibParseDecimalFloatTest:testParseLiteralDecimalFloatUnrelated() (gas: 34617) +LibParseDecimalFloatTest:testParsePacked(string) (runs: 5096, μ: 5024, ~: 4970) +TestDecimalFloatUnpackTest:testUnpackDeployed(bytes32) (runs: 5096, μ: 163108, ~: 163108) \ No newline at end of file diff --git a/foundry.toml b/foundry.toml index 69e1a50..06fc2bf 100644 --- a/foundry.toml +++ b/foundry.toml @@ -29,6 +29,7 @@ fs_permissions = [ remappings = [ "rain.solmem/=lib/rain.datacontract/lib/rain.solmem/src/", + "openzeppelin-contracts/=lib/rain.math.fixedpoint/lib/openzeppelin-contracts/", ] [fuzz] diff --git a/src/lib/format/LibFormatDecimalFloat.sol b/src/lib/format/LibFormatDecimalFloat.sol index 5593394..7f24811 100644 --- a/src/lib/format/LibFormatDecimalFloat.sol +++ b/src/lib/format/LibFormatDecimalFloat.sol @@ -140,17 +140,17 @@ library LibFormatDecimalFloat { } fractionalString = - fractional == 0 ? "" : string.concat(".", fracLeadingZerosString, Strings.toString(fractional)); + fractional == 0 ? "" : string.concat(".", fracLeadingZerosString, Strings.toStringSigned(fractional)); } - string memory integralString = Strings.toString(integral); + string memory integralString = Strings.toStringSigned(integral); // scaleExponent comes from either hardcoded values or `exponent` which // is an `int256` that was cast to `uint256` above, which can be cast // back to `int256` without truncation. // forge-lint: disable-next-line(unsafe-typecast) int256 displayExponent = exponent + int256(scaleExponent); string memory exponentString = - (displayExponent == 0 || !scientific) ? "" : string.concat("e", Strings.toString(displayExponent)); + (displayExponent == 0 || !scientific) ? "" : string.concat("e", Strings.toStringSigned(displayExponent)); string memory prefix = isNeg ? "-" : "";