diff --git a/.gas-snapshot b/.gas-snapshot index f29bab8e..3a163e0d 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -1,31 +1,30 @@ -DecimalFloatAbsTest:testAbsDeployed(bytes32) (runs: 5096, μ: 2425711, ~: 2425653) -DecimalFloatAddTest:testAddDeployed(bytes32,bytes32) (runs: 5096, μ: 2428475, ~: 2428157) -DecimalFloatConstantsTest:testEDeployed() (gas: 2424851) -DecimalFloatConstantsTest:testMaxValueDeployed() (gas: 2424885) -DecimalFloatConstantsTest:testMinNegativeValueDeployed() (gas: 2424883) -DecimalFloatDivTest:testDivDeployed(bytes32,bytes32) (runs: 5096, μ: 2428214, ~: 2428066) -DecimalFloatEqTest:testEqDeployed(bytes32,bytes32) (runs: 5096, μ: 2426116, ~: 2426043) -DecimalFloatFloorTest:testFloorDeployed(bytes32) (runs: 5096, μ: 2425915, ~: 2425898) -DecimalFloatFormatTest:testFormatDeployed(bytes32) (runs: 5096, μ: 2429752, ~: 2429579) -DecimalFloatFracTest:testFracDeployed(bytes32) (runs: 5096, μ: 2425963, ~: 2425946) -DecimalFloatFromFixedDecimalLosslessTest:testFromFixedDecimalLosslessDeployed(uint256,uint8) (runs: 5096, μ: 2426516, ~: 2426450) -DecimalFloatFromFixedDecimalLossyTest:testFromFixedDecimalLossyDeployed(uint256,uint8) (runs: 5096, μ: 2427004, ~: 2426920) -DecimalFloatGtTest:testGtDeployed(bytes32,bytes32) (runs: 5096, μ: 2426036, ~: 2425963) -DecimalFloatGteTest:testGteDeployed(bytes32,bytes32) (runs: 5096, μ: 2426109, ~: 2426036) -DecimalFloatInvTest:testInvDeployed(bytes32) (runs: 5096, μ: 2427304, ~: 2427226) -DecimalFloatIsZeroTest:testIsZeroDeployed(bytes32) (runs: 5096, μ: 2425228, ~: 2425228) -DecimalFloatLtTest:testLtDeployed(bytes32,bytes32) (runs: 5096, μ: 2426014, ~: 2425940) -DecimalFloatLteTest:testLteDeployed(bytes32,bytes32) (runs: 5096, μ: 2426067, ~: 2425993) -DecimalFloatMaxTest:testMaxDeployed(bytes32,bytes32) (runs: 5096, μ: 2426098, ~: 2426037) -DecimalFloatMinTest:testMinDeployed(bytes32,bytes32) (runs: 5096, μ: 2426096, ~: 2426035) -DecimalFloatMinusTest:testMinusDeployed(bytes32) (runs: 5096, μ: 2425788, ~: 2425788) -DecimalFloatMulTest:testMulDeployed(bytes32,bytes32) (runs: 5096, μ: 2427932, ~: 2428993) -DecimalFloatPackLosslessTest:testPackDeployed(int224,int32) (runs: 5096, μ: 2426066, ~: 2426066) -DecimalFloatParseTest:testParseDeployed(string) (runs: 5096, μ: 2428465, ~: 2428334) -DecimalFloatSubTest:testSubDeployed(bytes32,bytes32) (runs: 5096, μ: 2428809, ~: 2428495) -DecimalFloatToFixedDecimalLosslessTest:testToFixedDecimalLosslessDeployed(bytes32,uint8) (runs: 5096, μ: 2427141, ~: 2427033) -DecimalFloatToFixedDecimalLossyTest:testToFixedDecimalLossyDeployed(bytes32,uint8) (runs: 5096, μ: 2427285, ~: 2427562) -DecimalFloatUnpackTest:testUnpackDeployed(bytes32) (runs: 5096, μ: 2425741, ~: 2425741) +DecimalFloatAbsTest:testAbsDeployed(bytes32) (runs: 5096, μ: 2384006, ~: 2383948) +DecimalFloatAddTest:testAddDeployed(bytes32,bytes32) (runs: 5096, μ: 2386769, ~: 2386452) +DecimalFloatConstantsTest:testEDeployed() (gas: 2383146) +DecimalFloatConstantsTest:testMaxValueDeployed() (gas: 2383113) +DecimalFloatConstantsTest:testMinNegativeValueDeployed() (gas: 2383178) +DecimalFloatDivTest:testDivDeployed(bytes32,bytes32) (runs: 5096, μ: 2386503, ~: 2386350) +DecimalFloatEqTest:testEqDeployed(bytes32,bytes32) (runs: 5096, μ: 2384412, ~: 2384338) +DecimalFloatFloorTest:testFloorDeployed(bytes32) (runs: 5096, μ: 2384231, ~: 2384215) +DecimalFloatFormatTest:testFormatDeployed(bytes32) (runs: 5096, μ: 2388071, ~: 2387896) +DecimalFloatFracTest:testFracDeployed(bytes32) (runs: 5096, μ: 2384257, ~: 2384241) +DecimalFloatFromFixedDecimalLosslessTest:testFromFixedDecimalLosslessDeployed(uint256,uint8) (runs: 5096, μ: 2384813, ~: 2384745) +DecimalFloatFromFixedDecimalLossyTest:testFromFixedDecimalLossyDeployed(uint256,uint8) (runs: 5096, μ: 2385300, ~: 2385215) +DecimalFloatGtTest:testGtDeployed(bytes32,bytes32) (runs: 5096, μ: 2384332, ~: 2384258) +DecimalFloatGteTest:testGteDeployed(bytes32,bytes32) (runs: 5096, μ: 2384405, ~: 2384331) +DecimalFloatInvTest:testInvDeployed(bytes32) (runs: 5096, μ: 2385601, ~: 2385521) +DecimalFloatIsZeroTest:testIsZeroDeployed(bytes32) (runs: 5096, μ: 2383523, ~: 2383523) +DecimalFloatLtTest:testLtDeployed(bytes32,bytes32) (runs: 5096, μ: 2384309, ~: 2384235) +DecimalFloatLteTest:testLteDeployed(bytes32,bytes32) (runs: 5096, μ: 2384362, ~: 2384288) +DecimalFloatMaxTest:testMaxDeployed(bytes32,bytes32) (runs: 5096, μ: 2384393, ~: 2384332) +DecimalFloatMinTest:testMinDeployed(bytes32,bytes32) (runs: 5096, μ: 2384413, ~: 2384352) +DecimalFloatMinusTest:testMinusDeployed(bytes32) (runs: 5096, μ: 2384083, ~: 2384083) +DecimalFloatMulTest:testMulDeployed(bytes32,bytes32) (runs: 5096, μ: 2386245, ~: 2387310) +DecimalFloatPackLosslessTest:testPackDeployed(int224,int32) (runs: 5096, μ: 158769, ~: 158769) +DecimalFloatParseTest:testParseDeployed(string) (runs: 5096, μ: 2386760, ~: 2386629) +DecimalFloatSubTest:testSubDeployed(bytes32,bytes32) (runs: 5096, μ: 2387033, ~: 2386723) +DecimalFloatToFixedDecimalLosslessTest:testToFixedDecimalLosslessDeployed(bytes32,uint8) (runs: 5096, μ: 2385459, ~: 2385350) +DecimalFloatToFixedDecimalLossyTest:testToFixedDecimalLossyDeployed(bytes32,uint8) (runs: 5096, μ: 2385576, ~: 2385857) LibDecimalFloatAbsTest:testAbsMinValue(int32) (runs: 5096, μ: 5121, ~: 5121) LibDecimalFloatAbsTest:testAbsNegative(int256,int32) (runs: 5096, μ: 10475, ~: 10702) LibDecimalFloatAbsTest:testAbsNonNegative(int256,int32) (runs: 5096, μ: 9641, ~: 9392) @@ -229,7 +228,7 @@ LibDecimalFloatMinusTest:testMinusPacked(bytes32) (runs: 5096, μ: 5550, ~: 5550 LibDecimalFloatMixedTest:testDiv1Over3() (gas: 8161) LibDecimalFloatMulTest:testMulPacked(bytes32,bytes32) (runs: 5096, μ: 7890, ~: 8837) LibDecimalFloatPackTest:testPartsRoundTrip(int224,int32) (runs: 5096, μ: 5352, ~: 5352) -LibDecimalFloatPow10Test:testPow10Packed(bytes32) (runs: 5096, μ: 1644510, ~: 1257918) +LibDecimalFloatPow10Test:testPow10Packed(bytes32) (runs: 5096, μ: 1644509, ~: 1257918) LibDecimalFloatPowTest:testPows() (gas: 1296748) LibDecimalFloatPowTest:testRoundTripFuzz(bytes32,bytes32) (runs: 5096, μ: 1256890, ~: 1253536) LibDecimalFloatPowTest:testRoundTripSimple() (gas: 1450883) @@ -266,4 +265,5 @@ LibParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert0() (gas: 27 LibParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert1() (gas: 24801) LibParseDecimalFloatTest:testParseLiteralDecimalFloatSpecific() (gas: 22959) LibParseDecimalFloatTest:testParseLiteralDecimalFloatUnrelated() (gas: 50856) -LibParseDecimalFloatTest:testParsePacked(string) (runs: 5096, μ: 9787, ~: 9668) \ No newline at end of file +LibParseDecimalFloatTest:testParsePacked(string) (runs: 5096, μ: 9787, ~: 9668) +TestDecimalFloatUnpackTest:testUnpackDeployed(bytes32) (runs: 5096, μ: 158422, ~: 158422) \ No newline at end of file diff --git a/src/concrete/DecimalFloat.sol b/src/concrete/DecimalFloat.sol index 367026aa..26311217 100644 --- a/src/concrete/DecimalFloat.sol +++ b/src/concrete/DecimalFloat.sol @@ -2,7 +2,6 @@ pragma solidity =0.8.25; import {LibDecimalFloat, Float} from "../lib/LibDecimalFloat.sol"; -import {LOG_TABLES_ADDRESS} from "../lib/deploy/LibDecimalFloatDeploy.sol"; import {LibFormatDecimalFloat} from "../lib/format/LibFormatDecimalFloat.sol"; import {LibParseDecimalFloat} from "../lib/parse/LibParseDecimalFloat.sol"; @@ -159,14 +158,14 @@ contract DecimalFloat { /// @param a The float to raise to the power of 10. /// @return The result of raising the float to the power of 10. function pow10(Float a) external view returns (Float) { - return a.pow10(LOG_TABLES_ADDRESS); + return a.pow10(LibDecimalFloat.LOG_TABLES_ADDRESS); } /// Exposes `LibDecimalFloat.log10` for offchain use. /// @param a The float to take the logarithm of. /// @return The logarithm of the float. function log10(Float a) external view returns (Float) { - return a.log10(LOG_TABLES_ADDRESS); + return a.log10(LibDecimalFloat.LOG_TABLES_ADDRESS); } /// Exposes `LibDecimalFloat.pow` for offchain use. @@ -174,7 +173,7 @@ contract DecimalFloat { /// @param b The exponent float. /// @return The result of raising the base float to the power of the exponent function pow(Float a, Float b) external view returns (Float) { - return a.pow(b, LOG_TABLES_ADDRESS); + return a.pow(b, LibDecimalFloat.LOG_TABLES_ADDRESS); } /// Exposes `LibDecimalFloat.min` for offchain use. diff --git a/src/lib/LibDecimalFloat.sol b/src/lib/LibDecimalFloat.sol index 284d1e85..7fb83e8a 100644 --- a/src/lib/LibDecimalFloat.sol +++ b/src/lib/LibDecimalFloat.sol @@ -87,6 +87,8 @@ int256 constant EXPONENT_LEAP_MULTIPLIER = int256(uint256(10 ** uint256(EXPONENT library LibDecimalFloat { using LibDecimalFloat for Float; + address constant LOG_TABLES_ADDRESS = 0x295180b25A5059a2e7eC64272ba4F85047B4146A; + /// type(int224).max, type(int32).max Float constant FLOAT_MAX_VALUE = Float.wrap(bytes32(uint256(0x7fffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffff))); diff --git a/src/lib/deploy/LibDecimalFloatDeploy.sol b/src/lib/deploy/LibDecimalFloatDeploy.sol index d98ffc4d..0a5cee3e 100644 --- a/src/lib/deploy/LibDecimalFloatDeploy.sol +++ b/src/lib/deploy/LibDecimalFloatDeploy.sol @@ -13,8 +13,6 @@ import {LibBytes} from "rain.solmem/lib/LibBytes.sol"; import {LibMemCpy, Pointer} from "rain.solmem/lib/LibMemCpy.sol"; import {DecimalFloat} from "../../concrete/DecimalFloat.sol"; -address constant LOG_TABLES_ADDRESS = 0x295180b25A5059a2e7eC64272ba4F85047B4146A; - library LibDecimalFloatDeploy { function combinedTables() internal pure returns (bytes memory) { return diff --git a/test/src/lib/LibDecimalFloat.pow10.t.sol b/test/src/lib/LibDecimalFloat.pow10.t.sol index a12fca05..60bf6a5d 100644 --- a/test/src/lib/LibDecimalFloat.pow10.t.sol +++ b/test/src/lib/LibDecimalFloat.pow10.t.sol @@ -23,7 +23,7 @@ contract LibDecimalFloatPow10Test is LogTest { ) { if (exponent > type(int32).max) { vm.expectRevert(abi.encodeWithSelector(ExponentOverflow.selector, signedCoefficient, exponent)); - Float floatPower10 = this.pow10External(float); + this.pow10External(float); } else { Float floatPower10 = this.pow10External(float); (int256 signedCoefficientUnpacked, int256 exponentUnpacked) = floatPower10.unpack();