Skip to content

Commit

Permalink
T
Browse files Browse the repository at this point in the history
  • Loading branch information
Vectorized committed Aug 30, 2024
1 parent 78a9a11 commit ecbc73b
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 23 deletions.
12 changes: 6 additions & 6 deletions .gas-snapshot
Original file line number Diff line number Diff line change
Expand Up @@ -284,15 +284,15 @@ ERC4337Test:testValidateUserOp() (gas: 484693)
ERC4337Test:test__codesize() (gas: 55947)
ERC4626Test:testDepositWithNoApprovalReverts() (gas: 16954)
ERC4626Test:testDepositWithNotEnoughApprovalReverts() (gas: 90752)
ERC4626Test:testDifferentialFullMulDiv(uint256,uint256,uint256) (runs: 315, μ: 3322, ~: 3319)
ERC4626Test:testDifferentialFullMulDiv(uint256,uint256,uint256) (runs: 315, μ: 3321, ~: 3107)
ERC4626Test:testMetadata() (gas: 14354)
ERC4626Test:testMintWithNoApprovalReverts() (gas: 16928)
ERC4626Test:testMintZero() (gas: 53930)
ERC4626Test:testMultipleMintDepositRedeemWithdraw() (gas: 412871)
ERC4626Test:testRedeemWithNoShareAmountReverts() (gas: 10918)
ERC4626Test:testRedeemWithNotEnoughShareAmountReverts() (gas: 143777)
ERC4626Test:testSingleDepositWithdraw(uint128) (runs: 315, μ: 202556, ~: 202560)
ERC4626Test:testSingleMintRedeem(uint128) (runs: 315, μ: 201522, ~: 201525)
ERC4626Test:testSingleMintRedeem(uint128) (runs: 315, μ: 201522, ~: 201526)
ERC4626Test:testTryGetAssetDecimals() (gas: 30700474)
ERC4626Test:testUseVirtualShares() (gas: 2428448)
ERC4626Test:testVaultInteractionsForSomeoneElse() (gas: 297836)
Expand Down Expand Up @@ -513,7 +513,7 @@ FixedPointMathLibTest:testMinSigned(int256,int256) (runs: 315, μ: 498, ~: 503)
FixedPointMathLibTest:testMulDiv() (gas: 1890)
FixedPointMathLibTest:testMulDiv(uint256,uint256,uint256) (runs: 315, μ: 1603, ~: 794)
FixedPointMathLibTest:testMulDivEdgeCases() (gas: 741)
FixedPointMathLibTest:testMulDivOverflowReverts(uint256,uint256,uint256) (runs: 315, μ: 20178, ~: 27078)
FixedPointMathLibTest:testMulDivOverflowReverts(uint256,uint256,uint256) (runs: 315, μ: 20177, ~: 27078)
FixedPointMathLibTest:testMulDivUp() (gas: 2148)
FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 315, μ: 1834, ~: 1121)
FixedPointMathLibTest:testMulDivUpEdgeCases() (gas: 817)
Expand Down Expand Up @@ -549,7 +549,7 @@ FixedPointMathLibTest:testRawSub(uint256,uint256) (runs: 315, μ: 440, ~: 440)
FixedPointMathLibTest:testSDivWad() (gas: 916)
FixedPointMathLibTest:testSDivWad(int256,int256) (runs: 315, μ: 6748, ~: 971)
FixedPointMathLibTest:testSDivWadEdgeCases() (gas: 422)
FixedPointMathLibTest:testSDivWadOverflowReverts(int256,int256) (runs: 315, μ: 22224, ~: 26511)
FixedPointMathLibTest:testSDivWadOverflowReverts(int256,int256) (runs: 315, μ: 22227, ~: 26511)
FixedPointMathLibTest:testSDivWadZeroDenominatorReverts(int256) (runs: 315, μ: 3330, ~: 3330)
FixedPointMathLibTest:testSMulWad() (gas: 1032)
FixedPointMathLibTest:testSMulWad(int256,int256) (runs: 315, μ: 876, ~: 1047)
Expand Down Expand Up @@ -804,14 +804,14 @@ LibRLPTest:testComputeAddressForSmallNonces() (gas: 1007)
LibRLPTest:testComputeAddressOriginalForLargeNonces() (gas: 3766)
LibRLPTest:testComputeAddressOriginalForSmallNonces() (gas: 2185)
LibRLPTest:testRLPEncodeAddressDifferential(address) (runs: 315, μ: 237244, ~: 26224)
LibRLPTest:testRLPEncodeAddressViaList(address,address) (runs: 315, μ: 194371, ~: 28079)
LibRLPTest:testRLPEncodeAddressViaList(address,address) (runs: 315, μ: 194372, ~: 28079)
LibRLPTest:testRLPEncodeBool(bool) (runs: 315, μ: 27682, ~: 27818)
LibRLPTest:testRLPEncodeBytes() (gas: 382181)
LibRLPTest:testRLPEncodeBytes2() (gas: 156293)
LibRLPTest:testRLPEncodeBytesDifferential(bytes32) (runs: 315, μ: 273414, ~: 29721)
LibRLPTest:testRLPEncodeList() (gas: 2738950)
LibRLPTest:testRLPEncodeList2() (gas: 803256)
LibRLPTest:testRLPEncodeListDifferential(bytes,uint256) (runs: 315, μ: 431885, ~: 39109)
LibRLPTest:testRLPEncodeListDifferential(bytes,uint256) (runs: 315, μ: 431884, ~: 39109)
LibRLPTest:testRLPEncodeUint() (gas: 1291481)
LibRLPTest:testRLPEncodeUint(uint256) (runs: 315, μ: 99850, ~: 25002)
LibRLPTest:testRLPEncodeUintDifferential(uint256) (runs: 315, μ: 262020, ~: 27106)
Expand Down
25 changes: 8 additions & 17 deletions src/utils/FixedPointMathLib.sol
Original file line number Diff line number Diff line change
Expand Up @@ -947,9 +947,8 @@ library FixedPointMathLib {

/// @dev Returns the absolute value of `x`.
function abs(int256 x) internal pure returns (uint256 z) {
/// @solidity memory-safe-assembly
assembly {
z := xor(sar(255, x), add(sar(255, x), x))
unchecked {
z = (uint256(x) + uint256(x >> 255)) ^ uint256(x >> 255);
}
}

Expand Down Expand Up @@ -1044,11 +1043,7 @@ library FixedPointMathLib {
pure
returns (uint256)
{
if (begin > end) {
t = ~t;
begin = ~begin;
end = ~end;
}
if (begin > end) (t, begin, end) = (~t, ~begin, ~end);
if (t <= begin) return a;
if (t >= end) return b;
unchecked {
Expand All @@ -1066,19 +1061,15 @@ library FixedPointMathLib {
pure
returns (int256)
{
if (begin > end) {
t = int256(~uint256(t));
begin = int256(~uint256(begin));
end = int256(~uint256(end));
}
if (begin > end) (t, begin, end) = (~t, ~begin, ~end);
if (t <= begin) return a;
if (t >= end) return b;
// forgefmt: disable-next-item
unchecked {
if (b >= a) return int256(uint256(a) + fullMulDiv(uint256(b) - uint256(a),
uint256(t) - uint256(begin), uint256(end) - uint256(begin)));
return int256(uint256(a) - fullMulDiv(uint256(a) - uint256(b),
uint256(t) - uint256(begin), uint256(end) - uint256(begin)));
if (b >= a) return int256(uint256(a) + fullMulDiv(uint256(b - a),
uint256(t - begin), uint256(end - begin)));
return int256(uint256(a) - fullMulDiv(uint256(a - b),
uint256(t - begin), uint256(end - begin)));
}
}

Expand Down
2 changes: 2 additions & 0 deletions test/FixedPointMathLib.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -1587,8 +1587,10 @@ contract FixedPointMathLibTest is SoladyTest {
unchecked {
if (x > y) {
z = uint256(x - y);
assert(uint256(x) - uint256(y) == z);
} else {
z = uint256(y - x);
assert(uint256(y) - uint256(x) == z);
}
}
assertEq(FixedPointMathLib.dist(x, y), z);
Expand Down

0 comments on commit ecbc73b

Please sign in to comment.