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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 32 additions & 31 deletions .gas-snapshot
Original file line number Diff line number Diff line change
@@ -1,35 +1,36 @@
DecimalFloatAbsTest:testAbsDeployed(bytes32) (runs: 5098, μ: 2654875, ~: 2654817)
DecimalFloatAddTest:testAddDeployed(bytes32,bytes32) (runs: 5098, μ: 2658941, ~: 2659013)
DecimalFloatCeilTest:testCeilDeployed(bytes32) (runs: 5098, μ: 2654903, ~: 2654530)
DecimalFloatConstantsTest:testEDeployed() (gas: 2654060)
DecimalFloatConstantsTest:testMaxNegativeValueDeployed() (gas: 2654092)
DecimalFloatConstantsTest:testMaxPositiveValueDeployed() (gas: 2654050)
DecimalFloatConstantsTest:testMinNegativeValueDeployed() (gas: 2654025)
DecimalFloatConstantsTest:testMinPositiveValueDeployed() (gas: 2654004)
DecimalFloatDivTest:testDivDeployed(bytes32,bytes32) (runs: 5098, μ: 2660874, ~: 2660957)
DecimalFloatEqTest:testEqDeployed(bytes32,bytes32) (runs: 5098, μ: 2655259, ~: 2655185)
DecimalFloatFloorTest:testFloorDeployed(bytes32) (runs: 5098, μ: 2654712, ~: 2654528)
DecimalFloatFormatTest:testFormatDeployed(bytes32) (runs: 5098, μ: 2658855, ~: 2658721)
DecimalFloatFracTest:testFracDeployed(bytes32) (runs: 5098, μ: 2655104, ~: 2655088)
DecimalFloatFromFixedDecimalLosslessTest:testFromFixedDecimalLosslessDeployed(uint256,uint8) (runs: 5098, μ: 2655656, ~: 2655592)
DecimalFloatFromFixedDecimalLossyTest:testFromFixedDecimalLossyDeployed(uint256,uint8) (runs: 5098, μ: 2656145, ~: 2656062)
DecimalFloatGtTest:testGtDeployed(bytes32,bytes32) (runs: 5098, μ: 2655202, ~: 2655127)
DecimalFloatGteTest:testGteDeployed(bytes32,bytes32) (runs: 5098, μ: 2655188, ~: 2655113)
DecimalFloatInvTest:testInvDeployed(bytes32) (runs: 5098, μ: 2659738, ~: 2659772)
DecimalFloatIsZeroTest:testIsZeroDeployed(bytes32) (runs: 5098, μ: 2654370, ~: 2654370)
DecimalFloatLtTest:testLtDeployed(bytes32,bytes32) (runs: 5098, μ: 2655179, ~: 2655104)
DecimalFloatLteTest:testLteDeployed(bytes32,bytes32) (runs: 5098, μ: 2655232, ~: 2655157)
DecimalFloatMaxTest:testMaxDeployed(bytes32,bytes32) (runs: 5098, μ: 2655240, ~: 2655179)
DecimalFloatMinTest:testMinDeployed(bytes32,bytes32) (runs: 5098, μ: 2655260, ~: 2655199)
DecimalFloatMinusTest:testMinusDeployed(bytes32) (runs: 5098, μ: 2654975, ~: 2654975)
DecimalFloatMulTest:testMulDeployed(bytes32,bytes32) (runs: 5098, μ: 2658831, ~: 2659644)
DecimalFloatAbsTest:testAbsDeployed(bytes32) (runs: 5098, μ: 2661669, ~: 2661611)
DecimalFloatAddTest:testAddDeployed(bytes32,bytes32) (runs: 5098, μ: 2665752, ~: 2665829)
DecimalFloatCeilTest:testCeilDeployed(bytes32) (runs: 5098, μ: 2661695, ~: 2661324)
DecimalFloatConstantsTest:testEDeployed() (gas: 2660876)
DecimalFloatConstantsTest:testMaxNegativeValueDeployed() (gas: 2660843)
DecimalFloatConstantsTest:testMaxPositiveValueDeployed() (gas: 2660866)
DecimalFloatConstantsTest:testMinNegativeValueDeployed() (gas: 2660841)
DecimalFloatConstantsTest:testMinPositiveValueDeployed() (gas: 2660842)
DecimalFloatConstantsTest:testZeroDeployed() (gas: 2660909)
DecimalFloatDivTest:testDivDeployed(bytes32,bytes32) (runs: 5098, μ: 2667703, ~: 2667779)
DecimalFloatEqTest:testEqDeployed(bytes32,bytes32) (runs: 5098, μ: 2662076, ~: 2662001)
DecimalFloatFloorTest:testFloorDeployed(bytes32) (runs: 5098, μ: 2661551, ~: 2661367)
DecimalFloatFormatTest:testFormatDeployed(bytes32) (runs: 5098, μ: 2665643, ~: 2665501)
DecimalFloatFracTest:testFracDeployed(bytes32) (runs: 5098, μ: 2661920, ~: 2661904)
DecimalFloatFromFixedDecimalLosslessTest:testFromFixedDecimalLosslessDeployed(uint256,uint8) (runs: 5098, μ: 2662474, ~: 2662408)
DecimalFloatFromFixedDecimalLossyTest:testFromFixedDecimalLossyDeployed(uint256,uint8) (runs: 5098, μ: 2662958, ~: 2662878)
DecimalFloatGtTest:testGtDeployed(bytes32,bytes32) (runs: 5098, μ: 2661995, ~: 2661921)
DecimalFloatGteTest:testGteDeployed(bytes32,bytes32) (runs: 5098, μ: 2662068, ~: 2661994)
DecimalFloatInvTest:testInvDeployed(bytes32) (runs: 5098, μ: 2666551, ~: 2666588)
DecimalFloatIsZeroTest:testIsZeroDeployed(bytes32) (runs: 5098, μ: 2661186, ~: 2661186)
DecimalFloatLtTest:testLtDeployed(bytes32,bytes32) (runs: 5098, μ: 2661994, ~: 2661920)
DecimalFloatLteTest:testLteDeployed(bytes32,bytes32) (runs: 5098, μ: 2662026, ~: 2661951)
DecimalFloatMaxTest:testMaxDeployed(bytes32,bytes32) (runs: 5098, μ: 2662057, ~: 2661995)
DecimalFloatMinTest:testMinDeployed(bytes32,bytes32) (runs: 5098, μ: 2662055, ~: 2661993)
DecimalFloatMinusTest:testMinusDeployed(bytes32) (runs: 5098, μ: 2661791, ~: 2661791)
DecimalFloatMulTest:testMulDeployed(bytes32,bytes32) (runs: 5098, μ: 2665714, ~: 2666527)
DecimalFloatPackLosslessTest:testPackDeployed(int224,int32) (runs: 5098, μ: 158769, ~: 158769)
DecimalFloatParseTest:testParseDeployed(string) (runs: 5098, μ: 2657608, ~: 2657477)
DecimalFloatPowTest:testPowDeployed(bytes32,bytes32) (runs: 5098, μ: 2666894, ~: 2665819)
DecimalFloatSqrtTest:testSqrtDeployed(bytes32) (runs: 5098, μ: 2666573, ~: 2666521)
DecimalFloatSubTest:testSubDeployed(bytes32,bytes32) (runs: 5098, μ: 2659288, ~: 2659313)
DecimalFloatToFixedDecimalLosslessTest:testToFixedDecimalLosslessDeployed(bytes32,uint8) (runs: 5098, μ: 2656303, ~: 2656175)
DecimalFloatToFixedDecimalLossyTest:testToFixedDecimalLossyDeployed(bytes32,uint8) (runs: 5098, μ: 2656436, ~: 2656704)
DecimalFloatParseTest:testParseDeployed(string) (runs: 5098, μ: 2664423, ~: 2664292)
DecimalFloatPowTest:testPowDeployed(bytes32,bytes32) (runs: 5098, μ: 2673719, ~: 2672635)
DecimalFloatSqrtTest:testSqrtDeployed(bytes32) (runs: 5098, μ: 2673426, ~: 2673337)
DecimalFloatSubTest:testSubDeployed(bytes32,bytes32) (runs: 5098, μ: 2666110, ~: 2666129)
DecimalFloatToFixedDecimalLosslessTest:testToFixedDecimalLosslessDeployed(bytes32,uint8) (runs: 5098, μ: 2663137, ~: 2663014)
DecimalFloatToFixedDecimalLossyTest:testToFixedDecimalLossyDeployed(bytes32,uint8) (runs: 5098, μ: 2663251, ~: 2663520)
LibDecimalFloatAbsTest:testAbsMinValue(int32) (runs: 5098, μ: 5121, ~: 5121)
LibDecimalFloatAbsTest:testAbsNegative(int256,int32) (runs: 5098, μ: 10475, ~: 10702)
LibDecimalFloatAbsTest:testAbsNonNegative(int256,int32) (runs: 5098, μ: 9641, ~: 9392)
Expand Down
6 changes: 6 additions & 0 deletions src/concrete/DecimalFloat.sol
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,14 @@ contract DecimalFloat {
return LibDecimalFloat.FLOAT_MIN_NEGATIVE_VALUE;
}

/// Exposes `LibDecimalFloat.FLOAT_ZERO` for offchain use.
/// @return The zero value of a Float in its maximized representation.
function zero() external pure returns (Float) {
return LibDecimalFloat.FLOAT_ZERO;
}
/// Exposes `LibDecimalFloat.FLOAT_E` for offchain use.
/// @return The constant value of Euler's number as a Float.

function e() external pure returns (Float) {
return LibDecimalFloat.FLOAT_E;
}
Expand Down
17 changes: 17 additions & 0 deletions test/src/concrete/DecimalFloat.constants.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -93,4 +93,21 @@ contract DecimalFloatConstantsTest is Test {
deployed.e();
}
}

function zeroExternal() external pure returns (Float) {
return LibDecimalFloat.FLOAT_ZERO;
}

function testZeroDeployed() external {
DecimalFloat deployed = new DecimalFloat();

try this.zeroExternal() returns (Float zeroValue) {
Float deployedZeroValue = deployed.zero();

assertEq(Float.unwrap(zeroValue), Float.unwrap(deployedZeroValue));
} catch (bytes memory err) {
vm.expectRevert(err);
deployed.zero();
}
}
}
6 changes: 5 additions & 1 deletion test/src/lib/LibDecimalFloat.constants.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
pragma solidity =0.8.25;

import {LibDecimalFloat, Float} from "src/lib/LibDecimalFloat.sol";
import {
MAXIMIZED_ZERO_SIGNED_COEFFICIENT,
MAXIMIZED_ZERO_EXPONENT
} from "src/lib/implementation/LibDecimalFloatImplementation.sol";
Comment thread
thedavidmeister marked this conversation as resolved.
import {Test} from "forge-std/Test.sol";

contract LibDecimalFloatConstantsTest is Test {
Expand Down Expand Up @@ -68,7 +72,7 @@ contract LibDecimalFloatConstantsTest is Test {

function testFloatZero() external pure {
Float zero = LibDecimalFloat.FLOAT_ZERO;
Float expected = LibDecimalFloat.packLossless(0, 0);
Float expected = LibDecimalFloat.packLossless(MAXIMIZED_ZERO_SIGNED_COEFFICIENT, MAXIMIZED_ZERO_EXPONENT);
assertEq(Float.unwrap(zero), Float.unwrap(expected));
}

Expand Down
Loading