diff --git a/.gas-snapshot b/.gas-snapshot index 398d9f94b..1d9ca3c47 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -7,29 +7,29 @@ LibEvalFBoundsTest:testEvalNPFBoundsModConstant(bytes32) (runs: 2072, μ: 87631, LibExternCodecTest:testLibExternCodecEncodeExternCall(uint256,bytes32) (runs: 2072, μ: 9767, ~: 10284) LibExternCodecTest:testLibExternCodecEncodeExternDispatch(uint256,bytes32) (runs: 2072, μ: 8884, ~: 9401) LibInterpreterStateStackTraceTest:testStackTraceCall(uint256,uint256,uint256[]) (runs: 2072, μ: 43064, ~: 42630) -LibOpAbsTest:testOpAbsEval() (gas: 293432) +LibOpAbsTest:testOpAbsEval() (gas: 293516) LibOpAbsTest:testOpAbsEvalOperandDisallowed() (gas: 17599) LibOpAbsTest:testOpAbsIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13752, ~: 13661) -LibOpAbsTest:testOpAbsRun(bytes32,uint16) (runs: 2072, μ: 17409, ~: 17349) +LibOpAbsTest:testOpAbsRun(bytes32,uint16) (runs: 2072, μ: 17410, ~: 17349) LibOpAbsTest:testOpAbsTwoInputs() (gas: 40031) LibOpAbsTest:testOpAbsTwoOutputs() (gas: 35862) LibOpAbsTest:testOpAbsZeroInputs() (gas: 30190) LibOpAbsTest:testOpAbsZeroOutputs() (gas: 34854) -LibOpAddTest:testOpAddEval2InputsHappy() (gas: 395287) +LibOpAddTest:testOpAddEval2InputsHappyExamples() (gas: 396854) LibOpAddTest:testOpAddEval2InputsHappyZero() (gas: 57784) LibOpAddTest:testOpAddEval2InputsHappyZeroMax() (gas: 104679) LibOpAddTest:testOpAddEval2InputsHappyZeroOne() (gas: 199416) -LibOpAddTest:testOpAddEval3InputsHappy() (gas: 348862) -LibOpAddTest:testOpAddEval3InputsUnhappy() (gas: 392510) +LibOpAddTest:testOpAddEval3InputsHappy() (gas: 351136) +LibOpAddTest:testOpAddEval3InputsUnhappy() (gas: 394519) LibOpAddTest:testOpAddEvalOneInput() (gas: 36691) LibOpAddTest:testOpAddEvalOperandDisallowed() (gas: 92017) LibOpAddTest:testOpAddEvalTwoOutput() (gas: 44075) LibOpAddTest:testOpAddEvalZeroInputs() (gas: 30311) LibOpAddTest:testOpAddEvalZeroOutputs() (gas: 43093) -LibOpAddTest:testOpAddIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18209, ~: 18407) +LibOpAddTest:testOpAddIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18257, ~: 18482) LibOpAddTest:testOpAddIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13872, ~: 13733) LibOpAddTest:testOpAddIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13869, ~: 13730) -LibOpAddTest:testOpAddRun(bytes32[]) (runs: 2062, μ: 85459, ~: 85602) +LibOpAddTest:testOpAddRun(bytes32[]) (runs: 2062, μ: 87635, ~: 88867) LibOpAnyTest:testOpAnyEval1FalseInput() (gas: 51952) LibOpAnyTest:testOpAnyEval1TrueInput() (gas: 51900) LibOpAnyTest:testOpAnyEval2FalseInputs() (gas: 57246) @@ -39,20 +39,20 @@ LibOpAnyTest:testOpAnyEval2MixedInputsZeroExponent() (gas: 58919) LibOpAnyTest:testOpAnyEval2TrueInputs() (gas: 57835) LibOpAnyTest:testOpAnyEvalFail() (gas: 29776) LibOpAnyTest:testOpAnyIntegrityGas0() (gas: 3251) -LibOpAnyTest:testOpAnyIntegrityHappy(uint8,uint16) (runs: 2072, μ: 8299, ~: 8417) +LibOpAnyTest:testOpAnyIntegrityHappy(uint8,uint16) (runs: 2072, μ: 8304, ~: 8492) LibOpAnyTest:testOpAnyIntegrityUnhappyZeroInputs() (gas: 4059) LibOpAnyTest:testOpAnyRun(bytes32[],uint16) (runs: 2062, μ: 21822, ~: 21797) LibOpAnyTest:testOpAnyRunGas0() (gas: 3345) LibOpAnyTest:testOpAnyTwoOutputs() (gas: 35832) LibOpAnyTest:testOpAnyZeroOutputs() (gas: 34802) -LibOpAvgTest:testOpAvgEval() (gas: 450361) +LibOpAvgTest:testOpAvgEvalExamples() (gas: 465117) LibOpAvgTest:testOpAvgEvalOneInput() (gas: 35231) LibOpAvgTest:testOpAvgEvalOperandDisallowed() (gas: 17640) LibOpAvgTest:testOpAvgEvalThreeInputs() (gas: 44958) LibOpAvgTest:testOpAvgEvalTwoOutputs() (gas: 40762) -LibOpAvgTest:testOpAvgEvalZeroOutputs() (gas: 39737) +LibOpAvgTest:testOpAvgEvalZeroOutputs() (gas: 39714) LibOpAvgTest:testOpAvgIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13774, ~: 13683) -LibOpAvgTest:testOpAvgRun(int256,int256,int256,int256,uint16) (runs: 2072, μ: 38994, ~: 39036) +LibOpAvgTest:testOpAvgRun(int256,int256,int256,int256,uint16) (runs: 2072, μ: 42977, ~: 43090) LibOpBinaryEqualToTest:testOpBinaryEqualToEval2() (gas: 208044) LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsBothOne() (gas: 57895) LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsFirstOneSecondZero() (gas: 58625) @@ -61,7 +61,7 @@ LibOpBinaryEqualToTest:testOpBinaryEqualToEval2ZeroInputs() (gas: 57940) LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail0Inputs() (gas: 30672) LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail1Input() (gas: 34992) LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail3Inputs() (gas: 43490) -LibOpBinaryEqualToTest:testOpBinaryEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19689, ~: 19932) +LibOpBinaryEqualToTest:testOpBinaryEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19705, ~: 19932) LibOpBinaryEqualToTest:testOpBinaryEqualToRun(bytes32,bytes32) (runs: 2072, μ: 16674, ~: 16674) LibOpBinaryEqualToTest:testOpBinaryEqualToTwoOutputs() (gas: 41650) LibOpBinaryEqualToTest:testOpBinaryEqualToZeroOutputs() (gas: 40581) @@ -83,30 +83,30 @@ LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalZeroInputs() (gas: 30725) LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalZeroOutputs() (gas: 40294) LibOpBitwiseOrNPTest:testOpBitwiseORNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13751, ~: 13660) LibOpBitwiseOrNPTest:testOpBitwiseORNPRun(bytes32,bytes32) (runs: 2072, μ: 16628, ~: 16628) -LibOpBlockNumberTest:testOpBlockNumberEval(uint256) (runs: 2072, μ: 51022, ~: 50798) +LibOpBlockNumberTest:testOpBlockNumberEval(uint256) (runs: 2072, μ: 51024, ~: 50798) LibOpBlockNumberTest:testOpBlockNumberEvalOneInput() (gas: 35219) LibOpBlockNumberTest:testOpBlockNumberEvalTwoOutputs() (gas: 31520) LibOpBlockNumberTest:testOpBlockNumberEvalZeroOutputs() (gas: 30511) -LibOpBlockNumberTest:testOpBlockNumberIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19640, ~: 19846) -LibOpBlockNumberTest:testOpBlockNumberRun(uint256,uint16) (runs: 2072, μ: 20843, ~: 20508) +LibOpBlockNumberTest:testOpBlockNumberIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19647, ~: 19844) +LibOpBlockNumberTest:testOpBlockNumberRun(uint256,uint16) (runs: 2072, μ: 20844, ~: 20508) LibOpCallTest:testCallTraceInnerOnly() (gas: 63057) LibOpCallTest:testCallTraceOuterOnly() (gas: 45623) -LibOpCallTest:testOpCallNPIntegrityIO((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2069, μ: 39818, ~: 38456) -LibOpCallTest:testOpCallNPIntegritySourceIndexOutOfBounds((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint256,uint256,bytes32) (runs: 2072, μ: 59278, ~: 58612) -LibOpCallTest:testOpCallNPIntegrityTooManyOutputs((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2064, μ: 58741, ~: 59346) +LibOpCallTest:testOpCallNPIntegrityIO((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2067, μ: 39845, ~: 38669) +LibOpCallTest:testOpCallNPIntegritySourceIndexOutOfBounds((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint256,uint256,bytes32) (runs: 2072, μ: 59372, ~: 58497) +LibOpCallTest:testOpCallNPIntegrityTooManyOutputs((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2063, μ: 59007, ~: 59321) LibOpCallTest:testOpCallNPRunInputsMismatch() (gas: 72624) LibOpCallTest:testOpCallNPRunOutputsMismatch() (gas: 65566) LibOpCallTest:testOpCallNPRunSourceDoesNotExist() (gas: 350991) -LibOpCeilTest:testOpCeilEval() (gas: 540373) +LibOpCeilTest:testOpCeilEval() (gas: 540968) LibOpCeilTest:testOpCeilEvalOperandDisallowed() (gas: 17657) LibOpCeilTest:testOpCeilIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13795, ~: 13704) -LibOpCeilTest:testOpCeilRun(bytes32,uint16) (runs: 2072, μ: 17000, ~: 16626) +LibOpCeilTest:testOpCeilRun(bytes32,uint16) (runs: 2072, μ: 17018, ~: 16626) LibOpCeilTest:testOpCeilTwoInputs() (gas: 40112) LibOpCeilTest:testOpCeilTwoOutputs() (gas: 35963) LibOpCeilTest:testOpCeilZeroInputs() (gas: 30249) LibOpCeilTest:testOpCeilZeroOutputs() (gas: 34934) LibOpChainIdTest:testOpChainIDEval(uint64) (runs: 2072, μ: 47089, ~: 47089) -LibOpChainIdTest:testOpChainIDIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19672, ~: 19915) +LibOpChainIdTest:testOpChainIDIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19672, ~: 19903) LibOpChainIdTest:testOpChainIdEvalFail() (gas: 34393) LibOpChainIdTest:testOpChainIdRun(uint64,uint16) (runs: 2072, μ: 17123, ~: 17123) LibOpChainIdTest:testOpChainIdTwoOutputs() (gas: 31197) @@ -121,18 +121,18 @@ LibOpConditionsTest:testOpConditionsEvalErrorCode() (gas: 67721) LibOpConditionsTest:testOpConditionsEvalFail0Inputs() (gas: 30412) LibOpConditionsTest:testOpConditionsEvalFail1Inputs() (gas: 34701) LibOpConditionsTest:testOpConditionsEvalUnhappyOperand() (gas: 18127) -LibOpConditionsTest:testOpConditionsIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 20229, ~: 20469) +LibOpConditionsTest:testOpConditionsIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 20230, ~: 20480) LibOpConditionsTest:testOpConditionsRun(bytes32[],bytes32) (runs: 2062, μ: 19740, ~: 19850) LibOpConditionsTest:testOpConditionsRunNoConditionsMet(bytes32[],string) (runs: 2056, μ: 29109, ~: 29334) LibOpConditionsTest:testOpConditionsTwoOutputs() (gas: 40002) LibOpConditionsTest:testOpConditionsZeroOutputs() (gas: 38952) -LibOpConstantTest:testOpConstantEvalNPE2E() (gas: 56139) +LibOpConstantTest:testOpConstantEvalNPE2E() (gas: 56181) LibOpConstantTest:testOpConstantEvalZeroConstants() (gas: 41566) -LibOpConstantTest:testOpConstantNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 19200, ~: 19095) -LibOpConstantTest:testOpConstantNPIntegrityOOBConstants((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 40159, ~: 39809) +LibOpConstantTest:testOpConstantNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 19201, ~: 19098) +LibOpConstantTest:testOpConstantNPIntegrityOOBConstants((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 40168, ~: 39809) LibOpConstantTest:testOpConstantNPMultipleOutputErrorSugared() (gas: 31705) LibOpConstantTest:testOpConstantNPMultipleOutputErrorUnsugared() (gas: 41645) -LibOpConstantTest:testOpConstantNPRun(bytes32[],uint16) (runs: 2072, μ: 52299, ~: 51687) +LibOpConstantTest:testOpConstantNPRun(bytes32[],uint16) (runs: 2072, μ: 52298, ~: 51854) LibOpConstantTest:testOpConstantNPZeroOutputErrorSugared() (gas: 30321) LibOpConstantTest:testOpConstantNPZeroOutputErrorUnsugared() (gas: 40273) LibOpContextNPTest:testOpContextNPEval00(bytes32[][]) (runs: 124, μ: 5998982, ~: 4747519) @@ -143,13 +143,13 @@ LibOpContextNPTest:testOpContextNPEvalOOBi(bytes32[]) (runs: 124, μ: 72964, ~: LibOpContextNPTest:testOpContextNPEvalOOBj(bytes32) (runs: 2072, μ: 48279, ~: 48279) LibOpContextNPTest:testOpContextNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 14503, ~: 14412) LibOpContextNPTest:testOpContextNPOneInput() (gas: 41644) -LibOpContextNPTest:testOpContextNPRun(bytes32[][],uint256,uint256) (runs: 124, μ: 9384403, ~: 5916141) -LibOpContextNPTest:testOpContextNPRunOOBi(bytes32[][],uint256,uint256) (runs: 124, μ: 9703940, ~: 6430368) -LibOpContextNPTest:testOpContextNPRunOOBj(bytes32[][],uint256,uint256) (runs: 124, μ: 9711909, ~: 6431283) +LibOpContextNPTest:testOpContextNPRun(bytes32[][],uint256,uint256) (runs: 124, μ: 9384392, ~: 5916141) +LibOpContextNPTest:testOpContextNPRunOOBi(bytes32[][],uint256,uint256) (runs: 124, μ: 9703941, ~: 6430636) +LibOpContextNPTest:testOpContextNPRunOOBj(bytes32[][],uint256,uint256) (runs: 124, μ: 9711907, ~: 6431626) LibOpContextNPTest:testOpContextNPTwoInputs() (gas: 46508) LibOpContextNPTest:testOpContextNPTwoOutputs() (gas: 37312) LibOpContextNPTest:testOpContextNPZeroOutputs() (gas: 36260) -LibOpCtPopNPTest:testOpCtPopNPEval(bytes32) (runs: 2072, μ: 74532, ~: 85323) +LibOpCtPopNPTest:testOpCtPopNPEval(bytes32) (runs: 2072, μ: 74388, ~: 85310) LibOpCtPopNPTest:testOpCtPopNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13750, ~: 13659) LibOpCtPopNPTest:testOpCtPopNPRun(bytes32) (runs: 2072, μ: 16698, ~: 16698) LibOpCtPopNPTest:testOpCtPopNPTwoInputs() (gas: 41191) @@ -161,28 +161,28 @@ LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalTwoInputs() (gas: 47694) LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalTwoOutputs() (gas: 43546) LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalZeroInputs() (gas: 37876) LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalZeroOutputs() (gas: 42493) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8,uint8) (runs: 2072, μ: 22135, ~: 22249) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFail((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2072, μ: 41503, ~: 41545) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8,uint8) (runs: 2072, μ: 22137, ~: 22292) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFail((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2072, μ: 41506, ~: 41545) LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFailZeroLength((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2072, μ: 35701, ~: 35423) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPRun(bytes32,uint8,uint8) (runs: 2072, μ: 21008, ~: 20814) -LibOpDivTest:testDebugOpDivRun() (gas: 13482) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPRun(bytes32,uint8,uint8) (runs: 2072, μ: 21005, ~: 20814) +LibOpDivTest:testDebugOpDivRun() (gas: 14325) LibOpDivTest:testOpDivEvalOneInput() (gas: 127260) LibOpDivTest:testOpDivEvalOperandsDisallowed() (gas: 91741) -LibOpDivTest:testOpDivEvalThreeInputsHappy() (gas: 337779) -LibOpDivTest:testOpDivEvalThreeInputsUnhappy() (gas: 213063) -LibOpDivTest:testOpDivEvalThreeInputsUnhappyOverflow() (gas: 63939) -LibOpDivTest:testOpDivEvalTwoInputsHappy() (gas: 296159) -LibOpDivTest:testOpDivEvalTwoInputsUnhappy() (gas: 144550) -LibOpDivTest:testOpDivEvalTwoInputsUnhappyOverflow() (gas: 57355) +LibOpDivTest:testOpDivEvalThreeInputsHappy() (gas: 411343) +LibOpDivTest:testOpDivEvalThreeInputsUnhappyExamples() (gas: 218420) +LibOpDivTest:testOpDivEvalThreeInputsUnhappyOverflow() (gas: 65659) +LibOpDivTest:testOpDivEvalTwoInputsHappy() (gas: 351931) +LibOpDivTest:testOpDivEvalTwoInputsUnhappyDivZero() (gas: 147202) +LibOpDivTest:testOpDivEvalTwoInputsUnhappyOverflow() (gas: 59119) LibOpDivTest:testOpDivEvalTwoOutputs() (gas: 41273) -LibOpDivTest:testOpDivEvalZeroInputs() (gas: 30225) -LibOpDivTest:testOpDivEvalZeroOutputs() (gas: 40269) -LibOpDivTest:testOpDivIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18253, ~: 18417) +LibOpDivTest:testOpDivEvalZeroInputs() (gas: 30248) +LibOpDivTest:testOpDivEvalZeroOutputs() (gas: 40247) +LibOpDivTest:testOpDivIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18227, ~: 18430) LibOpDivTest:testOpDivIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13825, ~: 13686) -LibOpDivTest:testOpDivIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13848, ~: 13709) -LibOpDivTest:testOpDivRun(bytes32[]) (runs: 2062, μ: 37817, ~: 33720) +LibOpDivTest:testOpDivIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13826, ~: 13687) +LibOpDivTest:testOpDivRun(bytes32[]) (runs: 2062, μ: 61942, ~: 54275) LibOpERC20AllowanceTest:testOpERC20AllowanceEvalFourInputs() (gas: 55904) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalHappy(uint256,uint8) (runs: 2072, μ: 72210, ~: 72113) +LibOpERC20AllowanceTest:testOpERC20AllowanceEvalHappy(uint256,uint8) (runs: 2072, μ: 72209, ~: 72113) LibOpERC20AllowanceTest:testOpERC20AllowanceEvalOneInput() (gas: 37159) LibOpERC20AllowanceTest:testOpERC20AllowanceEvalOperandDisallowed() (gas: 18649) LibOpERC20AllowanceTest:testOpERC20AllowanceEvalTwoInputs() (gas: 43689) @@ -190,8 +190,8 @@ LibOpERC20AllowanceTest:testOpERC20AllowanceEvalTwoOutputs() (gas: 50723) LibOpERC20AllowanceTest:testOpERC20AllowanceEvalZeroInputs() (gas: 31165) LibOpERC20AllowanceTest:testOpERC20AllowanceEvalZeroOutputs() (gas: 49699) LibOpERC20AllowanceTest:testOpERC20AllowanceIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13714, ~: 13623) -LibOpERC20AllowanceTest:testOpERC20AllowanceRun(address,address,address,uint256,uint8) (runs: 2069, μ: 27665, ~: 27579) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalHappy(uint256,uint8) (runs: 2067, μ: 66124, ~: 66124) +LibOpERC20AllowanceTest:testOpERC20AllowanceRun(address,address,address,uint256,uint8) (runs: 2071, μ: 27665, ~: 27579) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalHappy(uint256,uint8) (runs: 2066, μ: 66124, ~: 66124) LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalOneInput() (gas: 37264) LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalOperandDisallowed() (gas: 18707) LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalOverflow(uint256,uint8) (runs: 2049, μ: 62393, ~: 62393) @@ -200,16 +200,16 @@ LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalTwoOutputs() (gas: 44459) LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroInputs() (gas: 31224) LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroOutputs() (gas: 43391) LibOpERC20BalanceOfTest:testOpERC20BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13693, ~: 13602) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfRun(address,address,uint256,uint16,uint8) (runs: 2064, μ: 28009, ~: 28009) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalHappy(uint256,uint8) (runs: 2068, μ: 59294, ~: 59294) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfRun(address,address,uint256,uint16,uint8) (runs: 2063, μ: 28009, ~: 28009) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalHappy(uint256,uint8) (runs: 2069, μ: 59294, ~: 59294) LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalOperandDisallowed() (gas: 18870) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalOverflow(uint256,uint8) (runs: 2050, μ: 55529, ~: 55529) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalOverflow(uint256,uint8) (runs: 2049, μ: 55529, ~: 55529) LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoInputs() (gas: 43911) LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoOutputs() (gas: 38273) LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroInputs() (gas: 31407) LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroOutputs() (gas: 37245) LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13737, ~: 13646) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPRun(address,uint256,uint16,uint8) (runs: 2068, μ: 27211, ~: 27211) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPRun(address,uint256,uint16,uint8) (runs: 2067, μ: 27211, ~: 27211) LibOpERC5313OwnerTest:testOpERC5313OwnerEvalHappy() (gas: 55315) LibOpERC5313OwnerTest:testOpERC5313OwnerEvalOperandDisallowed() (gas: 18388) LibOpERC5313OwnerTest:testOpERC5313OwnerEvalTwoInputs() (gas: 43507) @@ -218,14 +218,14 @@ LibOpERC5313OwnerTest:testOpERC5313OwnerEvalZeroInputs() (gas: 31001) LibOpERC5313OwnerTest:testOpERC5313OwnerEvalZeroOutputs() (gas: 36682) LibOpERC5313OwnerTest:testOpERC5313OwnerOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13754, ~: 13663) LibOpERC5313OwnerTest:testOpERC5313OwnerOfRun(address,address,uint16) (runs: 2072, μ: 23615, ~: 23615) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfEvalHappy(address,address,uint256) (runs: 2064, μ: 105381, ~: 105536) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19668, ~: 19936) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfEvalHappy(address,address,uint256) (runs: 2068, μ: 105386, ~: 105536) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19664, ~: 19920) LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail0() (gas: 30868) LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail1() (gas: 35158) LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail3() (gas: 44593) LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFailOperand() (gas: 21591) LibOpERC721BalanceOfTest:testOpERC721BalanceOfOneInput() (gas: 35625) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfRun(address,address,uint256,uint16) (runs: 2064, μ: 26008, ~: 26008) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfRun(address,address,uint256,uint16) (runs: 2068, μ: 26008, ~: 26008) LibOpERC721BalanceOfTest:testOpERC721BalanceOfThreeInputs() (gas: 45113) LibOpERC721BalanceOfTest:testOpERC721BalanceOfTwoOutputs() (gas: 41118) LibOpERC721BalanceOfTest:testOpERC721BalanceOfZeroInputs() (gas: 31302) @@ -234,19 +234,19 @@ LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail0() (gas: 30751) LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail1() (gas: 35039) LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail3() (gas: 44529) LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFailOperand() (gas: 18240) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalHappy(address,uint256,address) (runs: 2068, μ: 96494, ~: 92473) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalHappy(address,uint256,address) (runs: 2071, μ: 96397, ~: 92421) LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalOneInput() (gas: 35497) LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalThreeInputs() (gas: 44994) LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalZeroInputs() (gas: 31198) LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalZeroOutputs() (gas: 39787) LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2072, μ: 13767, ~: 13698) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPRun(address,bytes32,address,uint16) (runs: 2068, μ: 24201, ~: 24201) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPRun(address,bytes32,address,uint16) (runs: 2071, μ: 24201, ~: 24201) LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPTwoOutputs() (gas: 40833) LibOpETest:testOpEEval() (gas: 44646) LibOpETest:testOpEEvalOneInput() (gas: 34305) LibOpETest:testOpEEvalTwoOutputs() (gas: 30672) LibOpETest:testOpEEvalZeroOutputs() (gas: 29621) -LibOpETest:testOpEIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19693, ~: 19923) +LibOpETest:testOpEIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19688, ~: 19943) LibOpETest:testOpERun(uint16) (runs: 2072, μ: 16132, ~: 16132) LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalHappy() (gas: 833676) LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalOneInput() (gas: 42095) @@ -254,10 +254,10 @@ LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalThreeInputs() (gas: 51842) LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalTwoOutputs() (gas: 47668) LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalZeroInputs() (gas: 37116) LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalZeroOutputs() (gas: 46664) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2072, μ: 18150, ~: 18137) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFail((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2072, μ: 41711, ~: 41753) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2072, μ: 18143, ~: 18135) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFail((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2072, μ: 41718, ~: 41755) LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFailZeroLength((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2072, μ: 35830, ~: 35552) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPRun(bytes32,bytes32,uint8,uint8) (runs: 2072, μ: 21396, ~: 21212) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPRun(bytes32,bytes32,uint8,uint8) (runs: 2072, μ: 21392, ~: 21212) LibOpEnsureTest:testOpEnsureEvalBadOutputs() (gas: 34466) LibOpEnsureTest:testOpEnsureEvalBadOutputs2() (gas: 33991) LibOpEnsureTest:testOpEnsureEvalHappy() (gas: 166191) @@ -266,11 +266,11 @@ LibOpEnsureTest:testOpEnsureEvalThree() (gas: 45403) LibOpEnsureTest:testOpEnsureEvalUnhappy() (gas: 164922) LibOpEnsureTest:testOpEnsureEvalUnhappyOperand() (gas: 17091) LibOpEnsureTest:testOpEnsureEvalZero() (gas: 29681) -LibOpEnsureTest:testOpEnsureIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19717, ~: 19907) +LibOpEnsureTest:testOpEnsureIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19729, ~: 19948) LibOpEnsureTest:testOpEnsureIntegrityUnhappy((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13816, ~: 13677) LibOpEnsureTest:testOpEnsureOneOutput() (gas: 39640) -LibOpEnsureTest:testOpEnsureRun(bytes32,string) (runs: 2060, μ: 18061, ~: 18106) -LibOpEqualToNPTest:testOpEqualToEval2Inputs() (gas: 339647) +LibOpEnsureTest:testOpEnsureRun(bytes32,string) (runs: 2060, μ: 18054, ~: 18106) +LibOpEqualToNPTest:testOpEqualToEval2Inputs() (gas: 339689) LibOpEqualToNPTest:testOpEqualToEval2InputsBothOne() (gas: 57707) LibOpEqualToNPTest:testOpEqualToEval2InputsFirstOneSecondZero() (gas: 58394) LibOpEqualToNPTest:testOpEqualToEval2InputsFirstZeroSecondOne() (gas: 58397) @@ -278,7 +278,7 @@ LibOpEqualToNPTest:testOpEqualToEval2ZeroInputs() (gas: 57730) LibOpEqualToNPTest:testOpEqualToEvalFail0Inputs() (gas: 30105) LibOpEqualToNPTest:testOpEqualToEvalFail1Input() (gas: 34416) LibOpEqualToNPTest:testOpEqualToEvalFail3Inputs() (gas: 42840) -LibOpEqualToNPTest:testOpEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19677, ~: 19934) +LibOpEqualToNPTest:testOpEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19680, ~: 19903) LibOpEqualToNPTest:testOpEqualToRun(bytes32,bytes32) (runs: 2072, μ: 17543, ~: 17466) LibOpEqualToNPTest:testOpEqualToTwoOutputs() (gas: 41105) LibOpEqualToNPTest:testOpEqualToZeroOutputs() (gas: 40014) @@ -290,27 +290,27 @@ LibOpEveryTest:testOpEveryEval2MixedInputs2() (gas: 57985) LibOpEveryTest:testOpEveryEval2TrueInputs() (gas: 58328) LibOpEveryTest:testOpEveryEvalFail() (gas: 29911) LibOpEveryTest:testOpEveryEvalZeroWithExponent() (gas: 59025) -LibOpEveryTest:testOpEveryIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19805, ~: 20047) +LibOpEveryTest:testOpEveryIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19803, ~: 20033) LibOpEveryTest:testOpEveryIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13864, ~: 13725) -LibOpEveryTest:testOpEveryRun(bytes32[]) (runs: 2062, μ: 20852, ~: 20873) +LibOpEveryTest:testOpEveryRun(bytes32[]) (runs: 2062, μ: 20853, ~: 20873) LibOpEveryTest:testOpEveryTwoOutputs() (gas: 36032) LibOpEveryTest:testOpEveryZeroOutputs() (gas: 35003) -LibOpExp2Test:testOpExp2Eval() (gas: 228965) LibOpExp2Test:testOpExp2EvalBad() (gas: 65539) +LibOpExp2Test:testOpExp2EvalExample() (gas: 231411) LibOpExp2Test:testOpExp2EvalOperandDisallowed() (gas: 17721) LibOpExp2Test:testOpExp2Integrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13772, ~: 13681) -LibOpExp2Test:testOpExp2Run(int224,int32,uint16) (runs: 2072, μ: 41949, ~: 36052) +LibOpExp2Test:testOpExp2Run(int224,int32,uint16) (runs: 2072, μ: 46068, ~: 41255) LibOpExp2Test:testOpExp2TwoOutputs() (gas: 35963) LibOpExp2Test:testOpExp2ZeroOutputs() (gas: 34932) -LibOpExpTest:testOpExpEval() (gas: 294876) -LibOpExpTest:testOpExpEvalOperandDisallowed() (gas: 17616) -LibOpExpTest:testOpExpEvalTwoInputs() (gas: 40073) -LibOpExpTest:testOpExpEvalZeroInputs() (gas: 30232) -LibOpExpTest:testOpExpIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13794, ~: 13703) -LibOpExpTest:testOpExpRun(int224,int32,uint16) (runs: 2072, μ: 69202, ~: 68354) -LibOpExpTest:testOpExpTwoOutputs() (gas: 35926) -LibOpExpTest:testOpExpZeroOutputs() (gas: 34895) -LibOpExponentialGrowthTest:testOpExponentialGrowthEval() (gas: 776379) +LibOpExpTest:testOpExpEvalExample() (gas: 283825) +LibOpExpTest:testOpExpEvalOperandDisallowed() (gas: 17639) +LibOpExpTest:testOpExpEvalTwoInputs() (gas: 40117) +LibOpExpTest:testOpExpEvalZeroInputs() (gas: 30210) +LibOpExpTest:testOpExpIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13772, ~: 13681) +LibOpExpTest:testOpExpRun(int224,int32,uint16) (runs: 2072, μ: 70876, ~: 69100) +LibOpExpTest:testOpExpTwoOutputs() (gas: 35904) +LibOpExpTest:testOpExpZeroOutputs() (gas: 34873) +LibOpExponentialGrowthTest:testOpExponentialGrowthEval() (gas: 794387) LibOpExponentialGrowthTest:testOpExponentialGrowthEvalFourInputs() (gas: 51631) LibOpExponentialGrowthTest:testOpExponentialGrowthEvalOneInput() (gas: 36415) LibOpExponentialGrowthTest:testOpExponentialGrowthEvalOperandDisallowed() (gas: 18823) @@ -319,21 +319,21 @@ LibOpExponentialGrowthTest:testOpExponentialGrowthEvalTwoOutputs() (gas: 47364) LibOpExponentialGrowthTest:testOpExponentialGrowthEvalZeroInputs() (gas: 31072) LibOpExponentialGrowthTest:testOpExponentialGrowthEvalZeroOutputs() (gas: 46295) LibOpExponentialGrowthTest:testOpExponentialGrowthIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13750, ~: 13659) -LibOpExponentialGrowthTest:testOpExponentialGrowthRun(int224,int32,int224,int32,int224,int32,uint16) (runs: 2072, μ: 74499, ~: 76568) +LibOpExponentialGrowthTest:testOpExponentialGrowthRun(int224,int32,int224,int32,int224,int32,uint16) (runs: 2072, μ: 79445, ~: 82523) LibOpExternNPTest:testOpExternNPEvalHappy() (gas: 99821) LibOpExternNPTest:testOpExternNPEvalMultipleInputsOutputsHappy() (gas: 115392) -LibOpExternNPTest:testOpExternNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2070, μ: 34988, ~: 35002) -LibOpExternNPTest:testOpExternNPIntegrityNotAnExternContract((uint256,uint256,uint256,bytes32[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2070, μ: 53557, ~: 53730) -LibOpExternNPTest:testOpExternNPRunHappy(address,bytes32[],uint16,bytes32[],bytes32[]) (runs: 2071, μ: 117790, ~: 117668) -LibOpFloorTest:testOpFloorEval() (gas: 253967) +LibOpExternNPTest:testOpExternNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2070, μ: 34977, ~: 34960) +LibOpExternNPTest:testOpExternNPIntegrityNotAnExternContract((uint256,uint256,uint256,bytes32[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2070, μ: 53499, ~: 53612) +LibOpExternNPTest:testOpExternNPRunHappy(address,bytes32[],uint16,bytes32[],bytes32[]) (runs: 2071, μ: 117833, ~: 117748) +LibOpFloorTest:testOpFloorEval() (gas: 254057) LibOpFloorTest:testOpFloorEvalOperandDisallowed() (gas: 17739) LibOpFloorTest:testOpFloorIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13751, ~: 13660) -LibOpFloorTest:testOpFloorRun(bytes32,uint16) (runs: 2072, μ: 16820, ~: 16626) +LibOpFloorTest:testOpFloorRun(bytes32,uint16) (runs: 2072, μ: 16819, ~: 16626) LibOpFloorTest:testOpFloorTwoInputs() (gas: 40215) LibOpFloorTest:testOpFloorTwoOutputs() (gas: 36023) LibOpFloorTest:testOpFloorZeroInputs() (gas: 30353) LibOpFloorTest:testOpFloorZeroOutputs() (gas: 35016) -LibOpFracTest:testOpFracEval() (gas: 337634) +LibOpFracTest:testOpFracEval() (gas: 337811) LibOpFracTest:testOpFracEvalOperandDisallowed() (gas: 17657) LibOpFracTest:testOpFracIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13793, ~: 13702) LibOpFracTest:testOpFracRun(bytes32,uint16) (runs: 2072, μ: 17113, ~: 17096) @@ -351,17 +351,17 @@ LibOpGetTest:testLibOpGetEvalTwoInputs() (gas: 39799) LibOpGetTest:testLibOpGetEvalTwoOutputs() (gas: 35391) LibOpGetTest:testLibOpGetEvalZeroInputs() (gas: 29814) LibOpGetTest:testLibOpGetEvalZeroOutputs() (gas: 34361) -LibOpGetTest:testLibOpGetIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 20559, ~: 20826) +LibOpGetTest:testLibOpGetIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 20563, ~: 20814) LibOpGetTest:testLibOpGetRunState(bytes32,bytes32,uint16) (runs: 2072, μ: 19634, ~: 19638) LibOpGetTest:testLibOpGetRunStateAndStore(bytes32,bytes32,bytes32,uint16) (runs: 2072, μ: 47596, ~: 47610) LibOpGetTest:testLibOpGetRunStore(bytes32,bytes32,uint16) (runs: 2072, μ: 49831, ~: 49835) LibOpGetTest:testLibOpGetRunStoreDifferentNamespace(bytes32,bytes32,uint16) (runs: 2072, μ: 51423, ~: 51427) -LibOpGetTest:testLibOpGetRunUnset(bytes32,uint16) (runs: 2072, μ: 24664, ~: 24668) -LibOpGmTest:testOpGmEval() (gas: 465360) +LibOpGetTest:testLibOpGetRunUnset(bytes32,uint16) (runs: 2072, μ: 24663, ~: 24668) +LibOpGmTest:testOpGmEval() (gas: 477886) LibOpGmTest:testOpGmEvalOperandDisallowed() (gas: 17537) LibOpGmTest:testOpGmIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13793, ~: 13702) LibOpGmTest:testOpGmOneInput() (gas: 35120) -LibOpGmTest:testOpGmRun(int224,int32,int224,int32,uint16) (runs: 2072, μ: 75467, ~: 79378) +LibOpGmTest:testOpGmRun(int224,int32,int224,int32,uint16) (runs: 2072, μ: 83186, ~: 87207) LibOpGmTest:testOpGmThreeInputs() (gas: 44867) LibOpGmTest:testOpGmTwoOutputs() (gas: 40691) LibOpGmTest:testOpGmZeroOutputs() (gas: 39668) @@ -373,11 +373,11 @@ LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEvalFail0Inputs() (gas: LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEvalFail1Input() (gas: 35850) LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEvalFail3Inputs() (gas: 44199) LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2072, μ: 13746, ~: 13677) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToRun(bytes32,bytes32) (runs: 2072, μ: 17394, ~: 17323) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToRun(bytes32,bytes32) (runs: 2072, μ: 17392, ~: 17323) LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToTwoOutputs() (gas: 43043) LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToZeroOutputs() (gas: 41818) -LibOpGreaterThanTest:testOpGreaterThanEval1_0Gt1() (gas: 58641) -LibOpGreaterThanTest:testOpGreaterThanEval1_1Gt1_2() (gas: 61243) +LibOpGreaterThanTest:testOpGreaterThanEval1_0Gt1() (gas: 58683) +LibOpGreaterThanTest:testOpGreaterThanEval1_1Gt1_2() (gas: 61327) LibOpGreaterThanTest:testOpGreaterThanEval2InputsBothOne() (gas: 57956) LibOpGreaterThanTest:testOpGreaterThanEval2InputsFirstOneSecondZero() (gas: 58688) LibOpGreaterThanTest:testOpGreaterThanEval2InputsFirstZeroSecondOne() (gas: 58707) @@ -386,9 +386,9 @@ LibOpGreaterThanTest:testOpGreaterThanEvalFail0Inputs() (gas: 30473) LibOpGreaterThanTest:testOpGreaterThanEvalFail1Input() (gas: 34794) LibOpGreaterThanTest:testOpGreaterThanEvalFail3Inputs() (gas: 43135) LibOpGreaterThanTest:testOpGreaterThanEvalNeg1Gt0() (gas: 58740) -LibOpGreaterThanTest:testOpGreaterThanEvalNeg1_1GtNeg1_2() (gas: 61444) -LibOpGreaterThanTest:testOpGreaterThanIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19685, ~: 19880) -LibOpGreaterThanTest:testOpGreaterThanRun(bytes32,bytes32) (runs: 2072, μ: 17417, ~: 17347) +LibOpGreaterThanTest:testOpGreaterThanEvalNeg1_1GtNeg1_2() (gas: 61528) +LibOpGreaterThanTest:testOpGreaterThanIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19692, ~: 19937) +LibOpGreaterThanTest:testOpGreaterThanRun(bytes32,bytes32) (runs: 2072, μ: 17421, ~: 17347) LibOpGreaterThanTest:testOpGreaterThanTwoOutputs() (gas: 41892) LibOpGreaterThanTest:testOpGreaterThanZeroOutputs() (gas: 40844) LibOpHashNPTest:testOpHashNPEval0Inputs() (gas: 46357) @@ -396,14 +396,14 @@ LibOpHashNPTest:testOpHashNPEval1Input() (gas: 54967) LibOpHashNPTest:testOpHashNPEval2Inputs() (gas: 63309) LibOpHashNPTest:testOpHashNPEval2InputsDifferent() (gas: 63983) LibOpHashNPTest:testOpHashNPEval2InputsOtherStack() (gas: 78538) -LibOpHashNPTest:testOpHashNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19715, ~: 19946) +LibOpHashNPTest:testOpHashNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19716, ~: 19934) LibOpHashNPTest:testOpHashNPRun(bytes32[]) (runs: 2062, μ: 19464, ~: 19563) LibOpHashNPTest:testOpHashNPTwoOutputs() (gas: 30882) LibOpHashNPTest:testOpHashNPZeroOutputs() (gas: 29508) -LibOpHeadroomTest:testOpHeadroomEval() (gas: 482482) +LibOpHeadroomTest:testOpHeadroomEval() (gas: 484742) LibOpHeadroomTest:testOpHeadroomEvalOperandDisallowed() (gas: 17980) LibOpHeadroomTest:testOpHeadroomIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13751, ~: 13660) -LibOpHeadroomTest:testOpHeadroomRun(bytes32,uint16) (runs: 2072, μ: 20540, ~: 20527) +LibOpHeadroomTest:testOpHeadroomRun(bytes32,uint16) (runs: 2072, μ: 20832, ~: 20885) LibOpHeadroomTest:testOpHeadroomTwoInputs() (gas: 40459) LibOpHeadroomTest:testOpHeadroomTwoOutputs() (gas: 36310) LibOpHeadroomTest:testOpHeadroomZeroInputs() (gas: 30595) @@ -424,12 +424,12 @@ LibOpIfTest:testOpIfEvalFail4Inputs() (gas: 46493) LibOpIfTest:testOpIfEvalTwoOutputs() (gas: 45996) LibOpIfTest:testOpIfEvalZeroExponent() (gas: 65036) LibOpIfTest:testOpIfEvalZeroOutputs() (gas: 44927) -LibOpIfTest:testOpIfIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19679, ~: 19943) +LibOpIfTest:testOpIfIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19670, ~: 19895) LibOpIfTest:testOpIfRun(bytes32,bytes32,bytes32) (runs: 2072, μ: 17013, ~: 17014) LibOpInvTest:testOpExpEvalOperandDisallowed() (gas: 17638) -LibOpInvTest:testOpInvEval() (gas: 177070) +LibOpInvTest:testOpInvEval() (gas: 183396) LibOpInvTest:testOpInvIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13751, ~: 13660) -LibOpInvTest:testOpInvRun(int224,int32,uint16) (runs: 2071, μ: 25069, ~: 25219) +LibOpInvTest:testOpInvRun(int224,int32,uint16) (runs: 2071, μ: 28393, ~: 28659) LibOpInvTest:testOpInvTwoInputs() (gas: 40117) LibOpInvTest:testOpInvTwoOutputs() (gas: 35903) LibOpInvTest:testOpInvZeroInputs() (gas: 30233) @@ -439,7 +439,7 @@ LibOpIsZeroTest:testOpIsZeroEval1NonZeroInput() (gas: 52363) LibOpIsZeroTest:testOpIsZeroEval1ZeroInput() (gas: 52100) LibOpIsZeroTest:testOpIsZeroEvalFail0Inputs() (gas: 30014) LibOpIsZeroTest:testOpIsZeroEvalFail2Inputs() (gas: 38573) -LibOpIsZeroTest:testOpIsZeroNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19780, ~: 20021) +LibOpIsZeroTest:testOpIsZeroNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19790, ~: 20036) LibOpIsZeroTest:testOpIsZeroRun(bytes32) (runs: 2072, μ: 16420, ~: 16421) LibOpIsZeroTest:testOpIsZeroTwoOutputs() (gas: 36408) LibOpIsZeroTest:testOpIsZeroZeroOutputs() (gas: 35114) @@ -450,26 +450,26 @@ LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEval2ZeroInputs() (gas: 57291) LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEvalFail0Inputs() (gas: 31157) LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEvalFail1Input() (gas: 35513) LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEvalFail3Inputs() (gas: 43976) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19674, ~: 19912) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToRun(bytes32,bytes32) (runs: 2072, μ: 17399, ~: 17329) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19679, ~: 19917) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToRun(bytes32,bytes32) (runs: 2072, μ: 17402, ~: 17329) LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToTwoOutputs() (gas: 42643) LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToZeroOutputs() (gas: 41596) LibOpLessThanTest:testOpLessThanEval2InputsFirstZeroSecondOne() (gas: 58464) LibOpLessThanTest:testOpLessThanEval2ZeroInputs() (gas: 57712) -LibOpLessThanTest:testOpLessThanIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19708, ~: 19928) -LibOpLessThanTest:testOpLessThanNP1_0Lt1() (gas: 58465) -LibOpLessThanTest:testOpLessThanNP1_1Lt1_2() (gas: 60956) +LibOpLessThanTest:testOpLessThanIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19701, ~: 19928) +LibOpLessThanTest:testOpLessThanNP1_0Lt1() (gas: 58507) +LibOpLessThanTest:testOpLessThanNP1_1Lt1_2() (gas: 61040) LibOpLessThanTest:testOpLessThanNPEval2InputsBothOne() (gas: 57736) LibOpLessThanTest:testOpLessThanNPEval2InputsFirstOneSecondZero() (gas: 58421) LibOpLessThanTest:testOpLessThanNPMinus1Lt0() (gas: 58519) -LibOpLessThanTest:testOpLessThanNPMinus1_1LtMinus1_2() (gas: 61180) +LibOpLessThanTest:testOpLessThanNPMinus1_1LtMinus1_2() (gas: 61264) LibOpLessThanTest:testOpLessThanNPTwoOutputs() (gas: 41978) LibOpLessThanTest:testOpLessThanNPZeroOutputs() (gas: 40093) -LibOpLessThanTest:testOpLessThanRun(bytes32,bytes32) (runs: 2072, μ: 17425, ~: 17353) +LibOpLessThanTest:testOpLessThanRun(bytes32,bytes32) (runs: 2072, μ: 17424, ~: 17353) LibOpLessThanTest:testOpLessThanToNPEvalFail0Inputs() (gas: 30208) LibOpLessThanTest:testOpLessThanToNPEvalFail1Input() (gas: 34498) LibOpLessThanTest:testOpLessThanToNPEvalFail3Inputs() (gas: 42878) -LibOpLinearGrowthTest:testOpLinearGrowthEval() (gas: 785836) +LibOpLinearGrowthTest:testOpLinearGrowthEval() (gas: 798126) LibOpLinearGrowthTest:testOpLinearGrowthEvalFourInputs() (gas: 51237) LibOpLinearGrowthTest:testOpLinearGrowthEvalOneInput() (gas: 36064) LibOpLinearGrowthTest:testOpLinearGrowthEvalOperandDisallowed() (gas: 18426) @@ -478,75 +478,75 @@ LibOpLinearGrowthTest:testOpLinearGrowthEvalTwoOutputs() (gas: 46929) LibOpLinearGrowthTest:testOpLinearGrowthEvalZeroInputs() (gas: 30656) LibOpLinearGrowthTest:testOpLinearGrowthEvalZeroOutputs() (gas: 45880) LibOpLinearGrowthTest:testOpLinearGrowthIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13750, ~: 13659) -LibOpLinearGrowthTest:testOpLinearGrowthRun(int224,int32,int224,int32,int224,int32,uint16) (runs: 2072, μ: 37203, ~: 37864) +LibOpLinearGrowthTest:testOpLinearGrowthRun(int224,int32,int224,int32,int224,int32,uint16) (runs: 2072, μ: 39362, ~: 39663) LibOpMaxNegativeValueTest:testOpMaxNegativeValueEval() (gas: 47423) LibOpMaxNegativeValueTest:testOpMaxNegativeValueEvalFail() (gas: 35224) LibOpMaxNegativeValueTest:testOpMaxNegativeValueRun() (gas: 16187) LibOpMaxNegativeValueTest:testOpMaxNegativeValueTwoOutputs() (gas: 31987) LibOpMaxNegativeValueTest:testOpMaxNegativeValueZeroOutputs() (gas: 30979) -LibOpMaxNegativeValueTest:testOpMaxValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19660, ~: 19899) +LibOpMaxNegativeValueTest:testOpMaxValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19674, ~: 19918) LibOpMaxPositiveValueTest:testOpMaxPositiveValueEval() (gas: 47422) LibOpMaxPositiveValueTest:testOpMaxPositiveValueEvalFail() (gas: 35245) -LibOpMaxPositiveValueTest:testOpMaxPositiveValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19696, ~: 19937) +LibOpMaxPositiveValueTest:testOpMaxPositiveValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19698, ~: 19932) LibOpMaxPositiveValueTest:testOpMaxPositiveValueRun() (gas: 16196) LibOpMaxPositiveValueTest:testOpMaxPositiveValueTwoOutputs() (gas: 31986) LibOpMaxPositiveValueTest:testOpMaxPositiveValueZeroOutputs() (gas: 30978) -LibOpMaxTest:testOpMaxEval2InputsHappy() (gas: 886074) -LibOpMaxTest:testOpMaxEval3InputsHappy() (gas: 2039858) +LibOpMaxTest:testOpMaxEval2InputsHappy() (gas: 886200) +LibOpMaxTest:testOpMaxEval3InputsHappy() (gas: 2040068) LibOpMaxTest:testOpMaxEvalOneInput() (gas: 129997) LibOpMaxTest:testOpMaxEvalOperandDisallowed() (gas: 59061) LibOpMaxTest:testOpMaxEvalTwoOutputs() (gas: 40788) LibOpMaxTest:testOpMaxEvalZeroInputs() (gas: 30227) -LibOpMaxTest:testOpMaxIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18211, ~: 18408) +LibOpMaxTest:testOpMaxIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18208, ~: 18373) LibOpMaxTest:testOpMaxIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13826, ~: 13687) LibOpMaxTest:testOpMaxIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13848, ~: 13709) -LibOpMaxTest:testOpMaxRun(bytes32[]) (runs: 2062, μ: 26589, ~: 26360) +LibOpMaxTest:testOpMaxRun(bytes32[]) (runs: 2062, μ: 26604, ~: 26345) LibOpMaxUint256Test:testOpMaxUint256Eval() (gas: 47352) LibOpMaxUint256Test:testOpMaxUint256EvalFail() (gas: 35166) -LibOpMaxUint256Test:testOpMaxUint256Integrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19658, ~: 19865) +LibOpMaxUint256Test:testOpMaxUint256Integrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19657, ~: 19890) LibOpMaxUint256Test:testOpMaxUint256Run() (gas: 15997) LibOpMaxUint256Test:testOpMaxUint256TwoOutputs() (gas: 31949) LibOpMaxUint256Test:testOpMaxUint256ZeroOutputs() (gas: 30854) LibOpMinNegativeValueTest:testOpMinNegativeValueEval() (gas: 47443) LibOpMinNegativeValueTest:testOpMinNegativeValueEvalFail() (gas: 35246) -LibOpMinNegativeValueTest:testOpMinNegativeValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19670, ~: 19911) +LibOpMinNegativeValueTest:testOpMinNegativeValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19678, ~: 19926) LibOpMinNegativeValueTest:testOpMinNegativeValueRun() (gas: 16218) LibOpMinNegativeValueTest:testOpMinNegativeValueTwoOutputs() (gas: 32008) LibOpMinNegativeValueTest:testOpMinNegativeValueZeroOutputs() (gas: 30978) LibOpMinPositiveValueTest:testOpMinPositiveValueEval() (gas: 47423) LibOpMinPositiveValueTest:testOpMinPositiveValueEvalFail() (gas: 35203) -LibOpMinPositiveValueTest:testOpMinPositiveValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19643, ~: 19851) +LibOpMinPositiveValueTest:testOpMinPositiveValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19654, ~: 19884) LibOpMinPositiveValueTest:testOpMinPositiveValueRun() (gas: 16240) LibOpMinPositiveValueTest:testOpMinPositiveValueTwoOutputs() (gas: 32007) LibOpMinPositiveValueTest:testOpMinPositiveValueZeroOutputs() (gas: 30977) -LibOpMinTest:testOpMinEval2InputsHappy() (gas: 993144) -LibOpMinTest:testOpMinEval3InputsHappy() (gas: 3549406) +LibOpMinTest:testOpMinEval2InputsHappy() (gas: 993396) +LibOpMinTest:testOpMinEval3InputsHappy() (gas: 3549490) LibOpMinTest:testOpMinEvalOneInput() (gas: 129857) LibOpMinTest:testOpMinEvalOperandDisallowed() (gas: 61780) LibOpMinTest:testOpMinEvalZeroInputs() (gas: 30881) -LibOpMinTest:testOpMinIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18285, ~: 18482) +LibOpMinTest:testOpMinIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18280, ~: 18477) LibOpMinTest:testOpMinIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13849, ~: 13710) LibOpMinTest:testOpMinIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13826, ~: 13687) -LibOpMinTest:testOpMinRun(bytes32[],uint16) (runs: 2062, μ: 26541, ~: 26631) +LibOpMinTest:testOpMinRun(bytes32[],uint16) (runs: 2062, μ: 26555, ~: 26583) LibOpMulTest:testOpDecimal18MulNPIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13827, ~: 13688) LibOpMulTest:testOpMulEvalOneInput() (gas: 127195) LibOpMulTest:testOpMulEvalOperandsDisallowed() (gas: 91763) -LibOpMulTest:testOpMulEvalThreeInputsHappy() (gas: 745616) -LibOpMulTest:testOpMulEvalThreeInputsUnhappyOverflow() (gas: 61758) -LibOpMulTest:testOpMulEvalTwoInputsHappy() (gas: 524421) -LibOpMulTest:testOpMulEvalTwoInputsUnhappyOverflow() (gas: 55153) +LibOpMulTest:testOpMulEvalThreeInputsHappy() (gas: 770621) +LibOpMulTest:testOpMulEvalThreeInputsUnhappyOverflow() (gas: 63910) +LibOpMulTest:testOpMulEvalTwoInputsHappy() (gas: 535392) +LibOpMulTest:testOpMulEvalTwoInputsUnhappyOverflow() (gas: 56229) LibOpMulTest:testOpMulEvalZeroInputs() (gas: 30270) -LibOpMulTest:testOpMulIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18244, ~: 18443) +LibOpMulTest:testOpMulIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18243, ~: 18415) LibOpMulTest:testOpMulIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13870, ~: 13731) -LibOpMulTest:testOpMulRun(bytes32[]) (runs: 2062, μ: 29115, ~: 26565) +LibOpMulTest:testOpMulRun(bytes32[]) (runs: 2062, μ: 36311, ~: 30886) LibOpMulTest:testOpMulTwoOutputs() (gas: 40809) LibOpMulTest:testOpMulZeroOutputs() (gas: 39763) -LibOpPowTest:testOpPowEval() (gas: 542874) +LibOpPowTest:testOpPowEval() (gas: 546299) LibOpPowTest:testOpPowEvalOneInput() (gas: 35395) LibOpPowTest:testOpPowEvalOperandDisallowed() (gas: 17802) LibOpPowTest:testOpPowIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13771, ~: 13680) -LibOpPowTest:testOpPowNegativeBaseError() (gas: 101016) -LibOpPowTest:testOpPowRun(int224,int32,int224,int32) (runs: 2072, μ: 71599, ~: 76775) +LibOpPowTest:testOpPowNegativeBaseError() (gas: 100358) +LibOpPowTest:testOpPowRun(int224,int32,int224,int32) (runs: 2072, μ: 76573, ~: 82729) LibOpPowTest:testOpPowThreeInputs() (gas: 45121) LibOpPowTest:testOpPowTwoOutputs() (gas: 40925) LibOpPowTest:testOpPowZeroOutputs() (gas: 39920) @@ -559,57 +559,57 @@ LibOpSetTest:testLibOpSetEvalThreeInputs() (gas: 44682) LibOpSetTest:testLibOpSetEvalTwoInputs() (gas: 258858) LibOpSetTest:testLibOpSetEvalTwoOutputs() (gas: 40508) LibOpSetTest:testLibOpSetEvalZeroInputs() (gas: 29429) -LibOpSetTest:testLibOpSetIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 20439, ~: 20640) +LibOpSetTest:testLibOpSetIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 20442, ~: 20677) LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPEval() (gas: 880310) LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailBadShiftAmount() (gas: 128328) LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailTwoInputs() (gas: 44504) LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailTwoOutputs() (gas: 40388) LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailZeroInputs() (gas: 34663) LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailZeroOutputs() (gas: 39313) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8) (runs: 2068, μ: 19767, ~: 19723) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8) (runs: 2069, μ: 19779, ~: 19690) LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityNoop((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2072, μ: 35796, ~: 35518) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityZero((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 41982, ~: 42587) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityZero((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 41981, ~: 42483) LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPRun(bytes32,uint8) (runs: 2070, μ: 16833, ~: 16833) LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPEval() (gas: 1055517) LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityFailBadShiftAmount() (gas: 128916) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8) (runs: 120, μ: 19643, ~: 19218) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8) (runs: 121, μ: 19669, ~: 19283) LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityNoop((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 124, μ: 36801, ~: 36899) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityZero((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 124, μ: 40584, ~: 40926) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPRun(bytes32,uint8) (runs: 2070, μ: 16836, ~: 16836) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityZero((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 124, μ: 40588, ~: 40926) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPRun(bytes32,uint8) (runs: 2069, μ: 16836, ~: 16836) LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoInputs() (gas: 44628) LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoOutputs() (gas: 40448) LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroInputs() (gas: 34722) LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroOutputs() (gas: 39397) -LibOpSqrtTest:testOpSqrtEval() (gas: 237915) LibOpSqrtTest:testOpSqrtEvalBad() (gas: 65456) +LibOpSqrtTest:testOpSqrtEvalExamples() (gas: 244645) LibOpSqrtTest:testOpSqrtEvalOperandDisallowed() (gas: 17657) LibOpSqrtTest:testOpSqrtEvalTwoOutputs() (gas: 35965) LibOpSqrtTest:testOpSqrtEvalZeroOutputs() (gas: 34911) LibOpSqrtTest:testOpSqrtIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13750, ~: 13659) -LibOpSqrtTest:testOpSqrtRun(bytes32) (runs: 2072, μ: 55620, ~: 59870) +LibOpSqrtTest:testOpSqrtRun(bytes32) (runs: 2072, μ: 61937, ~: 63138) LibOpStackNPTest:testOpStackEval() (gas: 66061) LibOpStackNPTest:testOpStackEvalSeveral() (gas: 90593) -LibOpStackNPTest:testOpStackNPIntegrity(bytes,uint256,bytes32[],bytes32) (runs: 2072, μ: 18883, ~: 18656) -LibOpStackNPTest:testOpStackNPIntegrityOOBStack(bytes,uint16,bytes32[],uint16,uint256) (runs: 2072, μ: 41421, ~: 41563) +LibOpStackNPTest:testOpStackNPIntegrity(bytes,uint256,bytes32[],bytes32) (runs: 2072, μ: 18895, ~: 18656) +LibOpStackNPTest:testOpStackNPIntegrityOOBStack(bytes,uint16,bytes32[],uint16,uint256) (runs: 2072, μ: 41417, ~: 41563) LibOpStackNPTest:testOpStackNPMultipleOutputErrorSugared() (gas: 40066) LibOpStackNPTest:testOpStackNPMultipleOutputErrorUnsugared() (gas: 43052) -LibOpStackNPTest:testOpStackNPRun(bytes32[][],uint256) (runs: 124, μ: 1893999, ~: 1578881) +LibOpStackNPTest:testOpStackNPRun(bytes32[][],uint256) (runs: 124, μ: 1893987, ~: 1578881) LibOpStackNPTest:testOpStackNPZeroOutputErrorSugared() (gas: 38611) LibOpStackNPTest:testOpStackNPZeroOutputErrorUnsugared() (gas: 41562) LibOpSubTest:testOpSubEvalOneInput() (gas: 129986) -LibOpSubTest:testOpSubEvalThreeInputs() (gas: 226875) -LibOpSubTest:testOpSubEvalTwoInputs() (gas: 439789) +LibOpSubTest:testOpSubEvalThreeInputs() (gas: 227631) +LibOpSubTest:testOpSubEvalTwoInputs() (gas: 441227) LibOpSubTest:testOpSubEvalZeroInputs() (gas: 30230) -LibOpSubTest:testOpSubIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18229, ~: 18384) +LibOpSubTest:testOpSubIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18229, ~: 18457) LibOpSubTest:testOpSubIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13870, ~: 13731) LibOpSubTest:testOpSubIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13870, ~: 13731) -LibOpSubTest:testOpSubRun(bytes32[]) (runs: 2062, μ: 88104, ~: 86769) +LibOpSubTest:testOpSubRun(bytes32[]) (runs: 2062, μ: 90368, ~: 90932) LibOpTimestampTest:testOpBlockTimestampNPEvalFail() (gas: 66603) LibOpTimestampTest:testOpBlockTimestampNPTwoOutputs() (gas: 59520) LibOpTimestampTest:testOpBlockTimestampNPZeroOutputs() (gas: 57395) LibOpTimestampTest:testOpTimestampEval(uint256) (runs: 2072, μ: 85802, ~: 85481) -LibOpTimestampTest:testOpTimestampIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19666, ~: 19898) -LibOpTimestampTest:testOpTimestampRun(uint256) (runs: 2072, μ: 20590, ~: 20364) +LibOpTimestampTest:testOpTimestampIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19673, ~: 19901) +LibOpTimestampTest:testOpTimestampRun(uint256) (runs: 2072, μ: 20589, ~: 20364) LibOpUint256AddTest:testOpUint256AddEvalOneInput() (gas: 128499) LibOpUint256AddTest:testOpUint256AddEvalOperandsDisallowed() (gas: 95651) LibOpUint256AddTest:testOpUint256AddEvalThreeInputsHappy() (gas: 209980) @@ -618,20 +618,20 @@ LibOpUint256AddTest:testOpUint256AddEvalTwoInputsHappy() (gas: 280530) LibOpUint256AddTest:testOpUint256AddEvalTwoOutputs() (gas: 41479) LibOpUint256AddTest:testOpUint256AddEvalZeroInputs() (gas: 30896) LibOpUint256AddTest:testOpUint256AddEvalZeroOutputs() (gas: 40410) -LibOpUint256AddTest:testOpUint256AddIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18246, ~: 18445) +LibOpUint256AddTest:testOpUint256AddIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18248, ~: 18418) LibOpUint256AddTest:testOpUint256AddIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13828, ~: 13689) LibOpUint256AddTest:testOpUint256AddIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13826, ~: 13687) -LibOpUint256AddTest:testOpUint256AddRun(bytes32[]) (runs: 2062, μ: 19999, ~: 19501) +LibOpUint256AddTest:testOpUint256AddRun(bytes32[]) (runs: 2062, μ: 20021, ~: 19486) LibOpUint256DivTest:testOpUint256DivEval2InputsHappy() (gas: 771964) -LibOpUint256DivTest:testOpUint256DivEval2InputsUnhappy() (gas: 143753) +LibOpUint256DivTest:testOpUint256DivEval2InputsUnhappy() (gas: 143708) LibOpUint256DivTest:testOpUint256DivEval3InputsHappy() (gas: 1408728) -LibOpUint256DivTest:testOpUint256DivEval3InputsUnhappy() (gas: 483170) +LibOpUint256DivTest:testOpUint256DivEval3InputsUnhappy() (gas: 483035) LibOpUint256DivTest:testOpUint256DivEvalOneInput() (gas: 134075) LibOpUint256DivTest:testOpUint256DivEvalOperandDisallowed() (gas: 61632) LibOpUint256DivTest:testOpUint256DivEvalTwoOutputs() (gas: 41480) LibOpUint256DivTest:testOpUint256DivEvalZeroInputs() (gas: 30897) LibOpUint256DivTest:testOpUint256DivEvalZeroOutputs() (gas: 40388) -LibOpUint256DivTest:testOpUint256DivIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18266, ~: 18400) +LibOpUint256DivTest:testOpUint256DivIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18268, ~: 18467) LibOpUint256DivTest:testOpUint256DivIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13848, ~: 13709) LibOpUint256DivTest:testOpUint256DivIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13828, ~: 13689) LibOpUint256DivTest:testOpUint256DivRun(bytes32[]) (runs: 2062, μ: 24856, ~: 25168) @@ -644,7 +644,7 @@ LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalTwoOutputs() (gas: 51371) LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalZeroInputs() (gas: 31791) LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalZeroOutputs() (gas: 50347) LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13774, ~: 13683) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceRun(address,address,address,uint256) (runs: 2072, μ: 24718, ~: 24718) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceRun(address,address,address,uint256) (runs: 2071, μ: 24718, ~: 24718) LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalHappy(uint256) (runs: 2072, μ: 63409, ~: 63409) LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalOneInput() (gas: 38037) LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalOperandDisallowed() (gas: 19355) @@ -661,15 +661,15 @@ LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoOutputs() (gas: 38 LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroInputs() (gas: 32077) LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroOutputs() (gas: 37860) LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13797, ~: 13706) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyRun(address,uint256,uint16) (runs: 2071, μ: 23332, ~: 23332) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfEvalHappy(address,address,uint256) (runs: 2070, μ: 104756, ~: 104926) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19679, ~: 19917) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyRun(address,uint256,uint16) (runs: 2072, μ: 23332, ~: 23332) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfEvalHappy(address,address,uint256) (runs: 2071, μ: 104752, ~: 104926) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19677, ~: 19936) LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail0() (gas: 31516) LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail1() (gas: 35900) LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail3() (gas: 45241) LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFailOperand() (gas: 22229) LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfOneInput() (gas: 36430) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfRun(address,address,uint256,uint16) (runs: 2070, μ: 24211, ~: 24211) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfRun(address,address,uint256,uint16) (runs: 2071, μ: 24211, ~: 24211) LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfThreeInputs() (gas: 45761) LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfTwoOutputs() (gas: 41756) LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfZeroInputs() (gas: 31950) @@ -683,11 +683,11 @@ LibOpUint256MulTest:testOpUint256MulEvalTwoInputsUnhappy() (gas: 143885) LibOpUint256MulTest:testOpUint256MulEvalTwoOutputs() (gas: 41424) LibOpUint256MulTest:testOpUint256MulEvalZeroInputs() (gas: 30950) LibOpUint256MulTest:testOpUint256MulEvalZeroOutputs() (gas: 40423) -LibOpUint256MulTest:testOpUint256MulIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18201, ~: 18359) +LibOpUint256MulTest:testOpUint256MulIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18201, ~: 18366) LibOpUint256MulTest:testOpUint256MulIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13870, ~: 13731) LibOpUint256MulTest:testOpUint256MulIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13827, ~: 13688) -LibOpUint256MulTest:testOpUint256MulRun(bytes32[]) (runs: 2062, μ: 18865, ~: 19078) -LibOpUint256PowTest:testOpUint256ExpIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18222, ~: 18417) +LibOpUint256MulTest:testOpUint256MulRun(bytes32[]) (runs: 2062, μ: 18912, ~: 19078) +LibOpUint256PowTest:testOpUint256ExpIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18223, ~: 18422) LibOpUint256PowTest:testOpUint256PowEval2InputsHappy() (gas: 872948) LibOpUint256PowTest:testOpUint256PowEval2InputsUnhappy() (gas: 145865) LibOpUint256PowTest:testOpUint256PowEval3InputsHappy() (gas: 1981551) @@ -699,7 +699,7 @@ LibOpUint256PowTest:testOpUint256PowEvalZeroInputs() (gas: 31089) LibOpUint256PowTest:testOpUint256PowEvalZeroOutputs() (gas: 40541) LibOpUint256PowTest:testOpUint256PowIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13850, ~: 13711) LibOpUint256PowTest:testOpUint256PowIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13827, ~: 13688) -LibOpUint256PowTest:testOpUint256PowRun(bytes32[]) (runs: 2062, μ: 19402, ~: 19304) +LibOpUint256PowTest:testOpUint256PowRun(bytes32[]) (runs: 2062, μ: 19377, ~: 19304) LibOpUint256SubTest:testOpUint256SubEvalOneInput() (gas: 128586) LibOpUint256SubTest:testOpUint256SubEvalOperandsDisallowed() (gas: 95653) LibOpUint256SubTest:testOpUint256SubEvalThreeInputsHappy() (gas: 209855) @@ -708,10 +708,10 @@ LibOpUint256SubTest:testOpUint256SubEvalTwoInputsHappy() (gas: 280528) LibOpUint256SubTest:testOpUint256SubEvalTwoOutputs() (gas: 41468) LibOpUint256SubTest:testOpUint256SubEvalZeroInputs() (gas: 30907) LibOpUint256SubTest:testOpUint256SubEvalZeroOutputs() (gas: 40400) -LibOpUint256SubTest:testOpUint256SubIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18246, ~: 18443) +LibOpUint256SubTest:testOpUint256SubIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18242, ~: 18443) LibOpUint256SubTest:testOpUint256SubIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13871, ~: 13732) LibOpUint256SubTest:testOpUint256SubIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13827, ~: 13688) -LibOpUint256SubTest:testOpUint256SubRun(bytes32[]) (runs: 2062, μ: 17659, ~: 17687) +LibOpUint256SubTest:testOpUint256SubRun(bytes32[]) (runs: 2062, μ: 17652, ~: 17687) LibParseCommentsTest:testParseCommentAfterSources() (gas: 69689) LibParseCommentsTest:testParseCommentBetweenSources() (gas: 69745) LibParseCommentsTest:testParseCommentInIgnoredLHS() (gas: 46231) @@ -778,11 +778,11 @@ LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatExponent LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert4() (gas: 11172) LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert5() (gas: 11216) LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert6() (gas: 11217) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatNegativeE() (gas: 13091) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatNegativeE() (gas: 13133) LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatNegativeFrac() (gas: 12138) LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatNonDecimal() (gas: 11150) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert0() (gas: 35135) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert1() (gas: 35045) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert0() (gas: 35155) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert1() (gas: 35042) LibParseLiteralHexBoundHexTest:testParseLiteralHexRoundTrip(bytes32) (runs: 2072, μ: 27232, ~: 37882) LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimal00() (gas: 56730) LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimal01() (gas: 63896) @@ -803,15 +803,15 @@ LibParseLiteralIntegerHexTest:testParseIntegerLiteralHex01() (gas: 61572) LibParseLiteralIntegerHexTest:testParseIntegerLiteralHex02() (gas: 66623) LibParseLiteralIntegerHexTest:testParseIntegerLiteralHexUint256Max() (gas: 72869) LibParseLiteralStringBoundTest:testParseStringLiteralBounds(string) (runs: 2070, μ: 16461, ~: 16389) -LibParseLiteralStringBoundTest:testParseStringLiteralBoundsInvalidCharBefore(string,uint256) (runs: 2068, μ: 30060, ~: 29941) -LibParseLiteralStringBoundTest:testParseStringLiteralBoundsParserOutOfBounds(string,uint256) (runs: 2070, μ: 18991, ~: 18908) +LibParseLiteralStringBoundTest:testParseStringLiteralBoundsInvalidCharBefore(string,uint256) (runs: 2068, μ: 30080, ~: 29868) +LibParseLiteralStringBoundTest:testParseStringLiteralBoundsParserOutOfBounds(string,uint256) (runs: 2070, μ: 18991, ~: 18892) LibParseLiteralStringBoundTest:testParseStringLiteralBoundsTooLong(string) (runs: 2050, μ: 31904, ~: 31390) LibParseLiteralStringTest:testParseStringLiteralAny(bytes) (runs: 2052, μ: 13479, ~: 13384) LibParseLiteralStringTest:testParseStringLiteralCorrupt(bytes,uint256) (runs: 2052, μ: 24339, ~: 24261) LibParseLiteralStringTest:testParseStringLiteralEmpty() (gas: 54552) LibParseLiteralStringTest:testParseStringLiteralEmpty() (gas: 5643) LibParseLiteralStringTest:testParseStringLiteralInvalidCharAfter(string,string) (runs: 102, μ: 68749, ~: 68569) -LibParseLiteralStringTest:testParseStringLiteralInvalidCharWithin(string,uint256) (runs: 120, μ: 64980, ~: 64385) +LibParseLiteralStringTest:testParseStringLiteralInvalidCharWithin(string,uint256) (runs: 120, μ: 64924, ~: 64385) LibParseLiteralStringTest:testParseStringLiteralLongASCII(string) (runs: 102, μ: 69472, ~: 69704) LibParseLiteralStringTest:testParseStringLiteralShortASCII(string) (runs: 122, μ: 61182, ~: 61062) LibParseLiteralStringTest:testParseStringLiteralSimple() (gas: 54654) @@ -925,12 +925,12 @@ LibParseOperandM1M1Test:testOperandM1M1SecondZero() (gas: 57377) LibParseOperandM1M1Test:testOperandM1M1Unclosed() (gas: 251386) LibParseOperandM1M1Test:testOperandM1M1Unopened() (gas: 49346) LibParseOperandParseOperandTest:testParseOperandEmptyOperand(string) (runs: 112, μ: 42975, ~: 42972) -LibParseOperandParseOperandTest:testParseOperandFourDecimalLiterals(bool[4],int256[4],string[5],string) (runs: 122, μ: 357095, ~: 354234) +LibParseOperandParseOperandTest:testParseOperandFourDecimalLiterals(bool[4],int256[4],string[5],string) (runs: 122, μ: 370896, ~: 368491) LibParseOperandParseOperandTest:testParseOperandNoOpeningCharacter(string) (runs: 119, μ: 42852, ~: 42849) -LibParseOperandParseOperandTest:testParseOperandSingleDecimalLiteral(bool,int256,string,string,string) (runs: 124, μ: 156504, ~: 155646) -LibParseOperandParseOperandTest:testParseOperandThreeDecimalLiterals(bool,bool,bool,int256,int256,int256,string,string,string,string,string) (runs: 124, μ: 276103, ~: 269780) +LibParseOperandParseOperandTest:testParseOperandSingleDecimalLiteral(bool,int256,string,string,string) (runs: 124, μ: 160633, ~: 159527) +LibParseOperandParseOperandTest:testParseOperandThreeDecimalLiterals(bool,bool,bool,int256,int256,int256,string,string,string,string,string) (runs: 124, μ: 287705, ~: 281310) LibParseOperandParseOperandTest:testParseOperandTooManyValues() (gas: 54582) -LibParseOperandParseOperandTest:testParseOperandTwoDecimalLiterals(bool,bool,int256,int256,string,string,string,string) (runs: 123, μ: 213934, ~: 215134) +LibParseOperandParseOperandTest:testParseOperandTwoDecimalLiterals(bool,bool,int256,int256,string,string,string,string) (runs: 123, μ: 222546, ~: 219623) LibParseOperandParseOperandTest:testParseOperandUnclosed() (gas: 54141) LibParseOperandParseOperandTest:testParseOperandUnexpectedChars() (gas: 51419) LibParseOperandSingleFullTest:testOperandSingleFullElided() (gas: 51178) @@ -955,10 +955,10 @@ LibParseParseWordTest:testLibParseParseWordReferenceImplementation(bytes,uint256 LibParseParseWordTest:testLibParseParseWordTooLong(bytes) (runs: 2068, μ: 9726, ~: 9660) LibParsePragmaKeywordTest:testPragmaKeywordNoWhitespace(uint256,string) (runs: 124, μ: 8978, ~: 8974) LibParsePragmaKeywordTest:testPragmaKeywordNoop((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),string) (runs: 124, μ: 15867, ~: 15900) -LibParsePragmaKeywordTest:testPragmaKeywordParseSubParserBasic(string,address,uint256,string) (runs: 120, μ: 163249, ~: 151182) -LibParsePragmaKeywordTest:testPragmaKeywordParseSubParserCoupleOfAddresses(string,string,address,address,uint256,string) (runs: 120, μ: 345779, ~: 360562) +LibParsePragmaKeywordTest:testPragmaKeywordParseSubParserBasic(string,address,uint256,string) (runs: 120, μ: 163264, ~: 151182) +LibParsePragmaKeywordTest:testPragmaKeywordParseSubParserCoupleOfAddresses(string,string,address,address,uint256,string) (runs: 120, μ: 345752, ~: 360744) LibParsePragmaKeywordTest:testPragmaKeywordParseSubParserSpecificStrings() (gas: 254483) -LibParsePragmaKeywordTest:testPragmaKeywordWhitespaceNoHex(uint256,string) (runs: 124, μ: 19738, ~: 17335) +LibParsePragmaKeywordTest:testPragmaKeywordWhitespaceNoHex(uint256,string) (runs: 124, μ: 19851, ~: 17922) LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored00() (gas: 8389) LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored01() (gas: 8451) LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored02() (gas: 8537) @@ -1070,39 +1070,39 @@ LibParseUnexpectedRightParenTest:testParseUnexpectedRightParen() (gas: 50722) LibParseUnexpectedRightParenTest:testParseUnexpectedRightParenNested() (gas: 56990) LibSubParseSubParserExternTest:testLibSubParseSubParserExtern(address,uint8,uint8,uint8,uint16,uint8) (runs: 2072, μ: 13233, ~: 13163) LibSubParseSubParserExternTest:testLibSubParseSubParserExternConstantsHeightOverflow(address,uint256,uint8,uint8,uint16,uint8) (runs: 2072, μ: 11435, ~: 11167) -RainterpreterExpressionDeployerDeployCheckTest:testRainterpreterExpressionDeployerDeployNoEIP1820() (gas: 8880742) -RainterpreterExpressionDeployerDescribedByMetaV1Test:testRainterpreterExpressionDeployerDescribedByMetaV1Happy() (gas: 8893971) -RainterpreterExpressionDeployerIERC165Test:testRainterpreterExpressionDeployerIERC165(bytes4) (runs: 2072, μ: 8888183, ~: 8888183) +RainterpreterExpressionDeployerDeployCheckTest:testRainterpreterExpressionDeployerDeployNoEIP1820() (gas: 8932858) +RainterpreterExpressionDeployerDescribedByMetaV1Test:testRainterpreterExpressionDeployerDescribedByMetaV1Happy() (gas: 8946092) +RainterpreterExpressionDeployerIERC165Test:testRainterpreterExpressionDeployerIERC165(bytes4) (runs: 2072, μ: 8940299, ~: 8940299) RainterpreterExpressionDeployerMetaTest:testRainterpreterExpressionDeployerExpectedConstructionMetaHash() (gas: 6221) -RainterpreterIERC165Test:testRainterpreterIERC165(bytes4) (runs: 2072, μ: 3638547, ~: 3638547) -RainterpreterParserIERC165Test:testRainterpreterParserIERC165(bytes4) (runs: 2072, μ: 3550211, ~: 3550211) -RainterpreterParserParserPragma:testParsePragmaNoPragma() (gas: 17733422) -RainterpreterParserParserPragma:testParsePragmaSinglePragma() (gas: 10691795) -RainterpreterParserParserPragma:testParsePragmaWithInterstitial() (gas: 10695087) -RainterpreterParserPointersTest:testLiteralParserFunctionPointers() (gas: 3549217) -RainterpreterParserPointersTest:testOperandHandlerFunctionPointers() (gas: 3558078) +RainterpreterIERC165Test:testRainterpreterIERC165(bytes4) (runs: 2072, μ: 3687663, ~: 3687663) +RainterpreterParserIERC165Test:testRainterpreterParserIERC165(bytes4) (runs: 2072, μ: 3553211, ~: 3553211) +RainterpreterParserParserPragma:testParsePragmaNoPragma() (gas: 17748422) +RainterpreterParserParserPragma:testParsePragmaSinglePragma() (gas: 10700795) +RainterpreterParserParserPragma:testParsePragmaWithInterstitial() (gas: 10704087) +RainterpreterParserPointersTest:testLiteralParserFunctionPointers() (gas: 3552217) +RainterpreterParserPointersTest:testOperandHandlerFunctionPointers() (gas: 3561078) RainterpreterParserPointersTest:testParserParseMeta() (gas: 5266891) -RainterpreterPointersTest:testOpcodeFunctionPointers() (gas: 3646409) -RainterpreterReferenceExternContextRainlenTest:testRainterpreterReferenceExterNPE2ContextRainlenHappy() (gas: 2143967) -RainterpreterReferenceExternContextSenderTest:testRainterpreterReferenceExterNPE2ContextContractHappy() (gas: 2143552) -RainterpreterReferenceExternContextSenderTest:testRainterpreterReferenceExterNPE2ContextSenderHappy() (gas: 2142248) -RainterpreterReferenceExternDescribedByMetaV1:testRainterpreterReferenceExternDescribedByMetaV1Happy() (gas: 2064812) -RainterpreterReferenceExternIERC165Test:testRainterpreterReferenceExternIERC165(bytes4) (runs: 2072, μ: 2077070, ~: 2077070) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncHappySugared() (gas: 2168652) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncHappyUnsugared() (gas: 2162215) +RainterpreterPointersTest:testOpcodeFunctionPointers() (gas: 3695525) +RainterpreterReferenceExternContextRainlenTest:testRainterpreterReferenceExterNPE2ContextRainlenHappy() (gas: 2137753) +RainterpreterReferenceExternContextSenderTest:testRainterpreterReferenceExterNPE2ContextContractHappy() (gas: 2137338) +RainterpreterReferenceExternContextSenderTest:testRainterpreterReferenceExterNPE2ContextSenderHappy() (gas: 2136034) +RainterpreterReferenceExternDescribedByMetaV1:testRainterpreterReferenceExternDescribedByMetaV1Happy() (gas: 2058598) +RainterpreterReferenceExternIERC165Test:testRainterpreterReferenceExternIERC165(bytes4) (runs: 2072, μ: 2070856, ~: 2070856) +RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncHappySugared() (gas: 2162908) +RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncHappyUnsugared() (gas: 2156471) RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncIntegrity(bytes32,uint256,uint256) (runs: 124, μ: 3597, ~: 3597) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncRun(bytes32,bytes32[]) (runs: 124, μ: 886282, ~: 902025) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncSubParseKnownWord(uint16,bytes1) (runs: 124, μ: 2078708, ~: 2078931) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncSubParseUnknownWord(uint16,bytes1,bytes) (runs: 100, μ: 2075034, ~: 2074833) -RainterpreterReferenceExternPointersTest:testIntegrityFunctionPointers() (gas: 2064907) -RainterpreterReferenceExternPointersTest:testOpcodeFunctionPointers() (gas: 2064950) -RainterpreterReferenceExternPointersTest:testSubParserFunctionPointers() (gas: 2065373) -RainterpreterReferenceExternPointersTest:testSubParserLiteralParsers() (gas: 2064927) -RainterpreterReferenceExternPointersTest:testSubParserOperandParsers() (gas: 2065400) +RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncRun(bytes32,bytes32[]) (runs: 124, μ: 940951, ~: 958022) +RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncSubParseKnownWord(uint16,bytes1) (runs: 124, μ: 2072512, ~: 2072717) +RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncSubParseUnknownWord(uint16,bytes1,bytes) (runs: 100, μ: 2068820, ~: 2068619) +RainterpreterReferenceExternPointersTest:testIntegrityFunctionPointers() (gas: 2058693) +RainterpreterReferenceExternPointersTest:testOpcodeFunctionPointers() (gas: 2058736) +RainterpreterReferenceExternPointersTest:testSubParserFunctionPointers() (gas: 2059159) +RainterpreterReferenceExternPointersTest:testSubParserLiteralParsers() (gas: 2058713) +RainterpreterReferenceExternPointersTest:testSubParserOperandParsers() (gas: 2059186) RainterpreterReferenceExternPointersTest:testSubParserParseMeta() (gas: 22017) -RainterpreterReferenceExternRepeatTest:testRainterpreterReferenceExternRepeatHappy() (gas: 2196267) -RainterpreterReferenceExternStackOperandTest:testRainterpreterReferenceExternStackOperandSingle(uint256) (runs: 2072, μ: 2151412, ~: 2151499) -RainterpreterReferenceExternUnknownWordTest:testRainterpreterReferenceExternUnknownWord() (gas: 2112574) +RainterpreterReferenceExternRepeatTest:testRainterpreterReferenceExternRepeatHappy() (gas: 2190053) +RainterpreterReferenceExternStackOperandTest:testRainterpreterReferenceExternStackOperandSingle(uint256) (runs: 2072, μ: 2145203, ~: 2145285) +RainterpreterReferenceExternUnknownWordTest:testRainterpreterReferenceExternUnknownWord() (gas: 2106360) RainterpreterStateOverlayTest:testStateOverlayGet() (gas: 52423) RainterpreterStateOverlayTest:testStateOverlaySet() (gas: 83162) RainterpreterStoreIERC165Test:testRainterpreterStoreIERC165(bytes4) (runs: 2072, μ: 229923, ~: 229923) diff --git a/lib/rain.interpreter.interface b/lib/rain.interpreter.interface index 78a0e5226..f345291ae 160000 --- a/lib/rain.interpreter.interface +++ b/lib/rain.interpreter.interface @@ -1 +1 @@ -Subproject commit 78a0e5226f78d69fcb0848e57a255b56fdaaf6f2 +Subproject commit f345291aecb9e91fbf17b2d3e14a7780915e2645 diff --git a/src/generated/Rainterpreter.pointers.sol b/src/generated/Rainterpreter.pointers.sol index 38a5a3561..420b60d59 100644 --- a/src/generated/Rainterpreter.pointers.sol +++ b/src/generated/Rainterpreter.pointers.sol @@ -10,7 +10,7 @@ pragma solidity =0.8.25; /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0x12101f163b9f03997261cb8dbba0d24350308e2583d2456ffecf3761813ca62a); +bytes32 constant BYTECODE_HASH = bytes32(0xdd79e1c7cbdede5eab86e9ebc7f0753e183f110d6b88bce72daf19beef42d9cf); /// @dev The function pointers known to the interpreter for dynamic dispatch. /// By setting these as a constant they can be inlined into the interpreter diff --git a/src/generated/RainterpreterParser.pointers.sol b/src/generated/RainterpreterParser.pointers.sol index 98fa3840f..c9c1a2108 100644 --- a/src/generated/RainterpreterParser.pointers.sol +++ b/src/generated/RainterpreterParser.pointers.sol @@ -10,7 +10,7 @@ pragma solidity =0.8.25; /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0x994bd986f9fbac0f25488fe3a5ea2c7d039d0f9465e2db37c9321a046a74ed8f); +bytes32 constant BYTECODE_HASH = bytes32(0xfd32658ad9d8f388f2a1d28c608df58461cf38dafbd22f029594a5d069d1295c); /// @dev The parse meta that is used to lookup word definitions. /// The structure of the parse meta is: diff --git a/src/generated/RainterpreterReferenceExtern.pointers.sol b/src/generated/RainterpreterReferenceExtern.pointers.sol index 1a8028bdf..169b98540 100644 --- a/src/generated/RainterpreterReferenceExtern.pointers.sol +++ b/src/generated/RainterpreterReferenceExtern.pointers.sol @@ -10,7 +10,7 @@ pragma solidity =0.8.25; /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0x921c56ace3b8670c36bba13dc2e7ae2b002283ebbb87947f147780114604ba73); +bytes32 constant BYTECODE_HASH = bytes32(0xb1f8988baacdb0efa30560d8b2bf6b5fd83d5f68c91fc1adad86ca2d153e5919); /// @dev The hash of the meta that describes the contract. bytes32 constant DESCRIBED_BY_META_HASH = bytes32(0xadf71693c6ecf3fd560904bc46973d1b6e651440d15366673f9b3984749e7c16); diff --git a/test/src/lib/op/math/LibOpAdd.t.sol b/test/src/lib/op/math/LibOpAdd.t.sol index c602133b4..98e26924e 100644 --- a/test/src/lib/op/math/LibOpAdd.t.sol +++ b/test/src/lib/op/math/LibOpAdd.t.sol @@ -78,7 +78,7 @@ contract LibOpAddTest is OpTest { } /// Test the eval of `add` opcode parsed from a string. Tests two inputs. - function testOpAddEval2InputsHappy() external view { + function testOpAddEval2InputsHappyExamples() external view { checkHappy("_: add(5 6);", Float.unwrap(LibDecimalFloat.packLossless(11e66, -66)), "5 + 6"); checkHappy("_: add(6 5);", Float.unwrap(LibDecimalFloat.packLossless(11e66, -66)), "6 + 5"); @@ -89,8 +89,8 @@ contract LibOpAddTest is OpTest { checkHappy("_: add(6 -5);", Float.unwrap(LibDecimalFloat.packLossless(1e67, -67)), "6 + -5"); // Mixed-sign cancellation to zero should canonicalize to the zero encoding. - checkHappy("_: add(5 -5);", Float.unwrap(LibDecimalFloat.packLossless(0, -75)), "5 + -5"); - checkHappy("_: add(-5 5);", Float.unwrap(LibDecimalFloat.packLossless(0, -75)), "-5 + 5"); + checkHappy("_: add(5 -5);", Float.unwrap(LibDecimalFloat.packLossless(0, -76)), "5 + -5"); + checkHappy("_: add(-5 5);", Float.unwrap(LibDecimalFloat.packLossless(0, -76)), "-5 + 5"); } /// Test the eval of `add` opcode parsed from a string. Tests two inputs. @@ -131,7 +131,7 @@ contract LibOpAddTest is OpTest { checkHappy("_: add(7 6 5);", Float.unwrap(LibDecimalFloat.packLossless(18e65, -65)), "7 + 6 + 5"); checkHappy("_: add(5 7 6);", Float.unwrap(LibDecimalFloat.packLossless(18e65, -65)), "5 + 7 + 6"); checkHappy("_: add(7 5 6);", Float.unwrap(LibDecimalFloat.packLossless(18e65, -65)), "7 + 5 + 6"); - checkHappy("_: add(5 -6 1);", Float.unwrap(LibDecimalFloat.packLossless(0, -75)), "5 + -6 + 1"); + checkHappy("_: add(5 -6 1);", Float.unwrap(LibDecimalFloat.packLossless(0, -76)), "5 + -6 + 1"); } /// Test the eval of `add` opcode parsed from a string. Tests three inputs. diff --git a/test/src/lib/op/math/LibOpAvg.t.sol b/test/src/lib/op/math/LibOpAvg.t.sol index 710d74c86..17bc0e035 100644 --- a/test/src/lib/op/math/LibOpAvg.t.sol +++ b/test/src/lib/op/math/LibOpAvg.t.sol @@ -42,16 +42,16 @@ contract LibOpAvgTest is OpTest { } /// Test the eval of `avg`. - function testOpAvgEval() external view { - checkHappy("_: avg(0 0);", Float.unwrap(LibDecimalFloat.packLossless(0, -1)), "0 0"); - checkHappy("_: avg(0 1);", Float.unwrap(LibDecimalFloat.packLossless(5e37, -38)), "0 1"); - checkHappy("_: avg(1 0);", Float.unwrap(LibDecimalFloat.packLossless(5e37, -38)), "1 0"); - checkHappy("_: avg(1 1);", Float.unwrap(LibDecimalFloat.packLossless(1e38, -38)), "1 1"); - checkHappy("_: avg(1 2);", Float.unwrap(LibDecimalFloat.packLossless(15e37, -38)), "1 2"); - checkHappy("_: avg(2 2);", Float.unwrap(LibDecimalFloat.packLossless(2e38, -38)), "2 2"); - checkHappy("_: avg(2 3);", Float.unwrap(LibDecimalFloat.packLossless(25e37, -38)), "2 3"); - checkHappy("_: avg(2 4);", Float.unwrap(LibDecimalFloat.packLossless(3e38, -38)), "2 4"); - checkHappy("_: avg(4 0.5);", Float.unwrap(LibDecimalFloat.packLossless(225e36, -38)), "4 5"); + function testOpAvgEvalExamples() external view { + checkHappy("_: avg(0 0);", Float.unwrap(LibDecimalFloat.packLossless(0, 0)), "0 0"); + checkHappy("_: avg(0 1);", Float.unwrap(LibDecimalFloat.packLossless(5e66, -67)), "0 1"); + checkHappy("_: avg(1 0);", Float.unwrap(LibDecimalFloat.packLossless(5e66, -67)), "1 0"); + checkHappy("_: avg(1 1);", Float.unwrap(LibDecimalFloat.packLossless(1e67, -67)), "1 1"); + checkHappy("_: avg(1 2);", Float.unwrap(LibDecimalFloat.packLossless(1.5e66, -66)), "1 2"); + checkHappy("_: avg(2 2);", Float.unwrap(LibDecimalFloat.packLossless(2e66, -66)), "2 2"); + checkHappy("_: avg(2 3);", Float.unwrap(LibDecimalFloat.packLossless(2.5e66, -66)), "2 3"); + checkHappy("_: avg(2 4);", Float.unwrap(LibDecimalFloat.packLossless(3e66, -66)), "2 4"); + checkHappy("_: avg(4 0.5);", Float.unwrap(LibDecimalFloat.packLossless(2.25e66, -66)), "4 5"); } /// Test the eval of `avg` for bad inputs. diff --git a/test/src/lib/op/math/LibOpDiv.t.sol b/test/src/lib/op/math/LibOpDiv.t.sol index 3914a8d55..859d173c8 100644 --- a/test/src/lib/op/math/LibOpDiv.t.sol +++ b/test/src/lib/op/math/LibOpDiv.t.sol @@ -7,7 +7,10 @@ import {LibOpDiv} from "src/lib/op/math/LibOpDiv.sol"; import {LibOperand} from "test/lib/operand/LibOperand.sol"; import {StackItem} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol"; import {Float, LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {LibDecimalFloatImplementation} from "rain.math.float/lib/implementation/LibDecimalFloatImplementation.sol"; +import { + LibDecimalFloatImplementation, + MulDivOverflow +} from "rain.math.float/lib/implementation/LibDecimalFloatImplementation.sol"; contract LibOpDivTest is OpTest { using LibDecimalFloat for Float; @@ -112,30 +115,45 @@ contract LibOpDivTest is OpTest { /// Tests two inputs. /// Tests the happy path where we do not divide by zero or overflow. function testOpDivEvalTwoInputsHappy() external view { - checkHappy("_: div(0 1);", Float.unwrap(LibDecimalFloat.packLossless(0, -1)), "0 1"); - checkHappy("_: div(1 1);", Float.unwrap(LibDecimalFloat.packLossless(1e38, -38)), "1 1"); - checkHappy("_: div(1 2);", Float.unwrap(LibDecimalFloat.packLossless(5e37, -38)), "1 2"); - checkHappy("_: div(2 1);", Float.unwrap(LibDecimalFloat.packLossless(2e38, -38)), "2 1"); - checkHappy("_: div(2 2);", Float.unwrap(LibDecimalFloat.packLossless(1e38, -38)), "2 2"); - checkHappy("_: div(2 0.1);", Float.unwrap(LibDecimalFloat.packLossless(2e38, -37)), "2 0.1"); - // https://github.com/rainlanguage/rain.math.float/issues/71 - // checkHappy("_: div(max-positive-value() 1);", Float.unwrap(LibDecimalFloat.packLossless(1, 1)), "max-positive-value() 1"); + checkHappy("_: div(0 1);", Float.unwrap(LibDecimalFloat.packLossless(0, 0)), "0 1"); + checkHappy("_: div(1 1);", Float.unwrap(LibDecimalFloat.packLossless(1e67, -67)), "1 1"); + checkHappy("_: div(1 2);", Float.unwrap(LibDecimalFloat.packLossless(0.5e67, -67)), "1 2"); + checkHappy("_: div(2 1);", Float.unwrap(LibDecimalFloat.packLossless(2e66, -66)), "2 1"); + checkHappy("_: div(2 2);", Float.unwrap(LibDecimalFloat.packLossless(1e67, -67)), "2 2"); + checkHappy("_: div(2 0.1);", Float.unwrap(LibDecimalFloat.packLossless(20e65, -65)), "2 0.1"); + checkHappy( + "_: div(max-positive-value() 1);", + Float.unwrap(LibDecimalFloat.FLOAT_MAX_POSITIVE_VALUE), + "max-positive-value() 1" + ); } /// Test the eval of `div` opcode parsed from a string. /// Tests two inputs. /// Tests the unhappy path where we divide by zero. - function testOpDivEvalTwoInputsUnhappy() external { + function testOpDivEvalTwoInputsUnhappyDivZero() external { checkUnhappy("_: div(0 0);", stdError.divisionError); - checkUnhappy("_: div(1 0);", stdError.divisionError); - checkUnhappy("_: div(max-positive-value() 0);", stdError.divisionError); + checkUnhappy("_: div(1 0);", abi.encodeWithSelector(MulDivOverflow.selector, 1e76, 1e75, 0)); + checkUnhappy( + "_: div(max-positive-value() 0);", + abi.encodeWithSelector( + MulDivOverflow.selector, + 13479973333575319897333507543509815336818572211270286240551805124607000000000, + 1e75, + 0 + ) + ); } /// Test the eval of `div` opcode parsed from a string. /// Tests two inputs. /// Tests the unhappy path where the final result overflows. function testOpDivEvalTwoInputsUnhappyOverflow() external { - checkUnhappyOverflow("_: div(max-positive-value() 1e-18);", 134799733335753198973335075435098153360, 2147483694); + checkUnhappyOverflow( + "_: div(max-positive-value() 1e-18);", + 13479973333575319897333507543509815336818572211270286240551805124607, + 2147483665 + ); // checkUnhappy("_: div(1e52 1e-8);", abi.encodeWithSelector(PRBMath_MulDiv_Overflow.selector, 1e70, 1e18, 1e10)); } @@ -143,24 +161,35 @@ contract LibOpDivTest is OpTest { /// Tests three inputs. /// Tests the happy path where we do not divide by zero or overflow. function testOpDivEvalThreeInputsHappy() external view { - checkHappy("_: div(0 1 1);", Float.unwrap(LibDecimalFloat.packLossless(0, -1)), "0 1 1"); - checkHappy("_: div(1 1 1);", Float.unwrap(LibDecimalFloat.packLossless(1e38, -38)), "1 1 1"); - checkHappy("_: div(1 1 2);", Float.unwrap(LibDecimalFloat.packLossless(5e37, -38)), "1 1 2"); - checkHappy("_: div(1 2 1);", Float.unwrap(LibDecimalFloat.packLossless(5e38, -39)), "1 2 1"); - checkHappy("_: div(1 2 2);", Float.unwrap(LibDecimalFloat.packLossless(25e37, -39)), "1 2 2"); - checkHappy("_: div(1 2 0.1);", Float.unwrap(LibDecimalFloat.packLossless(5e38, -38)), "1 2 0.1"); - // https://github.com/rainlanguage/rain.math.float/issues/71 - // checkHappy("_: div(max-positive-value() 1 1);", type(uint256).max, "max-positive-value() 1 1"); + checkHappy("_: div(0 1 1);", Float.unwrap(LibDecimalFloat.packLossless(0, 0)), "0 1 1"); + checkHappy("_: div(1 1 1);", Float.unwrap(LibDecimalFloat.packLossless(1e67, -67)), "1 1 1"); + checkHappy("_: div(1 1 2);", Float.unwrap(LibDecimalFloat.packLossless(5e66, -67)), "1 1 2"); + checkHappy("_: div(1 2 1);", Float.unwrap(LibDecimalFloat.packLossless(5e66, -67)), "1 2 1"); + checkHappy("_: div(1 2 2);", Float.unwrap(LibDecimalFloat.packLossless(0.25e67, -67)), "1 2 2"); + checkHappy("_: div(1 2 0.1);", Float.unwrap(LibDecimalFloat.packLossless(5e66, -66)), "1 2 0.1"); + checkHappy( + "_: div(max-positive-value() 1 1);", + Float.unwrap(LibDecimalFloat.FLOAT_MAX_POSITIVE_VALUE), + "max-positive-value() 1 1" + ); } /// Test the eval of `div` opcode parsed from a string. /// Tests three inputs. /// Tests the unhappy path where we divide by zero. - function testOpDivEvalThreeInputsUnhappy() external { + function testOpDivEvalThreeInputsUnhappyExamples() external { checkUnhappy("_: div(0 0 0);", stdError.divisionError); - checkUnhappy("_: div(1 0 0);", stdError.divisionError); - checkUnhappy("_: div(1 1 0);", stdError.divisionError); - checkUnhappy("_: div(max-positive-value() 0 0);", stdError.divisionError); + checkUnhappy("_: div(1 0 0);", abi.encodeWithSelector(MulDivOverflow.selector, 1e76, 1e75, 0)); + checkUnhappy("_: div(1 1 0);", abi.encodeWithSelector(MulDivOverflow.selector, 1e76, 1e75, 0)); + checkUnhappy( + "_: div(max-positive-value() 0 0);", + abi.encodeWithSelector( + MulDivOverflow.selector, + 13479973333575319897333507543509815336818572211270286240551805124607000000000, + 1e75, + 0 + ) + ); } /// Test the eval of `div` opcode parsed from a string. @@ -168,7 +197,9 @@ contract LibOpDivTest is OpTest { /// Tests the unhappy path where the final result overflows. function testOpDivEvalThreeInputsUnhappyOverflow() external { checkUnhappyOverflow( - "_: div(max-positive-value() 1e-18 1e-18);", 134799733335753198973335075435098153360, 2147483694 + "_: div(max-positive-value() 1e-18 1e-18);", + 13479973333575319897333507543509815336818572211270286240551805124607, + 2147483665 ); // checkUnhappyOverflow("_: div(1e900000000 1 1e-900000000);", 1, -8000000000000000000000000000); // checkUnhappy("_: div(1e52 1e-8 1);", abi.encodeWithSelector(PRBMath_MulDiv_Overflow.selector, 1e70, 1e18, 1e10)); diff --git a/test/src/lib/op/math/LibOpExp.t.sol b/test/src/lib/op/math/LibOpExp.t.sol index 53e84c0d8..2c5bf6ab2 100644 --- a/test/src/lib/op/math/LibOpExp.t.sol +++ b/test/src/lib/op/math/LibOpExp.t.sol @@ -37,26 +37,42 @@ contract LibOpExpTest is OpTest { } /// Test the eval of `exp`. - function testOpExpEval() external view { + function testOpExpEvalExample() external view { checkHappy("_: exp(0);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "e^0"); checkHappy( "_: exp(1);", - Float.unwrap(LibDecimalFloat.packLossless(2.7182818284590452353602874713526624977e66, -66)), + Float.unwrap( + LibDecimalFloat.packLossless( + 2.718281828459045235360287471352662497757247093699959574966967627724e66, -66 + ) + ), "e^1" ); checkHappy( "_: exp(0.5);", - Float.unwrap(LibDecimalFloat.packLossless(1.64864091422952261768014373567633124885e66, -66)), + Float.unwrap( + LibDecimalFloat.packLossless( + 1.648640914229522617680143735676331248878623546849979787483483813862e66, -66 + ) + ), "e^0.5" ); checkHappy( "_: exp(2);", - Float.unwrap(LibDecimalFloat.packLossless(7.3901273138361809414411498854106499908e66, -66)), + Float.unwrap( + LibDecimalFloat.packLossless( + 7.390127313836180941441149885410649991028988374799838299867870510896e66, -66 + ) + ), "e^2" ); checkHappy( "_: exp(3);", - Float.unwrap(LibDecimalFloat.packLossless(20.088454853771357060808624140579874931e65, -65)), + Float.unwrap( + LibDecimalFloat.packLossless( + 20.08845485377135706080862414057987493271741281099878724900902883172e65, -65 + ) + ), "e^3" ); } diff --git a/test/src/lib/op/math/LibOpExp2.t.sol b/test/src/lib/op/math/LibOpExp2.t.sol index 603dad936..d25435ea7 100644 --- a/test/src/lib/op/math/LibOpExp2.t.sol +++ b/test/src/lib/op/math/LibOpExp2.t.sol @@ -35,9 +35,9 @@ contract LibOpExp2Test is OpTest { } /// Test the eval of `exp2`. - function testOpExp2Eval() external view { + function testOpExp2EvalExample() external view { checkHappy("_: exp2(0);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "2^0"); - checkHappy("_: exp2(1);", Float.unwrap(LibDecimalFloat.packLossless(2000, -3)), "2^1"); + checkHappy("_: exp2(1);", Float.unwrap(LibDecimalFloat.packLossless(2, 0)), "2^1"); checkHappy("_: exp2(0.5);", Float.unwrap(LibDecimalFloat.packLossless(1415, -3)), "2^0.5"); checkHappy("_: exp2(2);", Float.unwrap(LibDecimalFloat.packLossless(3999, -3)), "2^2"); checkHappy("_: exp2(3);", Float.unwrap(LibDecimalFloat.packLossless(7998, -3)), "2^3"); diff --git a/test/src/lib/op/math/LibOpInv.t.sol b/test/src/lib/op/math/LibOpInv.t.sol index 21fdc4eff..9ff307c26 100644 --- a/test/src/lib/op/math/LibOpInv.t.sol +++ b/test/src/lib/op/math/LibOpInv.t.sol @@ -33,12 +33,16 @@ contract LibOpInvTest is OpTest { /// Test the eval of `inv`. function testOpInvEval() external view { - checkHappy("_: inv(1);", Float.unwrap(LibDecimalFloat.packLossless(1e38, -38)), "1"); - checkHappy("_: inv(0.5);", Float.unwrap(LibDecimalFloat.packLossless(2e37, -37)), "0.5"); - checkHappy("_: inv(2);", Float.unwrap(LibDecimalFloat.packLossless(0.5e38, -38)), "2"); + checkHappy("_: inv(1);", Float.unwrap(LibDecimalFloat.packLossless(1e67, -67)), "1"); + checkHappy("_: inv(0.5);", Float.unwrap(LibDecimalFloat.packLossless(2e66, -66)), "0.5"); + checkHappy("_: inv(2);", Float.unwrap(LibDecimalFloat.packLossless(0.5e67, -67)), "2"); checkHappy( "_: inv(3);", - Float.unwrap(LibDecimalFloat.packLossless(0.33333333333333333333333333333333333333e38, -38)), + Float.unwrap( + LibDecimalFloat.packLossless( + 0.3333333333333333333333333333333333333333333333333333333333333333333e67, -67 + ) + ), "3" ); } diff --git a/test/src/lib/op/math/LibOpPow.t.sol b/test/src/lib/op/math/LibOpPow.t.sol index 064d8db2b..ac4041d04 100644 --- a/test/src/lib/op/math/LibOpPow.t.sol +++ b/test/src/lib/op/math/LibOpPow.t.sol @@ -53,7 +53,7 @@ contract LibOpPowTest is OpTest { // 1 ^ 0 checkHappy("_: power(1 0);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "1 0"); // 1 ^ 1 - checkHappy("_: power(1 1);", Float.unwrap(LibDecimalFloat.packLossless(1e3, -3)), "1 1"); + checkHappy("_: power(1 1);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "1 1"); // 1 ^ 2 checkHappy("_: power(1 2);", Float.unwrap(LibDecimalFloat.packLossless(1e3, -3)), "1 2"); // 2 ^ 2 @@ -70,9 +70,9 @@ contract LibOpPowTest is OpTest { function testOpPowNegativeBaseError() external { // Negative base with positive exponent. - checkUnhappy("_: power(-1 2);", abi.encodeWithSelector(Log10Negative.selector, -1e37, -37)); + checkUnhappy("_: power(-1 2);", abi.encodeWithSelector(Log10Negative.selector, -1, 0)); // Negative base with negative exponent. - checkUnhappy("_: power(-1 -2);", abi.encodeWithSelector(Log10Negative.selector, -1e37, -37)); + checkUnhappy("_: power(-1 -2);", abi.encodeWithSelector(Log10Negative.selector, -1, 0)); } /// Test the eval of `power` for bad inputs. diff --git a/test/src/lib/op/math/LibOpSqrt.t.sol b/test/src/lib/op/math/LibOpSqrt.t.sol index b618bb988..13e1ca03d 100644 --- a/test/src/lib/op/math/LibOpSqrt.t.sol +++ b/test/src/lib/op/math/LibOpSqrt.t.sol @@ -36,12 +36,14 @@ contract LibOpSqrtTest is OpTest { } /// Test the eval of `sqrt`. - function testOpSqrtEval() external view { + function testOpSqrtEvalExamples() external view { checkHappy("_: sqrt(0);", 0, "0"); checkHappy("_: sqrt(1);", Float.unwrap(LibDecimalFloat.packLossless(1e3, -3)), "1"); checkHappy( "_: sqrt(0.5);", - Float.unwrap(LibDecimalFloat.packLossless(70671378091872791519434628975265017667, -38)), + Float.unwrap( + LibDecimalFloat.packLossless(7067137809187279151943462897526501766784452296819787985865724381625, -67) + ), "0.5" ); checkHappy("_: sqrt(2);", Float.unwrap(LibDecimalFloat.packLossless(1415, -3)), "2"); diff --git a/test/src/lib/op/math/LibOpSub.t.sol b/test/src/lib/op/math/LibOpSub.t.sol index dcb13f86d..c7641b673 100644 --- a/test/src/lib/op/math/LibOpSub.t.sol +++ b/test/src/lib/op/math/LibOpSub.t.sol @@ -75,9 +75,9 @@ contract LibOpSubTest is OpTest { /// Test the eval of `sub` opcode parsed from a string. Tests two inputs. function testOpSubEvalTwoInputs() external view { checkHappy("_: sub(1 0);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "1 0"); - checkHappy("_: sub(1 1);", Float.unwrap(LibDecimalFloat.packLossless(0, -75)), "1 1"); + checkHappy("_: sub(1 1);", Float.unwrap(LibDecimalFloat.packLossless(0, -76)), "1 1"); checkHappy("_: sub(2 1);", Float.unwrap(LibDecimalFloat.packLossless(1e67, -67)), "2 1"); - checkHappy("_: sub(2 2);", Float.unwrap(LibDecimalFloat.packLossless(0, -75)), "2 2"); + checkHappy("_: sub(2 2);", Float.unwrap(LibDecimalFloat.packLossless(0, -76)), "2 2"); checkHappy( "_: sub(max-positive-value() 0);", Float.unwrap(LibDecimalFloat.packLossless(type(int224).max, type(int32).max)), @@ -94,7 +94,7 @@ contract LibOpSubTest is OpTest { ); checkHappy( "_: sub(max-positive-value() max-positive-value());", - Float.unwrap(LibDecimalFloat.packLossless(0, type(int32).max - 8)), + Float.unwrap(LibDecimalFloat.packLossless(0, type(int32).max - 9)), "max-positive-value() max-positive-value()" ); } @@ -103,7 +103,7 @@ contract LibOpSubTest is OpTest { function testOpSubEvalThreeInputs() external view { checkHappy("_: sub(1 0 0);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "1 0 0"); checkHappy("_: sub(1 1 0);", Float.unwrap(LibDecimalFloat.packLossless(0, 0)), "1 1 0"); - checkHappy("_: sub(2 1 1);", Float.unwrap(LibDecimalFloat.packLossless(0, -75)), "2 1 1"); + checkHappy("_: sub(2 1 1);", Float.unwrap(LibDecimalFloat.packLossless(0, -76)), "2 1 1"); checkHappy("_: sub(2 2 0);", Float.unwrap(LibDecimalFloat.packLossless(0, 0)), "2 2 0"); } } diff --git a/test/src/lib/op/math/growth/LibOpExponentialGrowth.t.sol b/test/src/lib/op/math/growth/LibOpExponentialGrowth.t.sol index edce0a062..4ab370562 100644 --- a/test/src/lib/op/math/growth/LibOpExponentialGrowth.t.sol +++ b/test/src/lib/op/math/growth/LibOpExponentialGrowth.t.sol @@ -66,7 +66,9 @@ contract LibOpExponentialGrowthTest is OpTest { checkHappy("_: exponential-growth(0 0.1 0);", 0, "0 0.1 0"); checkHappy("_: exponential-growth(0 0.1 1);", 0, "0 0.1 1"); checkHappy("_: exponential-growth(1 0.1 0);", Float.unwrap(LibDecimalFloat.FLOAT_ONE), "1 0.1 0"); - checkHappy("_: exponential-growth(1 0.1 1);", Float.unwrap(LibDecimalFloat.packLossless(11e2, -3)), "1 0.1 1"); + checkHappy( + "_: exponential-growth(1 0.1 1);", Float.unwrap(LibDecimalFloat.packLossless(1.1e67, -67)), "1 0.1 1" + ); // Exactly 1.21 checkHappy("_: exponential-growth(1 0.1 2);", Float.unwrap(LibDecimalFloat.packLossless(121e1, -3)), "1 0.1 2"); // Not exactly 1.26905870629 @@ -79,13 +81,19 @@ contract LibOpExponentialGrowthTest is OpTest { "_: exponential-growth(1 0.1 0.5);", Float.unwrap(LibDecimalFloat.packLossless(1049, -3)), "1 0.1 0.5" ); checkHappy("_: exponential-growth(2 0.1 0);", Float.unwrap(LibDecimalFloat.packLossless(2, 0)), "2 0.1 0"); - checkHappy("_: exponential-growth(2 0.1 1);", Float.unwrap(LibDecimalFloat.packLossless(22e2, -3)), "2 0.1 1"); + checkHappy( + "_: exponential-growth(2 0.1 1);", Float.unwrap(LibDecimalFloat.packLossless(2.2e66, -66)), "2 0.1 1" + ); checkHappy("_: exponential-growth(2 0.1 2);", Float.unwrap(LibDecimalFloat.packLossless(242e1, -3)), "2 0.1 2"); /// 1.8181.. checkHappy( "_: exponential-growth(2 0.1 -1);", - Float.unwrap(LibDecimalFloat.packLossless(1.8181818181818181818181818181818181818e38, -38)), + Float.unwrap( + LibDecimalFloat.packLossless( + 1.818181818181818181818181818181818181818181818181818181818181818181e66, -66 + ) + ), "2 0.1 -1" ); } diff --git a/test/src/lib/parse/LibParseOperand.parseOperand.t.sol b/test/src/lib/parse/LibParseOperand.parseOperand.t.sol index 99a962c06..e8cc28116 100644 --- a/test/src/lib/parse/LibParseOperand.parseOperand.t.sol +++ b/test/src/lib/parse/LibParseOperand.parseOperand.t.sol @@ -11,7 +11,6 @@ import {LibConformString} from "rain.string/lib/mut/LibConformString.sol"; import {OperandValuesOverflow, UnclosedOperand} from "src/error/ErrParse.sol"; import {LibParseLiteral} from "src/lib/parse/literal/LibParseLiteral.sol"; import {LibDecimalFloat, LibDecimalFloatImplementation, Float} from "rain.math.float/lib/LibDecimalFloat.sol"; -import {SIGNED_NORMALIZED_MAX} from "rain.math.float/lib/implementation/LibDecimalFloatImplementation.sol"; contract LibParseOperandParseOperandTest is Test { using LibBytes for bytes; @@ -75,7 +74,7 @@ contract LibParseOperandParseOperandTest is Test { LibConformString.conformStringToWhitespace(maybeWhitespaceA); LibConformString.conformStringToWhitespace(maybeWhitespaceB); - value = bound(value, 0, SIGNED_NORMALIZED_MAX); + value = bound(value, 0, type(int224).max); string memory valueString = asHex ? uint256(value).toHexString() : value.toString(); string memory s = string.concat("<", maybeWhitespaceA, valueString, maybeWhitespaceB, ">", suffix); @@ -104,8 +103,8 @@ contract LibParseOperandParseOperandTest is Test { ) external pure { vm.assume(bytes(maybeWhitespaceB).length > 0); - valueA = bound(valueA, 0, SIGNED_NORMALIZED_MAX); - valueB = bound(valueB, 0, SIGNED_NORMALIZED_MAX); + valueA = bound(valueA, 0, type(int224).max); + valueB = bound(valueB, 0, type(int224).max); LibConformString.conformStringToWhitespace(maybeWhitespaceA); LibConformString.conformStringToWhitespace(maybeWhitespaceB); @@ -149,9 +148,9 @@ contract LibParseOperandParseOperandTest is Test { vm.assume(bytes(maybeWhitespaceB).length > 0); vm.assume(bytes(maybeWhitespaceC).length > 0); - valueA = bound(valueA, 0, SIGNED_NORMALIZED_MAX); - valueB = bound(valueB, 0, SIGNED_NORMALIZED_MAX); - valueC = bound(valueC, 0, SIGNED_NORMALIZED_MAX); + valueA = bound(valueA, 0, type(int224).max); + valueB = bound(valueB, 0, type(int224).max); + valueC = bound(valueC, 0, type(int224).max); LibConformString.conformStringToWhitespace(maybeWhitespaceA); LibConformString.conformStringToWhitespace(maybeWhitespaceB); @@ -209,7 +208,7 @@ contract LibParseOperandParseOperandTest is Test { } for (uint256 i = 0; i < 4; i++) { - values[i] = bound(values[i], 0, SIGNED_NORMALIZED_MAX); + values[i] = bound(values[i], 0, type(int224).max); } uint256 expectedLength;