diff --git a/.gas-snapshot b/.gas-snapshot index 5612ddc53..388af4c2d 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -1,710 +1,717 @@ -BaseRainterpreterExternNPE2IERC165Test:testRainterpreterExternNPE2IERC165(bytes4) (runs: 2061, μ: 320946, ~: 320946) -BaseRainterpreterSubParserNPE2IERC165Test:testRainterpreterSubParserNPE2IERC165(uint32) (runs: 2061, μ: 678755, ~: 678755) -LibAllStandardOpsTest:testIntegrityAndOpcodeFunctionPointersLength() (gas: 83063) -LibAllStandardOpsTest:testIntegrityFunctionPointersLength() (gas: 11647) -LibAllStandardOpsTest:testOpcodeFunctionPointersLength() (gas: 11632) -LibEvalFBoundsTest:testEvalNPFBoundsModConstant(bytes32) (runs: 2061, μ: 87519, ~: 87519) -LibExternCodecTest:testLibExternCodecEncodeExternCall(uint256,bytes32) (runs: 2061, μ: 9770, ~: 10284) -LibExternCodecTest:testLibExternCodecEncodeExternDispatch(uint256,bytes32) (runs: 2061, μ: 8887, ~: 9401) -LibInterpreterStateStackTraceTest:testStackTraceCall(uint256,uint256,uint256[]) (runs: 2061, μ: 43081, ~: 42630) -LibOpAbsTest:testOpAbsEval() (gas: 293383) -LibOpAbsTest:testOpAbsEvalOperandDisallowed() (gas: 17593) -LibOpAbsTest:testOpAbsIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13754, ~: 13667) -LibOpAbsTest:testOpAbsRun(bytes32,uint16) (runs: 2061, μ: 17409, ~: 17349) -LibOpAbsTest:testOpAbsTwoInputs() (gas: 40024) -LibOpAbsTest:testOpAbsTwoOutputs() (gas: 35855) -LibOpAbsTest:testOpAbsZeroInputs() (gas: 30184) -LibOpAbsTest:testOpAbsZeroOutputs() (gas: 34847) -LibOpAddTest:testOpAddEval2InputsHappy() (gas: 160876) -LibOpAddTest:testOpAddEval2InputsHappyZero() (gas: 57735) -LibOpAddTest:testOpAddEval2InputsHappyZeroMax() (gas: 104581) -LibOpAddTest:testOpAddEval2InputsHappyZeroOne() (gas: 199224) -LibOpAddTest:testOpAddEval2InputsUnhappy() (gas: 105036) -LibOpAddTest:testOpAddEval3InputsHappy() (gas: 309799) -LibOpAddTest:testOpAddEval3InputsUnhappy() (gas: 725848) -LibOpAddTest:testOpAddEvalOneInput() (gas: 36642) -LibOpAddTest:testOpAddEvalOperandDisallowed() (gas: 91729) -LibOpAddTest:testOpAddEvalTwoOutput() (gas: 44027) -LibOpAddTest:testOpAddEvalZeroInputs() (gas: 30263) -LibOpAddTest:testOpAddEvalZeroOutputs() (gas: 43045) -LibOpAddTest:testOpAddIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2061, μ: 18206, ~: 18434) -LibOpAddTest:testOpAddIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13874, ~: 13797) -LibOpAddTest:testOpAddIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13871, ~: 13794) -LibOpAddTest:testOpAddRun(bytes32[]) (runs: 2051, μ: 52039, ~: 51984) -LibOpAnyTest:testOpAnyEval1FalseInput() (gas: 51945) -LibOpAnyTest:testOpAnyEval1TrueInput() (gas: 51893) -LibOpAnyTest:testOpAnyEval2FalseInputs() (gas: 57239) -LibOpAnyTest:testOpAnyEval2MixedInputs() (gas: 57808) -LibOpAnyTest:testOpAnyEval2MixedInputs2() (gas: 57895) -LibOpAnyTest:testOpAnyEval2MixedInputsZeroExponent() (gas: 58913) -LibOpAnyTest:testOpAnyEval2TrueInputs() (gas: 57829) -LibOpAnyTest:testOpAnyEvalFail() (gas: 29770) +BaseRainterpreterExternNPE2IERC165Test:testRainterpreterExternNPE2IERC165(bytes4) (runs: 2071, μ: 320946, ~: 320946) +BaseRainterpreterSubParserNPE2IERC165Test:testRainterpreterSubParserNPE2IERC165(uint32) (runs: 2072, μ: 678755, ~: 678755) +LibAllStandardOpsTest:testIntegrityAndOpcodeFunctionPointersLength() (gas: 84146) +LibAllStandardOpsTest:testIntegrityFunctionPointersLength() (gas: 11759) +LibAllStandardOpsTest:testOpcodeFunctionPointersLength() (gas: 11744) +LibEvalFBoundsTest:testEvalNPFBoundsModConstant(bytes32) (runs: 2072, μ: 87631, ~: 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: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:testOpAbsTwoInputs() (gas: 40031) +LibOpAbsTest:testOpAbsTwoOutputs() (gas: 35862) +LibOpAbsTest:testOpAbsZeroInputs() (gas: 30190) +LibOpAbsTest:testOpAbsZeroOutputs() (gas: 34854) +LibOpAddTest:testOpAddEval2InputsHappy() (gas: 299885) +LibOpAddTest:testOpAddEval2InputsHappyZero() (gas: 57742) +LibOpAddTest:testOpAddEval2InputsHappyZeroMax() (gas: 104595) +LibOpAddTest:testOpAddEval2InputsHappyZeroOne() (gas: 199248) +LibOpAddTest:testOpAddEval3InputsHappy() (gas: 292969) +LibOpAddTest:testOpAddEval3InputsUnhappy() (gas: 392216) +LibOpAddTest:testOpAddEvalOneInput() (gas: 36649) +LibOpAddTest:testOpAddEvalOperandDisallowed() (gas: 91765) +LibOpAddTest:testOpAddEvalTwoOutput() (gas: 44033) +LibOpAddTest:testOpAddEvalZeroInputs() (gas: 30269) +LibOpAddTest:testOpAddEvalZeroOutputs() (gas: 43051) +LibOpAddTest:testOpAddIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18201, ~: 18430) +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, μ: 65179, ~: 63814) +LibOpAnyTest:testOpAnyEval1FalseInput() (gas: 51952) +LibOpAnyTest:testOpAnyEval1TrueInput() (gas: 51900) +LibOpAnyTest:testOpAnyEval2FalseInputs() (gas: 57246) +LibOpAnyTest:testOpAnyEval2MixedInputs() (gas: 57814) +LibOpAnyTest:testOpAnyEval2MixedInputs2() (gas: 57901) +LibOpAnyTest:testOpAnyEval2MixedInputsZeroExponent() (gas: 58919) +LibOpAnyTest:testOpAnyEval2TrueInputs() (gas: 57835) +LibOpAnyTest:testOpAnyEvalFail() (gas: 29776) LibOpAnyTest:testOpAnyIntegrityGas0() (gas: 3251) -LibOpAnyTest:testOpAnyIntegrityHappy(uint8,uint16) (runs: 2061, μ: 8299, ~: 8568) +LibOpAnyTest:testOpAnyIntegrityHappy(uint8,uint16) (runs: 2072, μ: 8299, ~: 8417) LibOpAnyTest:testOpAnyIntegrityUnhappyZeroInputs() (gas: 4059) -LibOpAnyTest:testOpAnyRun(bytes32[],uint16) (runs: 2051, μ: 21817, ~: 21797) +LibOpAnyTest:testOpAnyRun(bytes32[],uint16) (runs: 2062, μ: 21822, ~: 21797) LibOpAnyTest:testOpAnyRunGas0() (gas: 3345) -LibOpAnyTest:testOpAnyTwoOutputs() (gas: 35825) -LibOpAnyTest:testOpAnyZeroOutputs() (gas: 34795) -LibOpAvgTest:testOpAvgEval() (gas: 447365) -LibOpAvgTest:testOpAvgEvalOneInput() (gas: 35224) -LibOpAvgTest:testOpAvgEvalOperandDisallowed() (gas: 17634) -LibOpAvgTest:testOpAvgEvalThreeInputs() (gas: 44951) -LibOpAvgTest:testOpAvgEvalTwoOutputs() (gas: 40755) -LibOpAvgTest:testOpAvgEvalZeroOutputs() (gas: 39730) -LibOpAvgTest:testOpAvgIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13776, ~: 13689) -LibOpAvgTest:testOpAvgRun(int256,int256,int256,int256,uint16) (runs: 2061, μ: 37789, ~: 37819) -LibOpBinaryEqualToTest:testOpBinaryEqualToEval2() (gas: 208020) -LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsBothOne() (gas: 57888) -LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsFirstOneSecondZero() (gas: 58619) -LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsFirstZeroSecondOne() (gas: 58621) -LibOpBinaryEqualToTest:testOpBinaryEqualToEval2ZeroInputs() (gas: 57933) -LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail0Inputs() (gas: 30666) -LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail1Input() (gas: 34985) -LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail3Inputs() (gas: 43484) -LibOpBinaryEqualToTest:testOpBinaryEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 19699, ~: 19922) -LibOpBinaryEqualToTest:testOpBinaryEqualToRun(bytes32,bytes32) (runs: 2061, μ: 16674, ~: 16674) -LibOpBinaryEqualToTest:testOpBinaryEqualToTwoOutputs() (gas: 41643) -LibOpBinaryEqualToTest:testOpBinaryEqualToZeroOutputs() (gas: 40574) -LibOpBitwiseAndNPTest:testOpBitwiseAndNPEvalHappy() (gas: 720691) -LibOpBitwiseAndNPTest:testOpBitwiseAndNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13754, ~: 13667) -LibOpBitwiseAndNPTest:testOpBitwiseAndNPRun(bytes32,bytes32) (runs: 2061, μ: 16671, ~: 16671) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalBadOperand() (gas: 18238) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalOneInput() (gas: 35799) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalThreeInputs() (gas: 45568) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalTwoOutputs() (gas: 41372) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalZeroInputs() (gas: 30822) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalZeroOutputs() (gas: 40346) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEval() (gas: 719397) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalBadOperand() (gas: 18179) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalOneInput() (gas: 35740) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalThreeInputs() (gas: 45466) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalTwoOutputs() (gas: 41290) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalZeroInputs() (gas: 30719) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalZeroOutputs() (gas: 40287) -LibOpBitwiseOrNPTest:testOpBitwiseORNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13753, ~: 13666) -LibOpBitwiseOrNPTest:testOpBitwiseORNPRun(bytes32,bytes32) (runs: 2061, μ: 16628, ~: 16628) -LibOpBlockNumberTest:testOpBlockNumberEval(uint256) (runs: 2061, μ: 51019, ~: 50792) -LibOpBlockNumberTest:testOpBlockNumberEvalOneInput() (gas: 35212) -LibOpBlockNumberTest:testOpBlockNumberEvalTwoOutputs() (gas: 31514) -LibOpBlockNumberTest:testOpBlockNumberEvalZeroOutputs() (gas: 30505) -LibOpBlockNumberTest:testOpBlockNumberIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 19649, ~: 19915) -LibOpBlockNumberTest:testOpBlockNumberRun(uint256,uint16) (runs: 2061, μ: 20846, ~: 21044) -LibOpCallTest:testCallTraceInnerOnly() (gas: 63050) -LibOpCallTest:testCallTraceOuterOnly() (gas: 45616) -LibOpCallTest:testOpCallNPIntegrityIO((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2056, μ: 39769, ~: 38400) -LibOpCallTest:testOpCallNPIntegritySourceIndexOutOfBounds((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint256,uint256,bytes32) (runs: 2061, μ: 59373, ~: 59251) -LibOpCallTest:testOpCallNPIntegrityTooManyOutputs((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2052, μ: 58869, ~: 59166) -LibOpCallTest:testOpCallNPRunInputsMismatch() (gas: 72617) -LibOpCallTest:testOpCallNPRunOutputsMismatch() (gas: 65559) -LibOpCallTest:testOpCallNPRunSourceDoesNotExist() (gas: 350927) -LibOpChainIdTest:testOpChainIDEval(uint64) (runs: 2061, μ: 47083, ~: 47083) -LibOpChainIdTest:testOpChainIDIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 19679, ~: 19925) -LibOpChainIdTest:testOpChainIdEvalFail() (gas: 34386) -LibOpChainIdTest:testOpChainIdRun(uint64,uint16) (runs: 2061, μ: 17123, ~: 17123) -LibOpChainIdTest:testOpChainIdTwoOutputs() (gas: 31191) -LibOpChainIdTest:testOpChainIdZeroOutputs() (gas: 30140) -LibOpConditionsTest:testOpConditionsEval1FalseInput1TrueInput() (gas: 70646) -LibOpConditionsTest:testOpConditionsEval1FalseInputRevert() (gas: 54997) -LibOpConditionsTest:testOpConditionsEval1TrueInput1FalseInput() (gas: 70532) -LibOpConditionsTest:testOpConditionsEval1TrueInputZeroOutput() (gas: 58764) -LibOpConditionsTest:testOpConditionsEval2MixedInputs() (gas: 58787) -LibOpConditionsTest:testOpConditionsEval2TrueInputs() (gas: 70597) -LibOpConditionsTest:testOpConditionsEvalErrorCode() (gas: 67715) -LibOpConditionsTest:testOpConditionsEvalFail0Inputs() (gas: 30406) -LibOpConditionsTest:testOpConditionsEvalFail1Inputs() (gas: 34694) -LibOpConditionsTest:testOpConditionsEvalUnhappyOperand() (gas: 18121) -LibOpConditionsTest:testOpConditionsIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 20233, ~: 20516) -LibOpConditionsTest:testOpConditionsRun(bytes32[],bytes32) (runs: 2051, μ: 19737, ~: 19850) -LibOpConditionsTest:testOpConditionsRunNoConditionsMet(bytes32[],string) (runs: 2053, μ: 29123, ~: 29334) -LibOpConditionsTest:testOpConditionsTwoOutputs() (gas: 39995) -LibOpConditionsTest:testOpConditionsZeroOutputs() (gas: 38945) -LibOpConstantTest:testOpConstantEvalNPE2E() (gas: 56133) -LibOpConstantTest:testOpConstantEvalZeroConstants() (gas: 41559) -LibOpConstantTest:testOpConstantNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 19200, ~: 19095) -LibOpConstantTest:testOpConstantNPIntegrityOOBConstants((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 40173, ~: 39809) -LibOpConstantTest:testOpConstantNPMultipleOutputErrorSugared() (gas: 31698) -LibOpConstantTest:testOpConstantNPMultipleOutputErrorUnsugared() (gas: 41638) -LibOpConstantTest:testOpConstantNPRun(bytes32[],uint16) (runs: 2061, μ: 52443, ~: 51854) -LibOpConstantTest:testOpConstantNPZeroOutputErrorSugared() (gas: 30314) -LibOpConstantTest:testOpConstantNPZeroOutputErrorUnsugared() (gas: 40266) -LibOpContextNPTest:testOpContextNPEval00(bytes32[][]) (runs: 113, μ: 6546913, ~: 5244273) -LibOpContextNPTest:testOpContextNPEval01(bytes32[][]) (runs: 113, μ: 6572141, ~: 5244454) -LibOpContextNPTest:testOpContextNPEval10(bytes32[][]) (runs: 113, μ: 6547057, ~: 5244417) -LibOpContextNPTest:testOpContextNPEval11(bytes32[][]) (runs: 113, μ: 6534483, ~: 5059614) -LibOpContextNPTest:testOpContextNPEvalOOBi(bytes32[]) (runs: 113, μ: 75102, ~: 72576) -LibOpContextNPTest:testOpContextNPEvalOOBj(bytes32) (runs: 2061, μ: 48273, ~: 48273) -LibOpContextNPTest:testOpContextNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 14505, ~: 14418) -LibOpContextNPTest:testOpContextNPOneInput() (gas: 41637) -LibOpContextNPTest:testOpContextNPRun(bytes32[][],uint256,uint256) (runs: 113, μ: 10375353, ~: 7240865) -LibOpContextNPTest:testOpContextNPRunOOBi(bytes32[][],uint256,uint256) (runs: 113, μ: 10604395, ~: 7779154) -LibOpContextNPTest:testOpContextNPRunOOBj(bytes32[][],uint256,uint256) (runs: 113, μ: 10724942, ~: 7780069) -LibOpContextNPTest:testOpContextNPTwoInputs() (gas: 46501) -LibOpContextNPTest:testOpContextNPTwoOutputs() (gas: 37306) -LibOpContextNPTest:testOpContextNPZeroOutputs() (gas: 36254) -LibOpCtPopNPTest:testOpCtPopNPEval(bytes32) (runs: 2061, μ: 74425, ~: 85304) -LibOpCtPopNPTest:testOpCtPopNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13752, ~: 13665) -LibOpCtPopNPTest:testOpCtPopNPRun(bytes32) (runs: 2061, μ: 16698, ~: 16698) -LibOpCtPopNPTest:testOpCtPopNPTwoInputs() (gas: 41184) -LibOpCtPopNPTest:testOpCtPopNPTwoOutputs() (gas: 37056) -LibOpCtPopNPTest:testOpCtPopNPZeroInputs() (gas: 31321) -LibOpCtPopNPTest:testOpCtPopNPZeroOutputs() (gas: 36005) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalHappy() (gas: 836496) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalTwoInputs() (gas: 47013) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalTwoOutputs() (gas: 42865) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalZeroInputs() (gas: 37196) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalZeroOutputs() (gas: 41812) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8,uint8) (runs: 2061, μ: 22137, ~: 22292) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFail((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2061, μ: 41506, ~: 41715) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFailZeroLength((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2061, μ: 35706, ~: 35509) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPRun(bytes32,uint8,uint8) (runs: 2061, μ: 21006, ~: 20814) +LibOpAnyTest:testOpAnyTwoOutputs() (gas: 35832) +LibOpAnyTest:testOpAnyZeroOutputs() (gas: 34802) +LibOpAvgTest:testOpAvgEval() (gas: 450361) +LibOpAvgTest:testOpAvgEvalOneInput() (gas: 35231) +LibOpAvgTest:testOpAvgEvalOperandDisallowed() (gas: 17640) +LibOpAvgTest:testOpAvgEvalThreeInputs() (gas: 44958) +LibOpAvgTest:testOpAvgEvalTwoOutputs() (gas: 40762) +LibOpAvgTest:testOpAvgEvalZeroOutputs() (gas: 39737) +LibOpAvgTest:testOpAvgIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13774, ~: 13683) +LibOpAvgTest:testOpAvgRun(int256,int256,int256,int256,uint16) (runs: 2072, μ: 38994, ~: 39036) +LibOpBinaryEqualToTest:testOpBinaryEqualToEval2() (gas: 208044) +LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsBothOne() (gas: 57895) +LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsFirstOneSecondZero() (gas: 58625) +LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsFirstZeroSecondOne() (gas: 58627) +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:testOpBinaryEqualToRun(bytes32,bytes32) (runs: 2072, μ: 16674, ~: 16674) +LibOpBinaryEqualToTest:testOpBinaryEqualToTwoOutputs() (gas: 41650) +LibOpBinaryEqualToTest:testOpBinaryEqualToZeroOutputs() (gas: 40581) +LibOpBitwiseAndNPTest:testOpBitwiseAndNPEvalHappy() (gas: 720791) +LibOpBitwiseAndNPTest:testOpBitwiseAndNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13752, ~: 13661) +LibOpBitwiseAndNPTest:testOpBitwiseAndNPRun(bytes32,bytes32) (runs: 2072, μ: 16671, ~: 16671) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalBadOperand() (gas: 18244) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalOneInput() (gas: 35806) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalThreeInputs() (gas: 45575) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalTwoOutputs() (gas: 41379) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalZeroInputs() (gas: 30828) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalZeroOutputs() (gas: 40353) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEval() (gas: 719497) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalBadOperand() (gas: 18185) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalOneInput() (gas: 35747) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalThreeInputs() (gas: 45473) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalTwoOutputs() (gas: 41297) +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: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) +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:testOpCallNPRunInputsMismatch() (gas: 72624) +LibOpCallTest:testOpCallNPRunOutputsMismatch() (gas: 65566) +LibOpCallTest:testOpCallNPRunSourceDoesNotExist() (gas: 350991) +LibOpCeilTest:testOpCeilEval() (gas: 419568) +LibOpCeilTest:testOpCeilEvalOperandDisallowed() (gas: 17657) +LibOpCeilTest:testOpCeilIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13795, ~: 13704) +LibOpCeilTest:testOpCeilRun(bytes32,uint16) (runs: 2072, μ: 16993, ~: 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:testOpChainIdEvalFail() (gas: 34393) +LibOpChainIdTest:testOpChainIdRun(uint64,uint16) (runs: 2072, μ: 17123, ~: 17123) +LibOpChainIdTest:testOpChainIdTwoOutputs() (gas: 31197) +LibOpChainIdTest:testOpChainIdZeroOutputs() (gas: 30146) +LibOpConditionsTest:testOpConditionsEval1FalseInput1TrueInput() (gas: 70652) +LibOpConditionsTest:testOpConditionsEval1FalseInputRevert() (gas: 55003) +LibOpConditionsTest:testOpConditionsEval1TrueInput1FalseInput() (gas: 70538) +LibOpConditionsTest:testOpConditionsEval1TrueInputZeroOutput() (gas: 58770) +LibOpConditionsTest:testOpConditionsEval2MixedInputs() (gas: 58793) +LibOpConditionsTest:testOpConditionsEval2TrueInputs() (gas: 70603) +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: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: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:testOpConstantNPMultipleOutputErrorSugared() (gas: 31705) +LibOpConstantTest:testOpConstantNPMultipleOutputErrorUnsugared() (gas: 41645) +LibOpConstantTest:testOpConstantNPRun(bytes32[],uint16) (runs: 2072, μ: 52299, ~: 51687) +LibOpConstantTest:testOpConstantNPZeroOutputErrorSugared() (gas: 30321) +LibOpConstantTest:testOpConstantNPZeroOutputErrorUnsugared() (gas: 40273) +LibOpContextNPTest:testOpContextNPEval00(bytes32[][]) (runs: 124, μ: 5998982, ~: 4747519) +LibOpContextNPTest:testOpContextNPEval01(bytes32[][]) (runs: 124, μ: 6021988, ~: 4747700) +LibOpContextNPTest:testOpContextNPEval10(bytes32[][]) (runs: 124, μ: 5999126, ~: 4747663) +LibOpContextNPTest:testOpContextNPEval11(bytes32[][]) (runs: 124, μ: 5987678, ~: 4599555) +LibOpContextNPTest:testOpContextNPEvalOOBi(bytes32[]) (runs: 124, μ: 72964, ~: 68722) +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:testOpContextNPTwoInputs() (gas: 46508) +LibOpContextNPTest:testOpContextNPTwoOutputs() (gas: 37312) +LibOpContextNPTest:testOpContextNPZeroOutputs() (gas: 36260) +LibOpCtPopNPTest:testOpCtPopNPEval(bytes32) (runs: 2072, μ: 74532, ~: 85323) +LibOpCtPopNPTest:testOpCtPopNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13750, ~: 13659) +LibOpCtPopNPTest:testOpCtPopNPRun(bytes32) (runs: 2072, μ: 16698, ~: 16698) +LibOpCtPopNPTest:testOpCtPopNPTwoInputs() (gas: 41191) +LibOpCtPopNPTest:testOpCtPopNPTwoOutputs() (gas: 37063) +LibOpCtPopNPTest:testOpCtPopNPZeroInputs() (gas: 31327) +LibOpCtPopNPTest:testOpCtPopNPZeroOutputs() (gas: 36012) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalHappy() (gas: 848754) +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: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) -LibOpDivTest:testOpDivEvalOneInput() (gas: 127233) -LibOpDivTest:testOpDivEvalOperandsDisallowed() (gas: 91705) -LibOpDivTest:testOpDivEvalThreeInputsHappy() (gas: 337741) -LibOpDivTest:testOpDivEvalThreeInputsUnhappy() (gas: 213038) -LibOpDivTest:testOpDivEvalThreeInputsUnhappyOverflow() (gas: 63933) -LibOpDivTest:testOpDivEvalTwoInputsHappy() (gas: 296121) -LibOpDivTest:testOpDivEvalTwoInputsUnhappy() (gas: 144530) -LibOpDivTest:testOpDivEvalTwoInputsUnhappyOverflow() (gas: 57349) -LibOpDivTest:testOpDivEvalTwoOutputs() (gas: 41267) -LibOpDivTest:testOpDivEvalZeroInputs() (gas: 30219) -LibOpDivTest:testOpDivEvalZeroOutputs() (gas: 40263) -LibOpDivTest:testOpDivIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2061, μ: 18260, ~: 18486) -LibOpDivTest:testOpDivIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13827, ~: 13750) -LibOpDivTest:testOpDivIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13850, ~: 13773) -LibOpDivTest:testOpDivRun(bytes32[]) (runs: 2051, μ: 37567, ~: 33610) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalFourInputs() (gas: 55898) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalHappy(uint256,uint8) (runs: 2061, μ: 72204, ~: 72107) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalOneInput() (gas: 37152) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalOperandDisallowed() (gas: 18643) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalTwoInputs() (gas: 43683) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalTwoOutputs() (gas: 50717) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalZeroInputs() (gas: 31159) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalZeroOutputs() (gas: 49693) -LibOpERC20AllowanceTest:testOpERC20AllowanceIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13716, ~: 13629) -LibOpERC20AllowanceTest:testOpERC20AllowanceRun(address,address,address,uint256,uint8) (runs: 2061, μ: 27668, ~: 27579) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalHappy(uint256,uint8) (runs: 2058, μ: 66118, ~: 66118) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalOneInput() (gas: 37257) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalOperandDisallowed() (gas: 18701) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalOverflow(uint256,uint8) (runs: 2049, μ: 62387, ~: 62387) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalThreeInputs() (gas: 49584) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalTwoOutputs() (gas: 44453) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroInputs() (gas: 31218) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroOutputs() (gas: 43385) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13695, ~: 13608) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfRun(address,address,uint256,uint16,uint8) (runs: 2057, μ: 28009, ~: 28009) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalHappy(uint256,uint8) (runs: 2057, μ: 59288, ~: 59288) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalOperandDisallowed() (gas: 18864) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalOverflow(uint256,uint8) (runs: 2050, μ: 55523, ~: 55523) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoInputs() (gas: 43905) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoOutputs() (gas: 38267) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroInputs() (gas: 31401) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroOutputs() (gas: 37239) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13739, ~: 13652) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPRun(address,uint256,uint16,uint8) (runs: 2057, μ: 27211, ~: 27211) -LibOpERC5313OwnerTest:testOpERC5313OwnerEvalHappy() (gas: 55308) -LibOpERC5313OwnerTest:testOpERC5313OwnerEvalOperandDisallowed() (gas: 18382) -LibOpERC5313OwnerTest:testOpERC5313OwnerEvalTwoInputs() (gas: 43501) -LibOpERC5313OwnerTest:testOpERC5313OwnerEvalTwoOutputs() (gas: 37704) -LibOpERC5313OwnerTest:testOpERC5313OwnerEvalZeroInputs() (gas: 30995) -LibOpERC5313OwnerTest:testOpERC5313OwnerEvalZeroOutputs() (gas: 36675) -LibOpERC5313OwnerTest:testOpERC5313OwnerOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13756, ~: 13669) -LibOpERC5313OwnerTest:testOpERC5313OwnerOfRun(address,address,uint16) (runs: 2061, μ: 23615, ~: 23615) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfEvalHappy(address,address,uint256) (runs: 2056, μ: 105371, ~: 105530) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 19660, ~: 19911) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail0() (gas: 30862) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail1() (gas: 35151) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail3() (gas: 44587) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFailOperand() (gas: 21585) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfOneInput() (gas: 35618) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfRun(address,address,uint256,uint16) (runs: 2056, μ: 26008, ~: 26008) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfThreeInputs() (gas: 45107) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfTwoOutputs() (gas: 41112) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfZeroInputs() (gas: 31296) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfZeroOutputs() (gas: 39930) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail0() (gas: 30745) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail1() (gas: 35032) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail3() (gas: 44523) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFailOperand() (gas: 18234) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalHappy(address,uint256,address) (runs: 2061, μ: 96447, ~: 92466) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalOneInput() (gas: 35490) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalThreeInputs() (gas: 44988) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalZeroInputs() (gas: 31192) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalZeroOutputs() (gas: 39781) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2061, μ: 13769, ~: 13705) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPRun(address,bytes32,address,uint16) (runs: 2061, μ: 24201, ~: 24201) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPTwoOutputs() (gas: 40827) -LibOpETest:testOpEEval() (gas: 44640) -LibOpETest:testOpEEvalOneInput() (gas: 34298) -LibOpETest:testOpEEvalTwoOutputs() (gas: 30666) -LibOpETest:testOpEEvalZeroOutputs() (gas: 29615) -LibOpETest:testOpEIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 19700, ~: 19943) -LibOpETest:testOpERun(uint16) (runs: 2061, μ: 16132, ~: 16132) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalHappy() (gas: 833580) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalOneInput() (gas: 42088) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalThreeInputs() (gas: 51835) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalTwoOutputs() (gas: 47661) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalZeroInputs() (gas: 37110) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalZeroOutputs() (gas: 46657) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2061, μ: 18142, ~: 18148) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFail((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2061, μ: 41727, ~: 41901) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFailZeroLength((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2061, μ: 35835, ~: 35638) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPRun(bytes32,bytes32,uint8,uint8) (runs: 2061, μ: 21397, ~: 21212) -LibOpEnsureTest:testOpEnsureEvalBadOutputs() (gas: 34460) -LibOpEnsureTest:testOpEnsureEvalBadOutputs2() (gas: 33985) -LibOpEnsureTest:testOpEnsureEvalHappy() (gas: 166172) -LibOpEnsureTest:testOpEnsureEvalOne() (gas: 34678) -LibOpEnsureTest:testOpEnsureEvalThree() (gas: 45396) -LibOpEnsureTest:testOpEnsureEvalUnhappy() (gas: 164901) -LibOpEnsureTest:testOpEnsureEvalUnhappyOperand() (gas: 17085) -LibOpEnsureTest:testOpEnsureEvalZero() (gas: 29675) -LibOpEnsureTest:testOpEnsureIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 19728, ~: 19970) -LibOpEnsureTest:testOpEnsureIntegrityUnhappy((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13818, ~: 13741) -LibOpEnsureTest:testOpEnsureOneOutput() (gas: 39634) -LibOpEnsureTest:testOpEnsureRun(bytes32,string) (runs: 2056, μ: 18046, ~: 18106) -LibOpEqualToNPTest:testOpEqualToEval2Inputs() (gas: 339601) -LibOpEqualToNPTest:testOpEqualToEval2InputsBothOne() (gas: 57700) -LibOpEqualToNPTest:testOpEqualToEval2InputsFirstOneSecondZero() (gas: 58388) -LibOpEqualToNPTest:testOpEqualToEval2InputsFirstZeroSecondOne() (gas: 58391) -LibOpEqualToNPTest:testOpEqualToEval2ZeroInputs() (gas: 57723) -LibOpEqualToNPTest:testOpEqualToEvalFail0Inputs() (gas: 30099) -LibOpEqualToNPTest:testOpEqualToEvalFail1Input() (gas: 34409) -LibOpEqualToNPTest:testOpEqualToEvalFail3Inputs() (gas: 42833) -LibOpEqualToNPTest:testOpEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 19681, ~: 19925) -LibOpEqualToNPTest:testOpEqualToRun(bytes32,bytes32) (runs: 2061, μ: 17542, ~: 17466) -LibOpEqualToNPTest:testOpEqualToTwoOutputs() (gas: 41098) -LibOpEqualToNPTest:testOpEqualToZeroOutputs() (gas: 40007) -LibOpEveryTest:testOpEveryEval1FalseInput() (gas: 52064) -LibOpEveryTest:testOpEveryEval1TrueInput() (gas: 52344) -LibOpEveryTest:testOpEveryEval2FalseInputs() (gas: 57247) -LibOpEveryTest:testOpEveryEval2MixedInputs() (gas: 58040) -LibOpEveryTest:testOpEveryEval2MixedInputs2() (gas: 57979) -LibOpEveryTest:testOpEveryEval2TrueInputs() (gas: 58322) -LibOpEveryTest:testOpEveryEvalFail() (gas: 29905) -LibOpEveryTest:testOpEveryEvalZeroWithExponent() (gas: 59019) -LibOpEveryTest:testOpEveryIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 19800, ~: 20104) -LibOpEveryTest:testOpEveryIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13866, ~: 13789) -LibOpEveryTest:testOpEveryRun(bytes32[]) (runs: 2051, μ: 20838, ~: 20873) -LibOpEveryTest:testOpEveryTwoOutputs() (gas: 36025) -LibOpEveryTest:testOpEveryZeroOutputs() (gas: 34996) -LibOpExp2Test:testOpExp2Eval() (gas: 228930) -LibOpExp2Test:testOpExp2EvalBad() (gas: 65526) -LibOpExp2Test:testOpExp2EvalOperandDisallowed() (gas: 17715) -LibOpExp2Test:testOpExp2Integrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13774, ~: 13687) -LibOpExp2Test:testOpExp2Run(int224,int32,uint16) (runs: 2061, μ: 41369, ~: 36052) -LibOpExp2Test:testOpExp2TwoOutputs() (gas: 35956) -LibOpExp2Test:testOpExp2ZeroOutputs() (gas: 34925) -LibOpExpTest:testOpExpEval() (gas: 279272) -LibOpExpTest:testOpExpEvalOperandDisallowed() (gas: 17610) -LibOpExpTest:testOpExpEvalTwoInputs() (gas: 40066) -LibOpExpTest:testOpExpEvalZeroInputs() (gas: 30226) -LibOpExpTest:testOpExpIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13796, ~: 13709) -LibOpExpTest:testOpExpRun(int224,int32,uint16) (runs: 2061, μ: 58429, ~: 59251) -LibOpExpTest:testOpExpTwoOutputs() (gas: 35919) -LibOpExpTest:testOpExpZeroOutputs() (gas: 34888) -LibOpExponentialGrowthTest:testOpExponentialGrowthEval() (gas: 773499) -LibOpExponentialGrowthTest:testOpExponentialGrowthEvalFourInputs() (gas: 51625) -LibOpExponentialGrowthTest:testOpExponentialGrowthEvalOneInput() (gas: 36408) -LibOpExponentialGrowthTest:testOpExponentialGrowthEvalOperandDisallowed() (gas: 18817) -LibOpExponentialGrowthTest:testOpExponentialGrowthEvalTwoInputs() (gas: 41801) -LibOpExponentialGrowthTest:testOpExponentialGrowthEvalTwoOutputs() (gas: 47358) -LibOpExponentialGrowthTest:testOpExponentialGrowthEvalZeroInputs() (gas: 31066) -LibOpExponentialGrowthTest:testOpExponentialGrowthEvalZeroOutputs() (gas: 46289) -LibOpExponentialGrowthTest:testOpExponentialGrowthIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13752, ~: 13665) -LibOpExponentialGrowthTest:testOpExponentialGrowthRun(int224,int32,int224,int32,int224,int32,uint16) (runs: 2061, μ: 69595, ~: 71330) -LibOpExternNPTest:testOpExternNPEvalHappy() (gas: 99815) -LibOpExternNPTest:testOpExternNPEvalMultipleInputsOutputsHappy() (gas: 115386) -LibOpExternNPTest:testOpExternNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2061, μ: 34972, ~: 34954) -LibOpExternNPTest:testOpExternNPIntegrityNotAnExternContract((uint256,uint256,uint256,bytes32[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2061, μ: 53503, ~: 53633) -LibOpExternNPTest:testOpExternNPRunHappy(address,bytes32[],uint16,bytes32[],bytes32[]) (runs: 2061, μ: 117777, ~: 117525) -LibOpFloorTest:testOpFloorEval() (gas: 254903) -LibOpFloorTest:testOpFloorEvalOperandDisallowed() (gas: 17733) -LibOpFloorTest:testOpFloorIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13753, ~: 13666) -LibOpFloorTest:testOpFloorRun(bytes32,uint16) (runs: 2061, μ: 17155, ~: 17138) -LibOpFloorTest:testOpFloorTwoInputs() (gas: 40208) -LibOpFloorTest:testOpFloorTwoOutputs() (gas: 36016) -LibOpFloorTest:testOpFloorZeroInputs() (gas: 30347) -LibOpFloorTest:testOpFloorZeroOutputs() (gas: 35009) -LibOpFracTest:testOpFracEval() (gas: 342970) -LibOpFracTest:testOpFracEvalOperandDisallowed() (gas: 18325) -LibOpFracTest:testOpFracIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13795, ~: 13708) -LibOpFracTest:testOpFracRun(bytes32,uint16) (runs: 2061, μ: 17113, ~: 17096) -LibOpFracTest:testOpFracTwoInputs() (gas: 40769) -LibOpFracTest:testOpFracTwoOutputs() (gas: 36620) -LibOpFracTest:testOpFracZeroInputs() (gas: 30906) -LibOpFracTest:testOpFracZeroOutputs() (gas: 35568) -LibOpGetTest:testLibOpGetEvalKeyNotSet() (gas: 309076) -LibOpGetTest:testLibOpGetEvalOperandDisallowed() (gas: 57640) -LibOpGetTest:testLibOpGetEvalSetThenGet() (gas: 523074) -LibOpGetTest:testLibOpGetEvalStoreAndSetAndGet() (gas: 255755) -LibOpGetTest:testLibOpGetEvalStoreThenGet() (gas: 476578) -LibOpGetTest:testLibOpGetEvalThreeInputs() (gas: 45034) -LibOpGetTest:testLibOpGetEvalTwoInputs() (gas: 39793) -LibOpGetTest:testLibOpGetEvalTwoOutputs() (gas: 35384) -LibOpGetTest:testLibOpGetEvalZeroInputs() (gas: 29808) -LibOpGetTest:testLibOpGetEvalZeroOutputs() (gas: 34354) -LibOpGetTest:testLibOpGetIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 20565, ~: 20860) -LibOpGetTest:testLibOpGetRunState(bytes32,bytes32,uint16) (runs: 2061, μ: 19634, ~: 19638) -LibOpGetTest:testLibOpGetRunStateAndStore(bytes32,bytes32,bytes32,uint16) (runs: 2061, μ: 47596, ~: 47610) -LibOpGetTest:testLibOpGetRunStore(bytes32,bytes32,uint16) (runs: 2061, μ: 49831, ~: 49835) -LibOpGetTest:testLibOpGetRunStoreDifferentNamespace(bytes32,bytes32,uint16) (runs: 2061, μ: 51423, ~: 51427) -LibOpGetTest:testLibOpGetRunUnset(bytes32,uint16) (runs: 2061, μ: 24663, ~: 24668) -LibOpGmTest:testOpGmEval() (gas: 460919) -LibOpGmTest:testOpGmEvalOperandDisallowed() (gas: 17531) -LibOpGmTest:testOpGmIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13795, ~: 13708) -LibOpGmTest:testOpGmOneInput() (gas: 35113) -LibOpGmTest:testOpGmRun(int224,int32,int224,int32,uint16) (runs: 2061, μ: 69552, ~: 72131) -LibOpGmTest:testOpGmThreeInputs() (gas: 44860) -LibOpGmTest:testOpGmTwoOutputs() (gas: 40684) -LibOpGmTest:testOpGmZeroOutputs() (gas: 39661) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEval2InputsBothOne() (gas: 59079) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEval2InputsFirstOneSecondZero() (gas: 59788) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEval2InputsFirstZeroSecondOne() (gas: 59788) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEval2ZeroInputs() (gas: 59122) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEvalFail0Inputs() (gas: 31416) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEvalFail1Input() (gas: 35844) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEvalFail3Inputs() (gas: 44193) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2061, μ: 13748, ~: 13684) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToRun(bytes32,bytes32) (runs: 2061, μ: 17395, ~: 17323) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToTwoOutputs() (gas: 43037) -LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToZeroOutputs() (gas: 41812) -LibOpGreaterThanTest:testOpGreaterThanEval1_0Gt1() (gas: 58634) -LibOpGreaterThanTest:testOpGreaterThanEval1_1Gt1_2() (gas: 61237) -LibOpGreaterThanTest:testOpGreaterThanEval2InputsBothOne() (gas: 57949) -LibOpGreaterThanTest:testOpGreaterThanEval2InputsFirstOneSecondZero() (gas: 58682) -LibOpGreaterThanTest:testOpGreaterThanEval2InputsFirstZeroSecondOne() (gas: 58701) -LibOpGreaterThanTest:testOpGreaterThanEval2ZeroInputs() (gas: 57970) -LibOpGreaterThanTest:testOpGreaterThanEvalFail0Inputs() (gas: 30467) -LibOpGreaterThanTest:testOpGreaterThanEvalFail1Input() (gas: 34787) -LibOpGreaterThanTest:testOpGreaterThanEvalFail3Inputs() (gas: 43128) -LibOpGreaterThanTest:testOpGreaterThanEvalNeg1Gt0() (gas: 58734) -LibOpGreaterThanTest:testOpGreaterThanEvalNeg1_1GtNeg1_2() (gas: 61438) -LibOpGreaterThanTest:testOpGreaterThanIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 19696, ~: 19923) -LibOpGreaterThanTest:testOpGreaterThanRun(bytes32,bytes32) (runs: 2061, μ: 17417, ~: 17347) -LibOpGreaterThanTest:testOpGreaterThanTwoOutputs() (gas: 41886) -LibOpGreaterThanTest:testOpGreaterThanZeroOutputs() (gas: 40838) -LibOpHashNPTest:testOpHashNPEval0Inputs() (gas: 46351) -LibOpHashNPTest:testOpHashNPEval1Input() (gas: 54960) -LibOpHashNPTest:testOpHashNPEval2Inputs() (gas: 63303) -LibOpHashNPTest:testOpHashNPEval2InputsDifferent() (gas: 63977) -LibOpHashNPTest:testOpHashNPEval2InputsOtherStack() (gas: 78532) -LibOpHashNPTest:testOpHashNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 19713, ~: 20017) -LibOpHashNPTest:testOpHashNPRun(bytes32[]) (runs: 2051, μ: 19459, ~: 19563) -LibOpHashNPTest:testOpHashNPTwoOutputs() (gas: 30876) -LibOpHashNPTest:testOpHashNPZeroOutputs() (gas: 29502) -LibOpHeadroomTest:testOpHeadroomEval() (gas: 263671) -LibOpHeadroomTest:testOpHeadroomEvalOperandDisallowed() (gas: 17974) -LibOpHeadroomTest:testOpHeadroomIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13753, ~: 13666) -LibOpHeadroomTest:testOpHeadroomRun(bytes32,uint16) (runs: 2061, μ: 19178, ~: 18388) -LibOpHeadroomTest:testOpHeadroomTwoInputs() (gas: 40452) -LibOpHeadroomTest:testOpHeadroomTwoOutputs() (gas: 36303) -LibOpHeadroomTest:testOpHeadroomZeroInputs() (gas: 30589) -LibOpHeadroomTest:testOpHeadroomZeroOutputs() (gas: 35250) -LibOpIfTest:testOpIfEval3InputsFirstOneSecondTwoThirdThree() (gas: 63725) -LibOpIfTest:testOpIfEval3InputsFirstOneSecondZeroThirdThree() (gas: 63477) -LibOpIfTest:testOpIfEval3InputsFirstTwoSecondThreeThirdFour() (gas: 63681) -LibOpIfTest:testOpIfEval3InputsFirstTwoSecondZeroThirdFour() (gas: 63477) -LibOpIfTest:testOpIfEval3InputsFirstZeroSecondOneThirdTwo() (gas: 63724) -LibOpIfTest:testOpIfEval3InputsFirstZeroSecondOneThirdZero() (gas: 62923) -LibOpIfTest:testOpIfEval3InputsFirstZeroSecondZeroThirdOne() (gas: 62971) -LibOpIfTest:testOpIfEval3InputsFirstZeroSecondZeroThirdThree() (gas: 62974) -LibOpIfTest:testOpIfEvalEmptyStringTruthy() (gas: 163866) -LibOpIfTest:testOpIfEvalFail0Inputs() (gas: 29635) -LibOpIfTest:testOpIfEvalFail1Input() (gas: 33989) -LibOpIfTest:testOpIfEvalFail2Inputs() (gas: 38118) -LibOpIfTest:testOpIfEvalFail4Inputs() (gas: 46486) -LibOpIfTest:testOpIfEvalTwoOutputs() (gas: 45990) -LibOpIfTest:testOpIfEvalZeroExponent() (gas: 65029) -LibOpIfTest:testOpIfEvalZeroOutputs() (gas: 44921) -LibOpIfTest:testOpIfIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 19678, ~: 19943) -LibOpIfTest:testOpIfRun(bytes32,bytes32,bytes32) (runs: 2061, μ: 17013, ~: 17014) -LibOpInvTest:testOpExpEvalOperandDisallowed() (gas: 17632) -LibOpInvTest:testOpInvEval() (gas: 177042) -LibOpInvTest:testOpInvIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13753, ~: 13666) -LibOpInvTest:testOpInvRun(int224,int32,uint16) (runs: 2060, μ: 25068, ~: 25219) -LibOpInvTest:testOpInvTwoInputs() (gas: 40110) -LibOpInvTest:testOpInvTwoOutputs() (gas: 35896) -LibOpInvTest:testOpInvZeroInputs() (gas: 30227) -LibOpInvTest:testOpInvZeroOutputs() (gas: 34889) -LibOpIsZeroTest:testOpIsZeroEval0e20Input() (gas: 53398) -LibOpIsZeroTest:testOpIsZeroEval1NonZeroInput() (gas: 52356) -LibOpIsZeroTest:testOpIsZeroEval1ZeroInput() (gas: 52093) -LibOpIsZeroTest:testOpIsZeroEvalFail0Inputs() (gas: 30008) -LibOpIsZeroTest:testOpIsZeroEvalFail2Inputs() (gas: 38566) -LibOpIsZeroTest:testOpIsZeroNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 19784, ~: 20063) -LibOpIsZeroTest:testOpIsZeroRun(bytes32) (runs: 2061, μ: 16420, ~: 16421) -LibOpIsZeroTest:testOpIsZeroTwoOutputs() (gas: 36401) -LibOpIsZeroTest:testOpIsZeroZeroOutputs() (gas: 35107) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEval2InputsBothOne() (gas: 57260) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEval2InputsFirstOneSecondZero() (gas: 57972) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEval2InputsFirstZeroSecondOne() (gas: 57993) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEval2ZeroInputs() (gas: 57284) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEvalFail0Inputs() (gas: 31151) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEvalFail1Input() (gas: 35506) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEvalFail3Inputs() (gas: 43970) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 19683, ~: 19902) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToRun(bytes32,bytes32) (runs: 2061, μ: 17400, ~: 17329) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToTwoOutputs() (gas: 42637) -LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToZeroOutputs() (gas: 41590) -LibOpLessThanTest:testOpLessThanEval2InputsFirstZeroSecondOne() (gas: 58458) -LibOpLessThanTest:testOpLessThanEval2ZeroInputs() (gas: 57705) -LibOpLessThanTest:testOpLessThanIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 19707, ~: 19928) -LibOpLessThanTest:testOpLessThanNP1_0Lt1() (gas: 58458) -LibOpLessThanTest:testOpLessThanNP1_1Lt1_2() (gas: 60950) -LibOpLessThanTest:testOpLessThanNPEval2InputsBothOne() (gas: 57729) -LibOpLessThanTest:testOpLessThanNPEval2InputsFirstOneSecondZero() (gas: 58415) -LibOpLessThanTest:testOpLessThanNPMinus1Lt0() (gas: 58513) -LibOpLessThanTest:testOpLessThanNPMinus1_1LtMinus1_2() (gas: 61174) -LibOpLessThanTest:testOpLessThanNPTwoOutputs() (gas: 41972) -LibOpLessThanTest:testOpLessThanNPZeroOutputs() (gas: 40086) -LibOpLessThanTest:testOpLessThanRun(bytes32,bytes32) (runs: 2061, μ: 17424, ~: 17353) -LibOpLessThanTest:testOpLessThanToNPEvalFail0Inputs() (gas: 30202) -LibOpLessThanTest:testOpLessThanToNPEvalFail1Input() (gas: 34491) -LibOpLessThanTest:testOpLessThanToNPEvalFail3Inputs() (gas: 42871) -LibOpLinearGrowthTest:testOpLinearGrowthEval() (gas: 784157) -LibOpLinearGrowthTest:testOpLinearGrowthEvalFourInputs() (gas: 51231) -LibOpLinearGrowthTest:testOpLinearGrowthEvalOneInput() (gas: 36057) -LibOpLinearGrowthTest:testOpLinearGrowthEvalOperandDisallowed() (gas: 18420) -LibOpLinearGrowthTest:testOpLinearGrowthEvalTwoInputs() (gas: 41407) -LibOpLinearGrowthTest:testOpLinearGrowthEvalTwoOutputs() (gas: 46923) -LibOpLinearGrowthTest:testOpLinearGrowthEvalZeroInputs() (gas: 30650) -LibOpLinearGrowthTest:testOpLinearGrowthEvalZeroOutputs() (gas: 45874) -LibOpLinearGrowthTest:testOpLinearGrowthIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13752, ~: 13665) -LibOpLinearGrowthTest:testOpLinearGrowthRun(int224,int32,int224,int32,int224,int32,uint16) (runs: 2061, μ: 36149, ~: 36757) -LibOpMaxNegativeValueTest:testOpMaxNegativeValueEval() (gas: 47417) -LibOpMaxNegativeValueTest:testOpMaxNegativeValueEvalFail() (gas: 35217) +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: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: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) +LibOpERC20AllowanceTest:testOpERC20AllowanceEvalFourInputs() (gas: 55904) +LibOpERC20AllowanceTest:testOpERC20AllowanceEvalHappy(uint256,uint8) (runs: 2072, μ: 72210, ~: 72113) +LibOpERC20AllowanceTest:testOpERC20AllowanceEvalOneInput() (gas: 37159) +LibOpERC20AllowanceTest:testOpERC20AllowanceEvalOperandDisallowed() (gas: 18649) +LibOpERC20AllowanceTest:testOpERC20AllowanceEvalTwoInputs() (gas: 43689) +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) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalOneInput() (gas: 37264) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalOperandDisallowed() (gas: 18707) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalOverflow(uint256,uint8) (runs: 2049, μ: 62393, ~: 62393) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalThreeInputs() (gas: 49590) +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) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalOperandDisallowed() (gas: 18870) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalOverflow(uint256,uint8) (runs: 2050, μ: 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) +LibOpERC5313OwnerTest:testOpERC5313OwnerEvalHappy() (gas: 55315) +LibOpERC5313OwnerTest:testOpERC5313OwnerEvalOperandDisallowed() (gas: 18388) +LibOpERC5313OwnerTest:testOpERC5313OwnerEvalTwoInputs() (gas: 43507) +LibOpERC5313OwnerTest:testOpERC5313OwnerEvalTwoOutputs() (gas: 37711) +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: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:testOpERC721BalanceOfThreeInputs() (gas: 45113) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfTwoOutputs() (gas: 41118) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfZeroInputs() (gas: 31302) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfZeroOutputs() (gas: 39936) +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: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: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:testOpERun(uint16) (runs: 2072, μ: 16132, ~: 16132) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalHappy() (gas: 833676) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalOneInput() (gas: 42095) +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:testOpEncodeBitsNPIntegrityFailZeroLength((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2072, μ: 35830, ~: 35552) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPRun(bytes32,bytes32,uint8,uint8) (runs: 2072, μ: 21396, ~: 21212) +LibOpEnsureTest:testOpEnsureEvalBadOutputs() (gas: 34466) +LibOpEnsureTest:testOpEnsureEvalBadOutputs2() (gas: 33991) +LibOpEnsureTest:testOpEnsureEvalHappy() (gas: 166191) +LibOpEnsureTest:testOpEnsureEvalOne() (gas: 34685) +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: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) +LibOpEqualToNPTest:testOpEqualToEval2InputsBothOne() (gas: 57707) +LibOpEqualToNPTest:testOpEqualToEval2InputsFirstOneSecondZero() (gas: 58394) +LibOpEqualToNPTest:testOpEqualToEval2InputsFirstZeroSecondOne() (gas: 58397) +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:testOpEqualToRun(bytes32,bytes32) (runs: 2072, μ: 17543, ~: 17466) +LibOpEqualToNPTest:testOpEqualToTwoOutputs() (gas: 41105) +LibOpEqualToNPTest:testOpEqualToZeroOutputs() (gas: 40014) +LibOpEveryTest:testOpEveryEval1FalseInput() (gas: 52071) +LibOpEveryTest:testOpEveryEval1TrueInput() (gas: 52351) +LibOpEveryTest:testOpEveryEval2FalseInputs() (gas: 57254) +LibOpEveryTest:testOpEveryEval2MixedInputs() (gas: 58046) +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:testOpEveryIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13864, ~: 13725) +LibOpEveryTest:testOpEveryRun(bytes32[]) (runs: 2062, μ: 20852, ~: 20873) +LibOpEveryTest:testOpEveryTwoOutputs() (gas: 36032) +LibOpEveryTest:testOpEveryZeroOutputs() (gas: 35003) +LibOpExp2Test:testOpExp2Eval() (gas: 228965) +LibOpExp2Test:testOpExp2EvalBad() (gas: 65539) +LibOpExp2Test:testOpExp2EvalOperandDisallowed() (gas: 17721) +LibOpExp2Test:testOpExp2Integrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13772, ~: 13681) +LibOpExp2Test:testOpExp2Run(int224,int32,uint16) (runs: 2072, μ: 42052, ~: 36052) +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, μ: 69298, ~: 68477) +LibOpExpTest:testOpExpTwoOutputs() (gas: 35926) +LibOpExpTest:testOpExpZeroOutputs() (gas: 34895) +LibOpExponentialGrowthTest:testOpExponentialGrowthEval() (gas: 776379) +LibOpExponentialGrowthTest:testOpExponentialGrowthEvalFourInputs() (gas: 51631) +LibOpExponentialGrowthTest:testOpExponentialGrowthEvalOneInput() (gas: 36415) +LibOpExponentialGrowthTest:testOpExponentialGrowthEvalOperandDisallowed() (gas: 18823) +LibOpExponentialGrowthTest:testOpExponentialGrowthEvalTwoInputs() (gas: 41807) +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, μ: 74703, ~: 76568) +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) +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:testOpFloorTwoInputs() (gas: 40215) +LibOpFloorTest:testOpFloorTwoOutputs() (gas: 36023) +LibOpFloorTest:testOpFloorZeroInputs() (gas: 30353) +LibOpFloorTest:testOpFloorZeroOutputs() (gas: 35016) +LibOpFracTest:testOpFracEval() (gas: 337634) +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) +LibOpFracTest:testOpFracTwoInputs() (gas: 40102) +LibOpFracTest:testOpFracTwoOutputs() (gas: 35953) +LibOpFracTest:testOpFracZeroInputs() (gas: 30238) +LibOpFracTest:testOpFracZeroOutputs() (gas: 34901) +LibOpGetTest:testLibOpGetEvalKeyNotSet() (gas: 309116) +LibOpGetTest:testLibOpGetEvalOperandDisallowed() (gas: 57664) +LibOpGetTest:testLibOpGetEvalSetThenGet() (gas: 523118) +LibOpGetTest:testLibOpGetEvalStoreAndSetAndGet() (gas: 255774) +LibOpGetTest:testLibOpGetEvalStoreThenGet() (gas: 476632) +LibOpGetTest:testLibOpGetEvalThreeInputs() (gas: 45041) +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: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) +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, μ: 75455, ~: 79314) +LibOpGmTest:testOpGmThreeInputs() (gas: 44867) +LibOpGmTest:testOpGmTwoOutputs() (gas: 40691) +LibOpGmTest:testOpGmZeroOutputs() (gas: 39668) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEval2InputsBothOne() (gas: 59085) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEval2InputsFirstOneSecondZero() (gas: 59794) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEval2InputsFirstZeroSecondOne() (gas: 59794) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEval2ZeroInputs() (gas: 59128) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEvalFail0Inputs() (gas: 31422) +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:testOpGreaterThanOrEqualToTwoOutputs() (gas: 43043) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToZeroOutputs() (gas: 41818) +LibOpGreaterThanTest:testOpGreaterThanEval1_0Gt1() (gas: 58641) +LibOpGreaterThanTest:testOpGreaterThanEval1_1Gt1_2() (gas: 61243) +LibOpGreaterThanTest:testOpGreaterThanEval2InputsBothOne() (gas: 57956) +LibOpGreaterThanTest:testOpGreaterThanEval2InputsFirstOneSecondZero() (gas: 58688) +LibOpGreaterThanTest:testOpGreaterThanEval2InputsFirstZeroSecondOne() (gas: 58707) +LibOpGreaterThanTest:testOpGreaterThanEval2ZeroInputs() (gas: 57977) +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:testOpGreaterThanTwoOutputs() (gas: 41892) +LibOpGreaterThanTest:testOpGreaterThanZeroOutputs() (gas: 40844) +LibOpHashNPTest:testOpHashNPEval0Inputs() (gas: 46357) +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:testOpHashNPRun(bytes32[]) (runs: 2062, μ: 19464, ~: 19563) +LibOpHashNPTest:testOpHashNPTwoOutputs() (gas: 30882) +LibOpHashNPTest:testOpHashNPZeroOutputs() (gas: 29508) +LibOpHeadroomTest:testOpHeadroomEval() (gas: 482482) +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:testOpHeadroomTwoInputs() (gas: 40459) +LibOpHeadroomTest:testOpHeadroomTwoOutputs() (gas: 36310) +LibOpHeadroomTest:testOpHeadroomZeroInputs() (gas: 30595) +LibOpHeadroomTest:testOpHeadroomZeroOutputs() (gas: 35257) +LibOpIfTest:testOpIfEval3InputsFirstOneSecondTwoThirdThree() (gas: 63732) +LibOpIfTest:testOpIfEval3InputsFirstOneSecondZeroThirdThree() (gas: 63484) +LibOpIfTest:testOpIfEval3InputsFirstTwoSecondThreeThirdFour() (gas: 63688) +LibOpIfTest:testOpIfEval3InputsFirstTwoSecondZeroThirdFour() (gas: 63484) +LibOpIfTest:testOpIfEval3InputsFirstZeroSecondOneThirdTwo() (gas: 63731) +LibOpIfTest:testOpIfEval3InputsFirstZeroSecondOneThirdZero() (gas: 62929) +LibOpIfTest:testOpIfEval3InputsFirstZeroSecondZeroThirdOne() (gas: 62977) +LibOpIfTest:testOpIfEval3InputsFirstZeroSecondZeroThirdThree() (gas: 62980) +LibOpIfTest:testOpIfEvalEmptyStringTruthy() (gas: 163887) +LibOpIfTest:testOpIfEvalFail0Inputs() (gas: 29641) +LibOpIfTest:testOpIfEvalFail1Input() (gas: 33996) +LibOpIfTest:testOpIfEvalFail2Inputs() (gas: 38125) +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:testOpIfRun(bytes32,bytes32,bytes32) (runs: 2072, μ: 17013, ~: 17014) +LibOpInvTest:testOpExpEvalOperandDisallowed() (gas: 17638) +LibOpInvTest:testOpInvEval() (gas: 177070) +LibOpInvTest:testOpInvIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13751, ~: 13660) +LibOpInvTest:testOpInvRun(int224,int32,uint16) (runs: 2071, μ: 25069, ~: 25219) +LibOpInvTest:testOpInvTwoInputs() (gas: 40117) +LibOpInvTest:testOpInvTwoOutputs() (gas: 35903) +LibOpInvTest:testOpInvZeroInputs() (gas: 30233) +LibOpInvTest:testOpInvZeroOutputs() (gas: 34896) +LibOpIsZeroTest:testOpIsZeroEval0e20Input() (gas: 53405) +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:testOpIsZeroRun(bytes32) (runs: 2072, μ: 16420, ~: 16421) +LibOpIsZeroTest:testOpIsZeroTwoOutputs() (gas: 36408) +LibOpIsZeroTest:testOpIsZeroZeroOutputs() (gas: 35114) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEval2InputsBothOne() (gas: 57267) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEval2InputsFirstOneSecondZero() (gas: 57978) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEval2InputsFirstZeroSecondOne() (gas: 57999) +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: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:testOpLessThanNPEval2InputsBothOne() (gas: 57736) +LibOpLessThanTest:testOpLessThanNPEval2InputsFirstOneSecondZero() (gas: 58421) +LibOpLessThanTest:testOpLessThanNPMinus1Lt0() (gas: 58519) +LibOpLessThanTest:testOpLessThanNPMinus1_1LtMinus1_2() (gas: 61180) +LibOpLessThanTest:testOpLessThanNPTwoOutputs() (gas: 41978) +LibOpLessThanTest:testOpLessThanNPZeroOutputs() (gas: 40093) +LibOpLessThanTest:testOpLessThanRun(bytes32,bytes32) (runs: 2072, μ: 17425, ~: 17353) +LibOpLessThanTest:testOpLessThanToNPEvalFail0Inputs() (gas: 30208) +LibOpLessThanTest:testOpLessThanToNPEvalFail1Input() (gas: 34498) +LibOpLessThanTest:testOpLessThanToNPEvalFail3Inputs() (gas: 42878) +LibOpLinearGrowthTest:testOpLinearGrowthEval() (gas: 785836) +LibOpLinearGrowthTest:testOpLinearGrowthEvalFourInputs() (gas: 51237) +LibOpLinearGrowthTest:testOpLinearGrowthEvalOneInput() (gas: 36064) +LibOpLinearGrowthTest:testOpLinearGrowthEvalOperandDisallowed() (gas: 18426) +LibOpLinearGrowthTest:testOpLinearGrowthEvalTwoInputs() (gas: 41413) +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) +LibOpMaxNegativeValueTest:testOpMaxNegativeValueEval() (gas: 47423) +LibOpMaxNegativeValueTest:testOpMaxNegativeValueEvalFail() (gas: 35224) LibOpMaxNegativeValueTest:testOpMaxNegativeValueRun() (gas: 16187) -LibOpMaxNegativeValueTest:testOpMaxNegativeValueTwoOutputs() (gas: 31981) -LibOpMaxNegativeValueTest:testOpMaxNegativeValueZeroOutputs() (gas: 30973) -LibOpMaxNegativeValueTest:testOpMaxValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 19672, ~: 19918) -LibOpMaxPositiveValueTest:testOpMaxPositiveValueEval() (gas: 47416) -LibOpMaxPositiveValueTest:testOpMaxPositiveValueEvalFail() (gas: 35238) -LibOpMaxPositiveValueTest:testOpMaxPositiveValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 19706, ~: 19937) +LibOpMaxNegativeValueTest:testOpMaxNegativeValueTwoOutputs() (gas: 31987) +LibOpMaxNegativeValueTest:testOpMaxNegativeValueZeroOutputs() (gas: 30979) +LibOpMaxNegativeValueTest:testOpMaxValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19660, ~: 19899) +LibOpMaxPositiveValueTest:testOpMaxPositiveValueEval() (gas: 47422) +LibOpMaxPositiveValueTest:testOpMaxPositiveValueEvalFail() (gas: 35245) +LibOpMaxPositiveValueTest:testOpMaxPositiveValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19696, ~: 19937) LibOpMaxPositiveValueTest:testOpMaxPositiveValueRun() (gas: 16196) -LibOpMaxPositiveValueTest:testOpMaxPositiveValueTwoOutputs() (gas: 31980) -LibOpMaxPositiveValueTest:testOpMaxPositiveValueZeroOutputs() (gas: 30972) -LibOpMaxTest:testOpMaxEval2InputsHappy() (gas: 885950) -LibOpMaxTest:testOpMaxEval3InputsHappy() (gas: 2039613) -LibOpMaxTest:testOpMaxEvalOneInput() (gas: 129970) -LibOpMaxTest:testOpMaxEvalOperandDisallowed() (gas: 59037) -LibOpMaxTest:testOpMaxEvalTwoOutputs() (gas: 40781) -LibOpMaxTest:testOpMaxEvalZeroInputs() (gas: 30221) -LibOpMaxTest:testOpMaxIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2061, μ: 18215, ~: 18381) -LibOpMaxTest:testOpMaxIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13828, ~: 13751) -LibOpMaxTest:testOpMaxIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13850, ~: 13773) -LibOpMaxTest:testOpMaxRun(bytes32[]) (runs: 2051, μ: 26581, ~: 26371) -LibOpMaxUint256Test:testOpMaxUint256Eval() (gas: 47346) -LibOpMaxUint256Test:testOpMaxUint256EvalFail() (gas: 35159) -LibOpMaxUint256Test:testOpMaxUint256Integrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 19659, ~: 19924) +LibOpMaxPositiveValueTest:testOpMaxPositiveValueTwoOutputs() (gas: 31986) +LibOpMaxPositiveValueTest:testOpMaxPositiveValueZeroOutputs() (gas: 30978) +LibOpMaxTest:testOpMaxEval2InputsHappy() (gas: 886074) +LibOpMaxTest:testOpMaxEval3InputsHappy() (gas: 2039858) +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: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) +LibOpMaxUint256Test:testOpMaxUint256Eval() (gas: 47352) +LibOpMaxUint256Test:testOpMaxUint256EvalFail() (gas: 35166) +LibOpMaxUint256Test:testOpMaxUint256Integrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2072, μ: 19658, ~: 19865) LibOpMaxUint256Test:testOpMaxUint256Run() (gas: 15997) -LibOpMaxUint256Test:testOpMaxUint256TwoOutputs() (gas: 31943) -LibOpMaxUint256Test:testOpMaxUint256ZeroOutputs() (gas: 30848) -LibOpMinNegativeValueTest:testOpMinNegativeValueEval() (gas: 47437) -LibOpMinNegativeValueTest:testOpMinNegativeValueEvalFail() (gas: 35239) -LibOpMinNegativeValueTest:testOpMinNegativeValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 19676, ~: 19926) +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:testOpMinNegativeValueRun() (gas: 16218) -LibOpMinNegativeValueTest:testOpMinNegativeValueTwoOutputs() (gas: 32002) -LibOpMinNegativeValueTest:testOpMinNegativeValueZeroOutputs() (gas: 30972) -LibOpMinPositiveValueTest:testOpMinPositiveValueEval() (gas: 47417) -LibOpMinPositiveValueTest:testOpMinPositiveValueEvalFail() (gas: 35196) -LibOpMinPositiveValueTest:testOpMinPositiveValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 19660, ~: 19893) +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:testOpMinPositiveValueRun() (gas: 16240) -LibOpMinPositiveValueTest:testOpMinPositiveValueTwoOutputs() (gas: 32001) -LibOpMinPositiveValueTest:testOpMinPositiveValueZeroOutputs() (gas: 30971) -LibOpMinTest:testOpMinEval2InputsHappy() (gas: 993008) -LibOpMinTest:testOpMinEval3InputsHappy() (gas: 3548993) -LibOpMinTest:testOpMinEvalOneInput() (gas: 129830) -LibOpMinTest:testOpMinEvalOperandDisallowed() (gas: 61756) -LibOpMinTest:testOpMinEvalZeroInputs() (gas: 30875) -LibOpMinTest:testOpMinIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2061, μ: 18283, ~: 18453) -LibOpMinTest:testOpMinIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13851, ~: 13774) -LibOpMinTest:testOpMinIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13828, ~: 13751) -LibOpMinTest:testOpMinRun(bytes32[],uint16) (runs: 2051, μ: 26532, ~: 26627) -LibOpMulTest:testOpDecimal18MulNPIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13829, ~: 13752) -LibOpMulTest:testOpMulEvalOneInput() (gas: 129864) -LibOpMulTest:testOpMulEvalOperandsDisallowed() (gas: 95771) -LibOpMulTest:testOpMulEvalThreeInputsHappy() (gas: 754962) -LibOpMulTest:testOpMulEvalThreeInputsUnhappyOverflow() (gas: 62426) -LibOpMulTest:testOpMulEvalTwoInputsHappy() (gas: 531764) -LibOpMulTest:testOpMulEvalTwoInputsUnhappyOverflow() (gas: 55820) -LibOpMulTest:testOpMulEvalZeroInputs() (gas: 30938) -LibOpMulTest:testOpMulIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2061, μ: 18247, ~: 18477) -LibOpMulTest:testOpMulIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13872, ~: 13795) -LibOpMulTest:testOpMulRun(bytes32[]) (runs: 2051, μ: 29009, ~: 26565) -LibOpMulTest:testOpMulTwoOutputs() (gas: 41476) -LibOpMulTest:testOpMulZeroOutputs() (gas: 40430) -LibOpPowTest:testOpPowEval() (gas: 541725) -LibOpPowTest:testOpPowEvalOneInput() (gas: 35388) -LibOpPowTest:testOpPowEvalOperandDisallowed() (gas: 17796) -LibOpPowTest:testOpPowIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13773, ~: 13686) -LibOpPowTest:testOpPowNegativeBaseError() (gas: 101004) -LibOpPowTest:testOpPowRun(int224,int32,int224,int32) (runs: 2061, μ: 64948, ~: 68645) -LibOpPowTest:testOpPowThreeInputs() (gas: 45114) -LibOpPowTest:testOpPowTwoOutputs() (gas: 40918) -LibOpPowTest:testOpPowZeroOutputs() (gas: 39913) -LibOpSetTest:testLibOpSet(bytes32,bytes32) (runs: 2061, μ: 17660, ~: 17665) -LibOpSetTest:testLibOpSetEvalOneInput() (gas: 34242) -LibOpSetTest:testLibOpSetEvalOneOutput() (gas: 39880) -LibOpSetTest:testLibOpSetEvalOperandsDisallowed() (gas: 56155) -LibOpSetTest:testLibOpSetEvalSetTwice() (gas: 78315) -LibOpSetTest:testLibOpSetEvalThreeInputs() (gas: 44675) -LibOpSetTest:testLibOpSetEvalTwoInputs() (gas: 258827) -LibOpSetTest:testLibOpSetEvalTwoOutputs() (gas: 40502) -LibOpSetTest:testLibOpSetEvalZeroInputs() (gas: 29423) -LibOpSetTest:testLibOpSetIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 20453, ~: 20691) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPEval() (gas: 880174) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailBadShiftAmount() (gas: 128301) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailTwoInputs() (gas: 44497) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailTwoOutputs() (gas: 40381) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailZeroInputs() (gas: 34657) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailZeroOutputs() (gas: 39306) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8) (runs: 2058, μ: 19791, ~: 19805) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityNoop((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2061, μ: 35800, ~: 35603) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityZero((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2061, μ: 41993, ~: 42443) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPRun(bytes32,uint8) (runs: 2060, μ: 16833, ~: 16833) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPEval() (gas: 1055354) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityFailBadShiftAmount() (gas: 128890) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8) (runs: 110, μ: 19782, ~: 19329) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityNoop((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 113, μ: 36984, ~: 37429) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityZero((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 113, μ: 40794, ~: 41185) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPRun(bytes32,uint8) (runs: 2060, μ: 16836, ~: 16836) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoInputs() (gas: 44621) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoOutputs() (gas: 40441) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroInputs() (gas: 34716) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroOutputs() (gas: 39390) -LibOpSqrtTest:testOpSqrtEval() (gas: 236800) -LibOpSqrtTest:testOpSqrtEvalBad() (gas: 65443) -LibOpSqrtTest:testOpSqrtEvalOperandDisallowed() (gas: 17651) -LibOpSqrtTest:testOpSqrtEvalTwoOutputs() (gas: 35958) -LibOpSqrtTest:testOpSqrtEvalZeroOutputs() (gas: 34904) -LibOpSqrtTest:testOpSqrtIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13752, ~: 13665) -LibOpSqrtTest:testOpSqrtRun(bytes32) (runs: 2061, μ: 48624, ~: 52891) -LibOpStackNPTest:testOpStackEval() (gas: 66054) -LibOpStackNPTest:testOpStackEvalSeveral() (gas: 90587) -LibOpStackNPTest:testOpStackNPIntegrity(bytes,uint256,bytes32[],bytes32) (runs: 2061, μ: 18895, ~: 18743) -LibOpStackNPTest:testOpStackNPIntegrityOOBStack(bytes,uint16,bytes32[],uint16,uint256) (runs: 2061, μ: 41422, ~: 41563) -LibOpStackNPTest:testOpStackNPMultipleOutputErrorSugared() (gas: 40060) -LibOpStackNPTest:testOpStackNPMultipleOutputErrorUnsugared() (gas: 43046) -LibOpStackNPTest:testOpStackNPRun(bytes32[][],uint256) (runs: 113, μ: 2066175, ~: 1839115) -LibOpStackNPTest:testOpStackNPZeroOutputErrorSugared() (gas: 38605) -LibOpStackNPTest:testOpStackNPZeroOutputErrorUnsugared() (gas: 41556) -LibOpSubTest:testOpSubEvalOneInput() (gas: 129791) -LibOpSubTest:testOpSubEvalThreeInputs() (gas: 226422) -LibOpSubTest:testOpSubEvalTwoInputs() (gas: 343485) -LibOpSubTest:testOpSubEvalZeroInputs() (gas: 30182) -LibOpSubTest:testOpSubIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2061, μ: 18247, ~: 18476) -LibOpSubTest:testOpSubIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13828, ~: 13751) -LibOpSubTest:testOpSubIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13829, ~: 13752) -LibOpSubTest:testOpSubRun(bytes32[]) (runs: 2051, μ: 55698, ~: 54823) -LibOpTimestampTest:testOpBlockTimestampNPEvalFail() (gas: 65915) -LibOpTimestampTest:testOpBlockTimestampNPTwoOutputs() (gas: 58834) -LibOpTimestampTest:testOpBlockTimestampNPZeroOutputs() (gas: 56709) -LibOpTimestampTest:testOpTimestampEval(uint256) (runs: 2061, μ: 85116, ~: 84795) -LibOpTimestampTest:testOpTimestampIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 19673, ~: 19981) -LibOpTimestampTest:testOpTimestampRun(uint256) (runs: 2061, μ: 20587, ~: 20364) -LibOpUint256AddTest:testOpUint256AddEvalOneInput() (gas: 128471) -LibOpUint256AddTest:testOpUint256AddEvalOperandsDisallowed() (gas: 95615) -LibOpUint256AddTest:testOpUint256AddEvalThreeInputsHappy() (gas: 209954) -LibOpUint256AddTest:testOpUint256AddEvalThreeInputsUnhappy() (gas: 114915) -LibOpUint256AddTest:testOpUint256AddEvalTwoInputsHappy() (gas: 280492) -LibOpUint256AddTest:testOpUint256AddEvalTwoOutputs() (gas: 41472) -LibOpUint256AddTest:testOpUint256AddEvalZeroInputs() (gas: 30890) -LibOpUint256AddTest:testOpUint256AddEvalZeroOutputs() (gas: 40403) -LibOpUint256AddTest:testOpUint256AddIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2061, μ: 18251, ~: 18478) -LibOpUint256AddTest:testOpUint256AddIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13830, ~: 13753) -LibOpUint256AddTest:testOpUint256AddIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13828, ~: 13751) -LibOpUint256AddTest:testOpUint256AddRun(bytes32[]) (runs: 2051, μ: 19903, ~: 19426) -LibOpUint256DivTest:testOpUint256DivEval2InputsHappy() (gas: 771856) -LibOpUint256DivTest:testOpUint256DivEval2InputsUnhappy() (gas: 143734) -LibOpUint256DivTest:testOpUint256DivEval3InputsHappy() (gas: 1408548) -LibOpUint256DivTest:testOpUint256DivEval3InputsUnhappy() (gas: 483115) -LibOpUint256DivTest:testOpUint256DivEvalOneInput() (gas: 134047) -LibOpUint256DivTest:testOpUint256DivEvalOperandDisallowed() (gas: 61608) -LibOpUint256DivTest:testOpUint256DivEvalTwoOutputs() (gas: 41473) -LibOpUint256DivTest:testOpUint256DivEvalZeroInputs() (gas: 30891) -LibOpUint256DivTest:testOpUint256DivEvalZeroOutputs() (gas: 40381) -LibOpUint256DivTest:testOpUint256DivIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2061, μ: 18270, ~: 18494) -LibOpUint256DivTest:testOpUint256DivIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13850, ~: 13773) -LibOpUint256DivTest:testOpUint256DivIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13830, ~: 13753) -LibOpUint256DivTest:testOpUint256DivRun(bytes32[]) (runs: 2051, μ: 24848, ~: 25168) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalFourInputs() (gas: 56699) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalHappy(uint256) (runs: 2061, μ: 70344, ~: 70344) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalOneInput() (gas: 37992) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalOperandDisallowed() (gas: 19291) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalTwoInputs() (gas: 44331) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalTwoOutputs() (gas: 51365) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalZeroInputs() (gas: 31785) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalZeroOutputs() (gas: 50341) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13776, ~: 13689) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceRun(address,address,address,uint256) (runs: 2061, μ: 24718, ~: 24718) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalHappy(uint256) (runs: 2061, μ: 63403, ~: 63403) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalOneInput() (gas: 38031) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalOperandDisallowed() (gas: 19349) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalThreeInputs() (gas: 50232) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalTwoOutputs() (gas: 45101) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroInputs() (gas: 31888) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroOutputs() (gas: 44056) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13799, ~: 13712) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfRun(address,address,uint256,uint16) (runs: 2061, μ: 24168, ~: 24168) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalHappy(uint256) (runs: 2061, μ: 56505, ~: 56505) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalOperandDisallowed() (gas: 19512) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoInputs() (gas: 44553) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoOutputs() (gas: 38927) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroInputs() (gas: 32071) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroOutputs() (gas: 37854) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2061, μ: 13799, ~: 13712) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyRun(address,uint256,uint16) (runs: 2060, μ: 23332, ~: 23332) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfEvalHappy(address,address,uint256) (runs: 2061, μ: 104751, ~: 104920) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2061, μ: 19677, ~: 19875) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail0() (gas: 31510) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail1() (gas: 35894) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail3() (gas: 45235) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFailOperand() (gas: 22223) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfOneInput() (gas: 36424) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfRun(address,address,uint256,uint16) (runs: 2061, μ: 24211, ~: 24211) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfThreeInputs() (gas: 45755) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfTwoOutputs() (gas: 41750) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfZeroInputs() (gas: 31944) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfZeroOutputs() (gas: 40725) -LibOpUint256MulTest:testOpUint256MulEvalOneInput() (gas: 128559) -LibOpUint256MulTest:testOpUint256MulEvalOperandsDisallowed() (gas: 95595) -LibOpUint256MulTest:testOpUint256MulEvalThreeInputsHappy() (gas: 1015655) -LibOpUint256MulTest:testOpUint256MulEvalThreeInputsUnhappy() (gas: 642622) -LibOpUint256MulTest:testOpUint256MulEvalTwoInputsHappy() (gas: 417350) -LibOpUint256MulTest:testOpUint256MulEvalTwoInputsUnhappy() (gas: 143866) -LibOpUint256MulTest:testOpUint256MulEvalTwoOutputs() (gas: 41417) -LibOpUint256MulTest:testOpUint256MulEvalZeroInputs() (gas: 30944) -LibOpUint256MulTest:testOpUint256MulEvalZeroOutputs() (gas: 40416) -LibOpUint256MulTest:testOpUint256MulIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2061, μ: 18208, ~: 18436) -LibOpUint256MulTest:testOpUint256MulIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13872, ~: 13795) -LibOpUint256MulTest:testOpUint256MulIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13829, ~: 13752) -LibOpUint256MulTest:testOpUint256MulRun(bytes32[]) (runs: 2051, μ: 18829, ~: 19078) -LibOpUint256PowTest:testOpUint256ExpIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2061, μ: 18224, ~: 18395) -LibOpUint256PowTest:testOpUint256PowEval2InputsHappy() (gas: 872829) -LibOpUint256PowTest:testOpUint256PowEval2InputsUnhappy() (gas: 145846) -LibOpUint256PowTest:testOpUint256PowEval3InputsHappy() (gas: 1981311) -LibOpUint256PowTest:testOpUint256PowEval3InputsUnhappy() (gas: 634027) -LibOpUint256PowTest:testOpUint256PowEvalOneInput() (gas: 133360) -LibOpUint256PowTest:testOpUint256PowEvalOperandDisallowed() (gas: 62300) -LibOpUint256PowTest:testOpUint256PowEvalTwoOutputs() (gas: 41602) -LibOpUint256PowTest:testOpUint256PowEvalZeroInputs() (gas: 31083) -LibOpUint256PowTest:testOpUint256PowEvalZeroOutputs() (gas: 40534) -LibOpUint256PowTest:testOpUint256PowIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13852, ~: 13775) -LibOpUint256PowTest:testOpUint256PowIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13829, ~: 13752) -LibOpUint256PowTest:testOpUint256PowRun(bytes32[]) (runs: 2051, μ: 19384, ~: 19304) -LibOpUint256SubTest:testOpUint256SubEvalOneInput() (gas: 128558) -LibOpUint256SubTest:testOpUint256SubEvalOperandsDisallowed() (gas: 95617) -LibOpUint256SubTest:testOpUint256SubEvalThreeInputsHappy() (gas: 209829) -LibOpUint256SubTest:testOpUint256SubEvalThreeInputsUnhappy() (gas: 115088) -LibOpUint256SubTest:testOpUint256SubEvalTwoInputsHappy() (gas: 280490) -LibOpUint256SubTest:testOpUint256SubEvalTwoOutputs() (gas: 41461) -LibOpUint256SubTest:testOpUint256SubEvalZeroInputs() (gas: 30901) -LibOpUint256SubTest:testOpUint256SubEvalZeroOutputs() (gas: 40393) -LibOpUint256SubTest:testOpUint256SubIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2061, μ: 18252, ~: 18418) -LibOpUint256SubTest:testOpUint256SubIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13873, ~: 13796) -LibOpUint256SubTest:testOpUint256SubIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2061, μ: 13829, ~: 13752) -LibOpUint256SubTest:testOpUint256SubRun(bytes32[]) (runs: 2051, μ: 17684, ~: 17702) +LibOpMinPositiveValueTest:testOpMinPositiveValueTwoOutputs() (gas: 32007) +LibOpMinPositiveValueTest:testOpMinPositiveValueZeroOutputs() (gas: 30977) +LibOpMinTest:testOpMinEval2InputsHappy() (gas: 993144) +LibOpMinTest:testOpMinEval3InputsHappy() (gas: 3549406) +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: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) +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:testOpMulEvalZeroInputs() (gas: 30270) +LibOpMulTest:testOpMulIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18244, ~: 18443) +LibOpMulTest:testOpMulIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2072, μ: 13870, ~: 13731) +LibOpMulTest:testOpMulRun(bytes32[]) (runs: 2062, μ: 29115, ~: 26565) +LibOpMulTest:testOpMulTwoOutputs() (gas: 40809) +LibOpMulTest:testOpMulZeroOutputs() (gas: 39763) +LibOpPowTest:testOpPowEval() (gas: 542874) +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, μ: 71597, ~: 76776) +LibOpPowTest:testOpPowThreeInputs() (gas: 45121) +LibOpPowTest:testOpPowTwoOutputs() (gas: 40925) +LibOpPowTest:testOpPowZeroOutputs() (gas: 39920) +LibOpSetTest:testLibOpSet(bytes32,bytes32) (runs: 2072, μ: 17660, ~: 17665) +LibOpSetTest:testLibOpSetEvalOneInput() (gas: 34249) +LibOpSetTest:testLibOpSetEvalOneOutput() (gas: 39886) +LibOpSetTest:testLibOpSetEvalOperandsDisallowed() (gas: 56179) +LibOpSetTest:testLibOpSetEvalSetTwice() (gas: 78321) +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) +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: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: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: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:testOpShiftBitsRightNPTwoInputs() (gas: 44628) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoOutputs() (gas: 40448) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroInputs() (gas: 34722) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroOutputs() (gas: 39397) +LibOpSqrtTest:testOpSqrtEval() (gas: 237915) +LibOpSqrtTest:testOpSqrtEvalBad() (gas: 65456) +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, μ: 55659, ~: 59975) +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:testOpStackNPMultipleOutputErrorSugared() (gas: 40066) +LibOpStackNPTest:testOpStackNPMultipleOutputErrorUnsugared() (gas: 43052) +LibOpStackNPTest:testOpStackNPRun(bytes32[][],uint256) (runs: 124, μ: 1893999, ~: 1578881) +LibOpStackNPTest:testOpStackNPZeroOutputErrorSugared() (gas: 38611) +LibOpStackNPTest:testOpStackNPZeroOutputErrorUnsugared() (gas: 41562) +LibOpSubTest:testOpSubEvalOneInput() (gas: 129986) +LibOpSubTest:testOpSubEvalThreeInputs() (gas: 226875) +LibOpSubTest:testOpSubEvalTwoInputs() (gas: 439789) +LibOpSubTest:testOpSubEvalZeroInputs() (gas: 30230) +LibOpSubTest:testOpSubIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2072, μ: 18229, ~: 18384) +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) +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) +LibOpUint256AddTest:testOpUint256AddEvalOneInput() (gas: 128499) +LibOpUint256AddTest:testOpUint256AddEvalOperandsDisallowed() (gas: 95651) +LibOpUint256AddTest:testOpUint256AddEvalThreeInputsHappy() (gas: 209980) +LibOpUint256AddTest:testOpUint256AddEvalThreeInputsUnhappy() (gas: 114928) +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: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) +LibOpUint256DivTest:testOpUint256DivEval2InputsHappy() (gas: 771964) +LibOpUint256DivTest:testOpUint256DivEval2InputsUnhappy() (gas: 143753) +LibOpUint256DivTest:testOpUint256DivEval3InputsHappy() (gas: 1408728) +LibOpUint256DivTest:testOpUint256DivEval3InputsUnhappy() (gas: 483170) +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: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) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalFourInputs() (gas: 56705) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalHappy(uint256) (runs: 2072, μ: 70350, ~: 70350) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalOneInput() (gas: 37998) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalOperandDisallowed() (gas: 19297) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalTwoInputs() (gas: 44337) +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) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalHappy(uint256) (runs: 2072, μ: 63409, ~: 63409) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalOneInput() (gas: 38037) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalOperandDisallowed() (gas: 19355) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalThreeInputs() (gas: 50238) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalTwoOutputs() (gas: 45107) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroInputs() (gas: 31894) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroOutputs() (gas: 44062) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2072, μ: 13797, ~: 13706) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfRun(address,address,uint256,uint16) (runs: 2071, μ: 24168, ~: 24168) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalHappy(uint256) (runs: 2072, μ: 56511, ~: 56511) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalOperandDisallowed() (gas: 19518) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoInputs() (gas: 44559) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoOutputs() (gas: 38933) +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) +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:testOpERC721BalanceOfThreeInputs() (gas: 45761) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfTwoOutputs() (gas: 41756) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfZeroInputs() (gas: 31950) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfZeroOutputs() (gas: 40731) +LibOpUint256MulTest:testOpUint256MulEvalOneInput() (gas: 128587) +LibOpUint256MulTest:testOpUint256MulEvalOperandsDisallowed() (gas: 95631) +LibOpUint256MulTest:testOpUint256MulEvalThreeInputsHappy() (gas: 1015778) +LibOpUint256MulTest:testOpUint256MulEvalThreeInputsUnhappy() (gas: 642694) +LibOpUint256MulTest:testOpUint256MulEvalTwoInputsHappy() (gas: 417407) +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: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) +LibOpUint256PowTest:testOpUint256PowEval2InputsHappy() (gas: 872948) +LibOpUint256PowTest:testOpUint256PowEval2InputsUnhappy() (gas: 145865) +LibOpUint256PowTest:testOpUint256PowEval3InputsHappy() (gas: 1981551) +LibOpUint256PowTest:testOpUint256PowEval3InputsUnhappy() (gas: 634099) +LibOpUint256PowTest:testOpUint256PowEvalOneInput() (gas: 133388) +LibOpUint256PowTest:testOpUint256PowEvalOperandDisallowed() (gas: 62324) +LibOpUint256PowTest:testOpUint256PowEvalTwoOutputs() (gas: 41609) +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) +LibOpUint256SubTest:testOpUint256SubEvalOneInput() (gas: 128586) +LibOpUint256SubTest:testOpUint256SubEvalOperandsDisallowed() (gas: 95653) +LibOpUint256SubTest:testOpUint256SubEvalThreeInputsHappy() (gas: 209855) +LibOpUint256SubTest:testOpUint256SubEvalThreeInputsUnhappy() (gas: 115101) +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: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) LibParseCommentsTest:testParseCommentAfterSources() (gas: 69689) LibParseCommentsTest:testParseCommentBetweenSources() (gas: 69745) LibParseCommentsTest:testParseCommentInIgnoredLHS() (gas: 46231) @@ -757,7 +764,7 @@ LibParseInputsOnlyGasTest:testParseGasInputsOnly09() (gas: 52192) LibParseInputsOnlyTest:testParseInputsOnlyMultiple() (gas: 52451) LibParseInputsOnlyTest:testParseInputsOnlySingle() (gas: 51541) LibParseLiteralBoundLiteralHexTest:testParseLiteralBoundLiteralHexBounds() (gas: 18858) -LibParseLiteralBoundLiteralHexTest:testParseLiteralBoundLiteralHexFuzz(string,bytes1,string) (runs: 2061, μ: 44962, ~: 43971) +LibParseLiteralBoundLiteralHexTest:testParseLiteralBoundLiteralHexFuzz(string,bytes1,string) (runs: 2072, μ: 44785, ~: 43846) LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatDotE() (gas: 11195) LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatDotE0() (gas: 11173) LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatDotRevert() (gas: 11218) @@ -776,7 +783,7 @@ LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatNegative LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatNonDecimal() (gas: 11150) LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert0() (gas: 35135) LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert1() (gas: 35045) -LibParseLiteralHexBoundHexTest:testParseLiteralHexRoundTrip(bytes32) (runs: 2061, μ: 27318, ~: 37882) +LibParseLiteralHexBoundHexTest:testParseLiteralHexRoundTrip(bytes32) (runs: 2072, μ: 27232, ~: 37882) LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimal00() (gas: 56730) LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimal01() (gas: 63896) LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimal02() (gas: 70152) @@ -795,23 +802,23 @@ LibParseLiteralIntegerHexTest:testParseIntegerLiteralHex00() (gas: 55856) LibParseLiteralIntegerHexTest:testParseIntegerLiteralHex01() (gas: 61572) LibParseLiteralIntegerHexTest:testParseIntegerLiteralHex02() (gas: 66623) LibParseLiteralIntegerHexTest:testParseIntegerLiteralHexUint256Max() (gas: 72869) -LibParseLiteralStringBoundTest:testParseStringLiteralBounds(string) (runs: 2059, μ: 16492, ~: 16416) -LibParseLiteralStringBoundTest:testParseStringLiteralBoundsInvalidCharBefore(string,uint256) (runs: 2059, μ: 30115, ~: 29987) -LibParseLiteralStringBoundTest:testParseStringLiteralBoundsParserOutOfBounds(string,uint256) (runs: 2059, μ: 19019, ~: 18937) +LibParseLiteralStringBoundTest:testParseStringLiteralBounds(string) (runs: 2070, μ: 16461, ~: 16389) +LibParseLiteralStringBoundTest:testParseStringLiteralBoundsInvalidCharBefore(string,uint256) (runs: 2068, μ: 30060, ~: 29941) +LibParseLiteralStringBoundTest:testParseStringLiteralBoundsParserOutOfBounds(string,uint256) (runs: 2070, μ: 18991, ~: 18908) 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: 111, μ: 65797, ~: 65240) +LibParseLiteralStringTest:testParseStringLiteralInvalidCharWithin(string,uint256) (runs: 120, μ: 64980, ~: 64385) LibParseLiteralStringTest:testParseStringLiteralLongASCII(string) (runs: 102, μ: 69472, ~: 69704) -LibParseLiteralStringTest:testParseStringLiteralShortASCII(string) (runs: 111, μ: 61644, ~: 61798) +LibParseLiteralStringTest:testParseStringLiteralShortASCII(string) (runs: 122, μ: 61182, ~: 61062) LibParseLiteralStringTest:testParseStringLiteralSimple() (gas: 54654) -LibParseLiteralStringTest:testParseStringLiteralTwo(string,string) (runs: 105, μ: 75080, ~: 75764) +LibParseLiteralStringTest:testParseStringLiteralTwo(string,string) (runs: 112, μ: 74704, ~: 74690) LibParseLiteralSubParseableTest:testParseLiteralSubParseableBody() (gas: 64571) LibParseLiteralSubParseableTest:testParseLiteralSubParseableEmptyBody() (gas: 19630) -LibParseLiteralSubParseableTest:testParseLiteralSubParseableHappyFuzz(string,string,string) (runs: 2059, μ: 89633, ~: 87844) +LibParseLiteralSubParseableTest:testParseLiteralSubParseableHappyFuzz(string,string,string) (runs: 2068, μ: 89562, ~: 87745) LibParseLiteralSubParseableTest:testParseLiteralSubParseableMissingDispatchEmpty() (gas: 10659) LibParseLiteralSubParseableTest:testParseLiteralSubParseableMissingDispatchUnclosed() (gas: 10619) LibParseLiteralSubParseableTest:testParseLiteralSubParseableMissingDispatchUnclosedWhitespace0() (gas: 10679) @@ -876,36 +883,36 @@ LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultSecon LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultThird() (gas: 55536) LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultUnclosed() (gas: 52609) LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultUnopened() (gas: 47193) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1AllValues(uint256,uint256,uint256) (runs: 2061, μ: 12115, ~: 12193) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1AllValuesThirdValueTooLarge(uint256,uint256,uint256) (runs: 2061, μ: 13578, ~: 13436) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstAndSecondValue(uint256,uint256) (runs: 2061, μ: 10368, ~: 10410) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstAndSecondValueSecondValueTooLarge(uint256,uint256) (runs: 2061, μ: 11731, ~: 11562) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstValueOnly(uint256) (runs: 2061, μ: 8644, ~: 8700) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstValueTooLarge(int256) (runs: 2061, μ: 11709, ~: 11953) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1ManyValues(bytes32[]) (runs: 2061, μ: 35370, ~: 35566) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1AllValues(uint256,uint256,uint256) (runs: 2072, μ: 12115, ~: 12193) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1AllValuesThirdValueTooLarge(uint256,uint256,uint256) (runs: 2072, μ: 13577, ~: 13436) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstAndSecondValue(uint256,uint256) (runs: 2072, μ: 10368, ~: 10410) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstAndSecondValueSecondValueTooLarge(uint256,uint256) (runs: 2072, μ: 11730, ~: 11562) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstValueOnly(uint256) (runs: 2072, μ: 8643, ~: 8700) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstValueTooLarge(int256) (runs: 2072, μ: 11708, ~: 11953) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1ManyValues(bytes32[]) (runs: 2072, μ: 35224, ~: 35329) LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1NoValues() (gas: 4679) -LibParseOperandHandleOperandDisallowedTest:testHandleOperandDisallowedAnyValues(bytes32[]) (runs: 2061, μ: 34755, ~: 34636) +LibParseOperandHandleOperandDisallowedTest:testHandleOperandDisallowedAnyValues(bytes32[]) (runs: 2072, μ: 34611, ~: 34518) LibParseOperandHandleOperandDisallowedTest:testHandleOperandDisallowedNoValues() (gas: 3219) -LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultBothValuesWithinOneByte(uint256,uint256) (runs: 2061, μ: 9918, ~: 10039) -LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultFirstValueTooLarge(uint256,uint256) (runs: 2061, μ: 11259, ~: 11074) -LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultManyValues(bytes32[]) (runs: 2061, μ: 35174, ~: 35470) +LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultBothValuesWithinOneByte(uint256,uint256) (runs: 2072, μ: 9918, ~: 10039) +LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultFirstValueTooLarge(uint256,uint256) (runs: 2072, μ: 11258, ~: 11074) +LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultManyValues(bytes32[]) (runs: 2072, μ: 35029, ~: 34997) LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultNoValues() (gas: 4625) -LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultOneValue(uint256) (runs: 2061, μ: 8807, ~: 9089) -LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultSecondValueTooLarge(uint256,uint256) (runs: 2061, μ: 11278, ~: 11085) -LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1ManyValues(bytes32[]) (runs: 2061, μ: 35068, ~: 35364) +LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultOneValue(uint256) (runs: 2072, μ: 8806, ~: 9089) +LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultSecondValueTooLarge(uint256,uint256) (runs: 2072, μ: 11278, ~: 11085) +LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1ManyValues(bytes32[]) (runs: 2072, μ: 34923, ~: 34891) LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1NoValues() (gas: 3891) -LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1OneValue(uint256) (runs: 2061, μ: 8180, ~: 8217) -LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1OneValueTooLarge(uint256) (runs: 2061, μ: 9321, ~: 9095) -LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1TwoValues(uint256,uint256) (runs: 2061, μ: 9878, ~: 9901) -LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1TwoValuesSecondValueTooLarge(uint256,uint256) (runs: 2061, μ: 11184, ~: 11003) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullManyValues(bytes32[]) (runs: 2061, μ: 34990, ~: 35145) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoDefaultManyValues(bytes32[]) (runs: 2061, μ: 35010, ~: 35165) +LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1OneValue(uint256) (runs: 2072, μ: 8180, ~: 8217) +LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1OneValueTooLarge(uint256) (runs: 2072, μ: 9321, ~: 9095) +LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1TwoValues(uint256,uint256) (runs: 2072, μ: 9878, ~: 9901) +LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1TwoValuesSecondValueTooLarge(uint256,uint256) (runs: 2072, μ: 11184, ~: 11003) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullManyValues(bytes32[]) (runs: 2072, μ: 34845, ~: 34909) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoDefaultManyValues(bytes32[]) (runs: 2072, μ: 34865, ~: 34929) LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoDefaultNoValues() (gas: 4599) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoDefaultSingleValue(uint256) (runs: 2061, μ: 7613, ~: 7893) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoDefaultSingleValue(uint256) (runs: 2072, μ: 7611, ~: 7893) LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoValues() (gas: 3266) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValue(uint256) (runs: 2061, μ: 7652, ~: 7936) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValueDisallowed(uint256) (runs: 2061, μ: 9290, ~: 9499) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValueNoDefaultDisallowed(uint256) (runs: 2061, μ: 9332, ~: 9540) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValue(uint256) (runs: 2072, μ: 7650, ~: 7936) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValueDisallowed(uint256) (runs: 2072, μ: 9292, ~: 9499) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValueNoDefaultDisallowed(uint256) (runs: 2072, μ: 9333, ~: 9540) LibParseOperandM1M1Test:testOperandM1M1Both() (gas: 57649) LibParseOperandM1M1Test:testOperandM1M1BothZero() (gas: 55824) LibParseOperandM1M1Test:testOperandM1M1Elided() (gas: 51802) @@ -917,13 +924,13 @@ LibParseOperandM1M1Test:testOperandM1M1SecondOverflow() (gas: 53500) LibParseOperandM1M1Test:testOperandM1M1SecondZero() (gas: 57377) LibParseOperandM1M1Test:testOperandM1M1Unclosed() (gas: 251386) LibParseOperandM1M1Test:testOperandM1M1Unopened() (gas: 49346) -LibParseOperandParseOperandTest:testParseOperandEmptyOperand(string) (runs: 109, μ: 42975, ~: 42972) -LibParseOperandParseOperandTest:testParseOperandFourDecimalLiterals(bool[4],int256[4],string[5],string) (runs: 111, μ: 360421, ~: 356408) -LibParseOperandParseOperandTest:testParseOperandNoOpeningCharacter(string) (runs: 111, μ: 42852, ~: 42849) -LibParseOperandParseOperandTest:testParseOperandSingleDecimalLiteral(bool,int256,string,string,string) (runs: 113, μ: 158924, ~: 159209) -LibParseOperandParseOperandTest:testParseOperandThreeDecimalLiterals(bool,bool,bool,int256,int256,int256,string,string,string,string,string) (runs: 113, μ: 278112, ~: 272979) +LibParseOperandParseOperandTest:testParseOperandEmptyOperand(string) (runs: 112, μ: 42975, ~: 42972) +LibParseOperandParseOperandTest:testParseOperandFourDecimalLiterals(bool[4],int256[4],string[5],string) (runs: 122, μ: 357095, ~: 354234) +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:testParseOperandTooManyValues() (gas: 54582) -LibParseOperandParseOperandTest:testParseOperandTwoDecimalLiterals(bool,bool,int256,int256,string,string,string,string) (runs: 112, μ: 214341, ~: 215672) +LibParseOperandParseOperandTest:testParseOperandTwoDecimalLiterals(bool,bool,int256,int256,string,string,string,string) (runs: 123, μ: 213934, ~: 215134) LibParseOperandParseOperandTest:testParseOperandUnclosed() (gas: 54141) LibParseOperandParseOperandTest:testParseOperandUnexpectedChars() (gas: 51419) LibParseOperandSingleFullTest:testOperandSingleFullElided() (gas: 51178) @@ -942,16 +949,16 @@ LibParseOperandSingleFullTest:testOperandSingleFullUint16MaxOverflow() (gas: 514 LibParseOperandSingleFullTest:testOperandSingleFullUnclosed() (gas: 49874) LibParseOperandSingleFullTest:testOperandSingleFullUnopened() (gas: 48263) LibParseOperandSingleFullTest:testOperandSingleFullZero() (gas: 54245) -LibParseParseWordTest:testLibParseParseWordEnd(uint256) (runs: 2061, μ: 9458, ~: 9402) +LibParseParseWordTest:testLibParseParseWordEnd(uint256) (runs: 2072, μ: 9457, ~: 9402) LibParseParseWordTest:testLibParseParseWordExamples() (gas: 26983) LibParseParseWordTest:testLibParseParseWordReferenceImplementation(bytes,uint256) (runs: 2052, μ: 6477, ~: 6257) -LibParseParseWordTest:testLibParseParseWordTooLong(bytes) (runs: 2057, μ: 9726, ~: 9660) -LibParsePragmaKeywordTest:testPragmaKeywordNoWhitespace(uint256,string) (runs: 113, μ: 8977, ~: 8938) -LibParsePragmaKeywordTest:testPragmaKeywordNoop((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),string) (runs: 113, μ: 16004, ~: 15977) -LibParsePragmaKeywordTest:testPragmaKeywordParseSubParserBasic(string,address,uint256,string) (runs: 111, μ: 173206, ~: 158056) -LibParsePragmaKeywordTest:testPragmaKeywordParseSubParserCoupleOfAddresses(string,string,address,address,uint256,string) (runs: 111, μ: 355639, ~: 371421) +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:testPragmaKeywordParseSubParserSpecificStrings() (gas: 254483) -LibParsePragmaKeywordTest:testPragmaKeywordWhitespaceNoHex(uint256,string) (runs: 113, μ: 19925, ~: 17398) +LibParsePragmaKeywordTest:testPragmaKeywordWhitespaceNoHex(uint256,string) (runs: 124, μ: 19738, ~: 17335) LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored00() (gas: 8389) LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored01() (gas: 8451) LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored02() (gas: 8537) @@ -1027,80 +1034,80 @@ LibParseSingleRHSNamedGasTest:testParseGasRHS30() (gas: 119933) LibParseSourceInputsTest:testParseSourceInputsEmptyLinePrefix() (gas: 49446) LibParseSourceInputsTest:testParseSourceInputsMultipleLines() (gas: 52189) LibParseSourceInputsTest:testParseSourceInputsSingle() (gas: 49423) -LibParseStackNameTest:testPushAndRetrieveStackNameDouble((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),bytes32,bytes32) (runs: 2061, μ: 20464, ~: 20339) -LibParseStackNameTest:testPushAndRetrieveStackNameDoubleIdentical((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),bytes32) (runs: 2061, μ: 17745, ~: 17668) -LibParseStackNameTest:testPushAndRetrieveStackNameMany((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),uint256) (runs: 2061, μ: 313417, ~: 261608) -LibParseStackNameTest:testPushAndRetrieveStackNameSingle((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),bytes32) (runs: 2061, μ: 17709, ~: 17632) -LibParseStateConstantValueBloomTest:testConstantValueBloom(bytes32) (runs: 2061, μ: 3330, ~: 3330) +LibParseStackNameTest:testPushAndRetrieveStackNameDouble((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),bytes32,bytes32) (runs: 2072, μ: 20453, ~: 20323) +LibParseStackNameTest:testPushAndRetrieveStackNameDoubleIdentical((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),bytes32) (runs: 2072, μ: 17733, ~: 17646) +LibParseStackNameTest:testPushAndRetrieveStackNameMany((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),uint256) (runs: 2072, μ: 313177, ~: 261007) +LibParseStackNameTest:testPushAndRetrieveStackNameSingle((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),bytes32) (runs: 2072, μ: 17697, ~: 17610) +LibParseStateConstantValueBloomTest:testConstantValueBloom(bytes32) (runs: 2072, μ: 3330, ~: 3330) LibParseStateConstantValueBloomTest:testConstantValueBloomAllBits() (gas: 45879) -LibParseStateConstantValueBloomTest:testConstantValueBloomSingleBit(bytes32) (runs: 2061, μ: 3447, ~: 3447) -LibParseStateExportSubParsersTest:testExportSubParsers((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address[]) (runs: 2061, μ: 148399, ~: 144875) -LibParseStateNewActiveSourcePointerTest:testAlignedOldPointer(uint256,uint256) (runs: 2061, μ: 13350, ~: 13470) -LibParseStateNewActiveSourcePointerTest:testPostUnalignedNewPointer(uint256) (runs: 2061, μ: 7158, ~: 7158) +LibParseStateConstantValueBloomTest:testConstantValueBloomSingleBit(bytes32) (runs: 2072, μ: 3447, ~: 3447) +LibParseStateExportSubParsersTest:testExportSubParsers((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address[]) (runs: 2072, μ: 148265, ~: 144922) +LibParseStateNewActiveSourcePointerTest:testAlignedOldPointer(uint256,uint256) (runs: 2072, μ: 13350, ~: 13470) +LibParseStateNewActiveSourcePointerTest:testPostUnalignedNewPointer(uint256) (runs: 2072, μ: 7158, ~: 7158) LibParseStateNewActiveSourcePointerTest:testPreUnalignedNewPointer() (gas: 9188) -LibParseStateNewActiveSourcePointerTest:testZeroOldPointer(bytes) (runs: 2061, μ: 4802, ~: 4799) -LibParseStatePushConstantValueTest:testPushConstantValueEmpty(bytes,bytes,bytes,bytes) (runs: 2061, μ: 6476, ~: 6474) -LibParseStatePushConstantValueTest:testPushConstantValueMany(bytes32[]) (runs: 2061, μ: 225424, ~: 224765) -LibParseStatePushConstantValueTest:testPushConstantValueSingle(bytes32) (runs: 2061, μ: 7030, ~: 7030) -LibParseStatePushSubParserTest:testPushSubParserList((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address[]) (runs: 2061, μ: 134972, ~: 131964) -LibParseStatePushSubParserTest:testPushSubParserMultiple((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address,address,address) (runs: 2061, μ: 16998, ~: 16935) -LibParseStatePushSubParserTest:testPushSubParserOverflow((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),uint256) (runs: 2061, μ: 44705, ~: 45083) -LibParseStatePushSubParserTest:testPushSubParserZero((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address) (runs: 2061, μ: 15479, ~: 15488) +LibParseStateNewActiveSourcePointerTest:testZeroOldPointer(bytes) (runs: 2072, μ: 4802, ~: 4799) +LibParseStatePushConstantValueTest:testPushConstantValueEmpty(bytes,bytes,bytes,bytes) (runs: 2072, μ: 6476, ~: 6474) +LibParseStatePushConstantValueTest:testPushConstantValueMany(bytes32[]) (runs: 2072, μ: 224359, ~: 223890) +LibParseStatePushConstantValueTest:testPushConstantValueSingle(bytes32) (runs: 2072, μ: 7030, ~: 7030) +LibParseStatePushSubParserTest:testPushSubParserList((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address[]) (runs: 2072, μ: 134849, ~: 132080) +LibParseStatePushSubParserTest:testPushSubParserMultiple((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address,address,address) (runs: 2072, μ: 16988, ~: 16915) +LibParseStatePushSubParserTest:testPushSubParserOverflow((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),uint256) (runs: 2072, μ: 44670, ~: 44880) +LibParseStatePushSubParserTest:testPushSubParserZero((uint256,uint256,uint256,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes,bytes,bytes32[],uint256,bytes,bytes),address) (runs: 2072, μ: 15470, ~: 15468) LibParseUnclosedLeftParenTest:testParseUnclosedLeftParen() (gas: 48678) LibParseUnclosedLeftParenTest:testParseUnclosedLeftParenNested() (gas: 68700) LibParseUnclosedLeftParenTest:testParseUnclosedLeftParenNested2() (gas: 70248) LibParseUnclosedLeftParenTest:testParseUnclosedLeftParenNested3() (gas: 80148) LibParseUnclosedLeftParenTest:testParseUnclosedLeftParenNested4() (gas: 80013) -LibParseUnexpectedLHSTest:testParseUnexpectedLHSBadIgnoredTail(uint8) (runs: 2059, μ: 46790, ~: 46791) -LibParseUnexpectedLHSTest:testParseUnexpectedLHSBadNamedTail(uint8,bytes) (runs: 2061, μ: 52910, ~: 52956) +LibParseUnexpectedLHSTest:testParseUnexpectedLHSBadIgnoredTail(uint8) (runs: 2068, μ: 46790, ~: 46791) +LibParseUnexpectedLHSTest:testParseUnexpectedLHSBadNamedTail(uint8,bytes) (runs: 2072, μ: 52910, ~: 52956) LibParseUnexpectedLHSTest:testParseUnexpectedLHSEOF() (gas: 132631) LibParseUnexpectedLHSTest:testParseUnexpectedLHSEOL() (gas: 132654) -LibParseUnexpectedLHSTest:testParseUnexpectedLHSSingleChar(uint8) (runs: 2059, μ: 46382, ~: 46382) +LibParseUnexpectedLHSTest:testParseUnexpectedLHSSingleChar(uint8) (runs: 2068, μ: 46382, ~: 46382) LibParseUnexpectedLHSTest:testParseUnexpectedLHSUnderscoreTail() (gas: 134986) -LibParseUnexpectedRHSTest:testParseUnexpectedRHS(uint8) (runs: 2060, μ: 46615, ~: 46615) +LibParseUnexpectedRHSTest:testParseUnexpectedRHS(uint8) (runs: 2067, μ: 46615, ~: 46615) LibParseUnexpectedRHSTest:testParseUnexpectedRHSLeftParen() (gas: 46106) LibParseUnexpectedRightParenTest:testParseUnexpectedRightParen() (gas: 50722) LibParseUnexpectedRightParenTest:testParseUnexpectedRightParenNested() (gas: 56990) -LibSubParseSubParserExternTest:testLibSubParseSubParserExtern(address,uint8,uint8,uint8,uint16,uint8) (runs: 2061, μ: 13231, ~: 13163) -LibSubParseSubParserExternTest:testLibSubParseSubParserExternConstantsHeightOverflow(address,uint256,uint8,uint8,uint16,uint8) (runs: 2061, μ: 11433, ~: 11167) -RainterpreterExpressionDeployerDeployCheckTest:testRainterpreterExpressionDeployerDeployNoEIP1820() (gas: 8725386) -RainterpreterExpressionDeployerDescribedByMetaV1Test:testRainterpreterExpressionDeployerDescribedByMetaV1Happy() (gas: 8738515) -RainterpreterExpressionDeployerIERC165Test:testRainterpreterExpressionDeployerIERC165(bytes4) (runs: 2061, μ: 8732827, ~: 8732827) +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) RainterpreterExpressionDeployerMetaTest:testRainterpreterExpressionDeployerExpectedConstructionMetaHash() (gas: 6221) -RainterpreterIERC165Test:testRainterpreterIERC165(bytes4) (runs: 2061, μ: 3487956, ~: 3487956) -RainterpreterParserIERC165Test:testRainterpreterParserIERC165(bytes4) (runs: 2061, μ: 3547395, ~: 3547395) -RainterpreterParserParserPragma:testParsePragmaNoPragma() (gas: 17719326) -RainterpreterParserParserPragma:testParsePragmaSinglePragma() (gas: 10683338) -RainterpreterParserParserPragma:testParsePragmaWithInterstitial() (gas: 10686630) -RainterpreterParserPointersTest:testLiteralParserFunctionPointers() (gas: 3546401) -RainterpreterParserPointersTest:testOperandHandlerFunctionPointers() (gas: 3555149) -RainterpreterParserPointersTest:testParserParseMeta() (gas: 5194808) -RainterpreterPointersTest:testOpcodeFunctionPointers() (gas: 3495705) -RainterpreterReferenceExternContextRainlenTest:testRainterpreterReferenceExterNPE2ContextRainlenHappy() (gas: 2160790) -RainterpreterReferenceExternContextSenderTest:testRainterpreterReferenceExterNPE2ContextContractHappy() (gas: 2160375) -RainterpreterReferenceExternContextSenderTest:testRainterpreterReferenceExterNPE2ContextSenderHappy() (gas: 2159071) -RainterpreterReferenceExternDescribedByMetaV1:testRainterpreterReferenceExternDescribedByMetaV1Happy() (gas: 2081641) -RainterpreterReferenceExternIERC165Test:testRainterpreterReferenceExternIERC165(bytes4) (runs: 2061, μ: 2093899, ~: 2093899) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncHappySugared() (gas: 2184531) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncHappyUnsugared() (gas: 2178094) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncIntegrity(bytes32,uint256,uint256) (runs: 113, μ: 3597, ~: 3597) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncRun(bytes32,bytes32[]) (runs: 113, μ: 739607, ~: 753647) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncSubParseKnownWord(uint16,bytes1) (runs: 113, μ: 2095537, ~: 2095759) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncSubParseUnknownWord(uint16,bytes1,bytes) (runs: 100, μ: 2091863, ~: 2091662) -RainterpreterReferenceExternPointersTest:testIntegrityFunctionPointers() (gas: 2081736) -RainterpreterReferenceExternPointersTest:testOpcodeFunctionPointers() (gas: 2081779) -RainterpreterReferenceExternPointersTest:testSubParserFunctionPointers() (gas: 2082202) -RainterpreterReferenceExternPointersTest:testSubParserLiteralParsers() (gas: 2081756) -RainterpreterReferenceExternPointersTest:testSubParserOperandParsers() (gas: 2082229) +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) +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) +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) RainterpreterReferenceExternPointersTest:testSubParserParseMeta() (gas: 22017) -RainterpreterReferenceExternRepeatTest:testRainterpreterReferenceExternRepeatHappy() (gas: 2213082) -RainterpreterReferenceExternStackOperandTest:testRainterpreterReferenceExternStackOperandSingle(uint256) (runs: 2061, μ: 2168233, ~: 2168321) -RainterpreterReferenceExternUnknownWordTest:testRainterpreterReferenceExternUnknownWord() (gas: 2129396) -RainterpreterStateOverlayTest:testStateOverlayGet() (gas: 52416) -RainterpreterStateOverlayTest:testStateOverlaySet() (gas: 83156) -RainterpreterStoreIERC165Test:testRainterpreterStoreIERC165(bytes4) (runs: 2061, μ: 229923, ~: 229923) -RainterpreterStoreTest:testRainterpreterStoreSetGetDupes((uint256,bytes32[11])[]) (runs: 104, μ: 1610777, ~: 1605278) -RainterpreterStoreTest:testRainterpreterStoreSetGetNoDupesMany((uint256,bytes32[])[]) (runs: 113, μ: 3450711, ~: 3306760) -RainterpreterStoreTest:testRainterpreterStoreSetGetNoDupesSingle(uint256,bytes32[]) (runs: 113, μ: 1872440, ~: 1898212) -RainterpreterStoreTest:testRainterpreterStoreSetOddLength(uint256,bytes32[]) (runs: 109, μ: 249454, ~: 250199) +RainterpreterReferenceExternRepeatTest:testRainterpreterReferenceExternRepeatHappy() (gas: 2196267) +RainterpreterReferenceExternStackOperandTest:testRainterpreterReferenceExternStackOperandSingle(uint256) (runs: 2072, μ: 2151412, ~: 2151499) +RainterpreterReferenceExternUnknownWordTest:testRainterpreterReferenceExternUnknownWord() (gas: 2112574) +RainterpreterStateOverlayTest:testStateOverlayGet() (gas: 52423) +RainterpreterStateOverlayTest:testStateOverlaySet() (gas: 83162) +RainterpreterStoreIERC165Test:testRainterpreterStoreIERC165(bytes4) (runs: 2072, μ: 229923, ~: 229923) +RainterpreterStoreTest:testRainterpreterStoreSetGetDupes((uint256,bytes32[11])[]) (runs: 115, μ: 1617259, ~: 1605309) +RainterpreterStoreTest:testRainterpreterStoreSetGetNoDupesMany((uint256,bytes32[])[]) (runs: 124, μ: 3276432, ~: 3117561) +RainterpreterStoreTest:testRainterpreterStoreSetGetNoDupesSingle(uint256,bytes32[]) (runs: 124, μ: 1889276, ~: 1924733) +RainterpreterStoreTest:testRainterpreterStoreSetOddLength(uint256,bytes32[]) (runs: 114, μ: 249664, ~: 250353) RainterpreterTest:testRainterpreterOddFunctionPointersLength() (gas: 3696) \ No newline at end of file diff --git a/lib/rain.interpreter.interface b/lib/rain.interpreter.interface index 0c8a59369..78a0e5226 160000 --- a/lib/rain.interpreter.interface +++ b/lib/rain.interpreter.interface @@ -1 +1 @@ -Subproject commit 0c8a593691cec60714d87887cee0038b908b226f +Subproject commit 78a0e5226f78d69fcb0848e57a255b56fdaaf6f2 diff --git a/src/generated/Rainterpreter.pointers.sol b/src/generated/Rainterpreter.pointers.sol index 604bfd2e3..38a5a3561 100644 --- a/src/generated/Rainterpreter.pointers.sol +++ b/src/generated/Rainterpreter.pointers.sol @@ -10,11 +10,11 @@ pragma solidity =0.8.25; /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0x058f6e179954062975f1f516e5581e0e4250dc80b12ec528f963b42562314db8); +bytes32 constant BYTECODE_HASH = bytes32(0x12101f163b9f03997261cb8dbba0d24350308e2583d2456ffecf3761813ca62a); /// @dev The function pointers known to the interpreter for dynamic dispatch. /// By setting these as a constant they can be inlined into the interpreter /// and loaded at eval time for very low gas (~100) due to the compiler /// optimising it to a single `codecopy` to build the in memory bytes array. bytes constant OPCODE_FUNCTION_POINTERS = - hex"087508a708cb0a570b200b320b440b5d0b810bb50bc60bd70c790c980d560e060e8a0fcc10ff0d5611f812aa134c13c413d513e613e613f71462156d15ec160516191678169116aa16e3170e17271740178917b017c31825187318c1190f195d196b19b919dc1a2a1a5b1a9f1ac41ad21ae01b311b4a1b581ba61bd71c081c561c871cb81d061d331d561da41e9a"; + hex"087e08b008d40a600b290b3b0b4d0b660b8a0bbe0bcf0be00c820ca10d5f0e0f0e930fd511080d5f120112b3135513cd13de13ef13ef1400146b157615f5160e16221681169a16b316ec171717301749179217b917cc182e187c18ca19181966197419c219e519f31a411a721ab61adb1ae91af71b481b921ba01bee1c1f1c501c9e1ccf1d001d4e1d7b1d9e1dec1ee2"; diff --git a/src/generated/RainterpreterExpressionDeployer.pointers.sol b/src/generated/RainterpreterExpressionDeployer.pointers.sol index 347002a75..e9367ccc9 100644 --- a/src/generated/RainterpreterExpressionDeployer.pointers.sol +++ b/src/generated/RainterpreterExpressionDeployer.pointers.sol @@ -10,11 +10,11 @@ pragma solidity =0.8.25; /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0x1b5519183df0925de8b552daa52766a1d41087a630c1869dcbd656e9edacefb7); +bytes32 constant BYTECODE_HASH = bytes32(0xdb19c38314dcae4ac9574bf379a865e3a65fcc1e909ce729d5bd9ca320e2b02d); /// @dev The hash of the meta that describes the contract. -bytes32 constant DESCRIBED_BY_META_HASH = bytes32(0x6160988942c60333bd4c6f09f5ed3d93d5552c9052d9d2bcab6dccc418d0b791); +bytes32 constant DESCRIBED_BY_META_HASH = bytes32(0xb2500441a27ea683f814327be6e43c90f516b8f033203ad3e0ba2cde847fb0ba); /// @dev The function pointers for the integrity check fns. bytes constant INTEGRITY_FUNCTION_POINTERS = - hex"0ef00f6e0fd2114c11561156116011691184122a122a128612fe130b11561160130b115611601156115611561160114c114c114c114c1315133a135411561156131511561156130b116011561156130b130b114c135e135e135e135e135e1160135e11561378114c1160116011601160115611601160135e114c114c135e114c114c137811561160137811601354"; + hex"0ef80f760fda1154115e115e11681171118c12321232128e13061313115e11681313115e1168115e115e115e11681154115411541154131d1342135c115e115e131d115e115e13131168115e115e1313131311541366136613661366136611681366115e1168138011541168116811681168115e116811681366115411541366115411541380115e116813801168135c"; diff --git a/src/generated/RainterpreterParser.pointers.sol b/src/generated/RainterpreterParser.pointers.sol index 9edbadb0b..98fa3840f 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(0x914aa90ef2bb7b6068265b57a391e3d01a0683a84a1b9cdfb5622c0d4952ddaa); +bytes32 constant BYTECODE_HASH = bytes32(0x994bd986f9fbac0f25488fe3a5ea2c7d039d0f9465e2db37c9321a046a74ed8f); /// @dev The parse meta that is used to lookup word definitions. /// The structure of the parse meta is: @@ -29,7 +29,7 @@ bytes32 constant BYTECODE_HASH = bytes32(0x914aa90ef2bb7b6068265b57a391e3d01a068 /// bit count of the previous bloom filter. If we reach the end of the bloom /// filters then we have a miss. bytes constant PARSE_META = - hex"027360018812c0058112300804a1a02000120192e89864d17a6030788a0800310122000002000000000000000000000000000000000005000000000000000000000000253bfdf302d3ac012ac8268505b44edf36182f2a14690c630d83a7eb32c5853a08ccb48c3358350a1c21b6884398a6e5262057e32f7e09af17b433693838e9b4161b9cec2b5ab5e8394715a6243c910831738e093542f25d1e8a3fa7150113a32e22720213c659b9225ac7c1285da1bd45cc18770aa63c19048eb6fa018179d300dfb6a91fde8a882cb772ea03596d3111fd7ab9467b42922d4396834258726b1d2330703a94005b21f438852081752c40ff19581ac1a49e30ffeff03be1eec73c24bdfe2760978f232d6a9a09d520ad061480a0294c65fb344763440ecb8d4d0b8b587210e7c1b518e4b09907152b041261f729198ab9053df8942b1b45c1270f22a49a3fa6838c4460cc7c0c668e383e10da5037d6d3e341e7d2ff"; + hex"0288400100420b0280046b0641220186adb8a044003012020f2a880521281ac8811a000000400000000000000000000000000000000001000002000000000000000000310ea98a4210f9c54127bda61f6395ad119fb4a8085dbeaf35313e9e09b06d681cfe490634e21ac12783a6cc32d2d2123c22c3e0062f369e1e27267220a0a68d37357696465d217b161120881224f4a8242f1af52841f7290afa3e8640acf3d13b97e9fd00443a4543406bb547b9059d25a3cd1e0ed0c3260b15eb4d13fc94272d27bc4133af2cc23a1b8f6310ca9efe2a3ce35f140068482ec291e3295d68b1455f9a151db98c15239cd9c10c1f69823dc8d3844408d5792f3459d4182c9ff617a5b2cd15c003180df621af0f7ba34c26bb6c412cb066fb1b73563d0210215f3eaa563921098e690457fb180376e7520529b7c530f11de101fcc60522de7ddd193d3d6d2b96c37039cba287367b3af5384eee721aa809353f10da5007c52518"; /// @dev The build depth of the parser meta. @@ -39,11 +39,11 @@ uint8 constant PARSE_META_BUILD_DEPTH = 2; /// These positional indexes all map to the same indexes looked up in the parse /// meta. bytes constant OPERAND_HANDLER_FUNCTION_POINTERS = - hex"1ad51ad51ad51baa1cc11cc11cc11baa1baa1ad51ad51ad51cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11cc11ad51cc11cc1"; + hex"1add1add1add1bb21cc91cc91cc91bb21bb21add1add1add1cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91cc91add1cc91cc9"; /// @dev Every two bytes is a function pointer for a literal parser. /// Literal dispatches are determined by the first byte(s) of the literal /// rather than a full word lookup, and are done with simple conditional /// jumps as the possibilities are limited compared to the number of words we /// have. -bytes constant LITERAL_PARSER_FUNCTION_POINTERS = hex"161d184f18921930"; +bytes constant LITERAL_PARSER_FUNCTION_POINTERS = hex"16251857189a1938"; diff --git a/src/generated/RainterpreterReferenceExtern.pointers.sol b/src/generated/RainterpreterReferenceExtern.pointers.sol index 2e1fa0aa9..1a8028bdf 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(0x168110fff91a799133a1d57d94ae612b831f264a5b1853d89eba5d5154ebc941); +bytes32 constant BYTECODE_HASH = bytes32(0x921c56ace3b8670c36bba13dc2e7ae2b002283ebbb87947f147780114604ba73); /// @dev The hash of the meta that describes the contract. bytes32 constant DESCRIBED_BY_META_HASH = bytes32(0xadf71693c6ecf3fd560904bc46973d1b6e651440d15366673f9b3984749e7c16); diff --git a/src/lib/op/LibAllStandardOps.sol b/src/lib/op/LibAllStandardOps.sol index 186c6ae76..4bec84e1c 100644 --- a/src/lib/op/LibAllStandardOps.sol +++ b/src/lib/op/LibAllStandardOps.sol @@ -72,7 +72,7 @@ import {LibOpUint256Sub} from "./math/uint256/LibOpUint256Sub.sol"; import {LibOpAbs} from "./math/LibOpAbs.sol"; import {LibOpAdd} from "./math/LibOpAdd.sol"; import {LibOpAvg} from "./math/LibOpAvg.sol"; -// import {LibOpCeil} from "./math/LibOpCeil.sol"; +import {LibOpCeil} from "./math/LibOpCeil.sol"; import {LibOpMul} from "./math/LibOpMul.sol"; import {LibOpDiv} from "./math/LibOpDiv.sol"; import {LibOpE} from "./math/LibOpE.sol"; @@ -112,7 +112,7 @@ import {LibParseLiteralHex} from "../parse/literal/LibParseLiteralHex.sol"; import {LibParseLiteralSubParseable} from "../parse/literal/LibParseLiteralSubParseable.sol"; /// @dev Number of ops currently provided by `AllStandardOps`. -uint256 constant ALL_STANDARD_OPS_LENGTH = 71; +uint256 constant ALL_STANDARD_OPS_LENGTH = 72; /// @title LibAllStandardOps /// @notice Every opcode available from the core repository laid out as a single @@ -270,7 +270,7 @@ library LibAllStandardOps { AuthoringMetaV2("abs", "The absolute value of a number."), AuthoringMetaV2("add", "Adds all numbers together."), AuthoringMetaV2("avg", "Arithmetic average (mean) of two numbers."), - // AuthoringMetaV2("ceil", "Ceiling of a number."), + AuthoringMetaV2("ceil", "Ceiling of a number. Lowest integer greater than or equal to the number."), AuthoringMetaV2("div", "Divides the first number by all other numbers. Errors if any divisor is zero."), AuthoringMetaV2("e", "The mathematical constant e."), AuthoringMetaV2("exp", "Natural exponential e^x."), @@ -466,8 +466,8 @@ library LibAllStandardOps { LibParseOperand.handleOperandDisallowed, // avg LibParseOperand.handleOperandDisallowed, - // // ceil - // LibParseOperand.handleOperandDisallowed, + // ceil + LibParseOperand.handleOperandDisallowed, // div LibParseOperand.handleOperandDisallowed, // e @@ -601,7 +601,7 @@ library LibAllStandardOps { LibOpAbs.integrity, LibOpAdd.integrity, LibOpAvg.integrity, - // LibOpCeil.integrity, + LibOpCeil.integrity, LibOpDiv.integrity, LibOpE.integrity, LibOpExp.integrity, @@ -712,7 +712,7 @@ library LibAllStandardOps { LibOpAbs.run, LibOpAdd.run, LibOpAvg.run, - // LibOpCeil.run, + LibOpCeil.run, LibOpDiv.run, LibOpE.run, LibOpExp.run, diff --git a/src/lib/op/math/LibOpCeil.sol b/src/lib/op/math/LibOpCeil.sol index 57c26d143..e61ef7ecb 100644 --- a/src/lib/op/math/LibOpCeil.sol +++ b/src/lib/op/math/LibOpCeil.sol @@ -1,43 +1,47 @@ // SPDX-License-Identifier: CAL pragma solidity ^0.8.18; -// import {UD60x18, ceil} from "prb-math/UD60x18.sol"; -// import {OperandV2} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol"; -// import {Pointer} from "rain.solmem/lib/LibPointer.sol"; -// import {InterpreterState} from "../../state/LibInterpreterState.sol"; -// import {IntegrityCheckState} from "../../integrity/LibIntegrityCheck.sol"; +import {OperandV2, StackItem} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol"; +import {Pointer} from "rain.solmem/lib/LibPointer.sol"; +import {InterpreterState} from "../../state/LibInterpreterState.sol"; +import {IntegrityCheckState} from "../../integrity/LibIntegrityCheck.sol"; +import {Float, LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -// /// @title LibOpCeil -// /// @notice Opcode for the ceiling of an decimal 18 fixed point number. -// library LibOpCeil { -// function integrity(IntegrityCheckState memory, Operand) internal pure returns (uint256, uint256) { -// // There must be one inputs and one output. -// return (1, 1); -// } +/// @title LibOpCeil +/// @notice Opcode for the ceiling of a decimal floating point number. +library LibOpCeil { + using LibDecimalFloat for Float; -// /// ceil -// /// 18 decimal fixed point ceiling of a number. -// function run(InterpreterState memory, Operand, Pointer stackTop) internal pure returns (Pointer) { -// uint256 a; -// assembly ("memory-safe") { -// a := mload(stackTop) -// } -// a = UD60x18.unwrap(ceil(UD60x18.wrap(a))); + function integrity(IntegrityCheckState memory, OperandV2) internal pure returns (uint256, uint256) { + // There must be one input and one output. + return (1, 1); + } -// assembly ("memory-safe") { -// mstore(stackTop, a) -// } -// return stackTop; -// } + /// ceil + /// decimal floating point ceiling of a number. + function run(InterpreterState memory, OperandV2, Pointer stackTop) internal pure returns (Pointer) { + Float a; + assembly ("memory-safe") { + a := mload(stackTop) + } + a = a.ceil(); -// /// Gas intensive reference implementation of ceil for testing. -// function referenceFn(InterpreterState memory, Operand, uint256[] memory inputs) -// internal -// pure -// returns (uint256[] memory) -// { -// uint256[] memory outputs = new uint256[](1); -// outputs[0] = UD60x18.unwrap(ceil(UD60x18.wrap(inputs[0]))); -// return outputs; -// } -// } + assembly ("memory-safe") { + mstore(stackTop, a) + } + return stackTop; + } + + /// Gas intensive reference implementation of ceil for testing. + function referenceFn(InterpreterState memory, OperandV2, StackItem[] memory inputs) + internal + pure + returns (StackItem[] memory) + { + Float a = Float.wrap(StackItem.unwrap(inputs[0])); + a = a.ceil(); + StackItem[] memory outputs = new StackItem[](1); + outputs[0] = StackItem.wrap(Float.unwrap(a)); + return outputs; + } +} diff --git a/src/lib/op/math/LibOpHeadroom.sol b/src/lib/op/math/LibOpHeadroom.sol index b1cf5d4d7..63e352d1f 100644 --- a/src/lib/op/math/LibOpHeadroom.sol +++ b/src/lib/op/math/LibOpHeadroom.sol @@ -26,7 +26,10 @@ library LibOpHeadroom { assembly ("memory-safe") { a := mload(stackTop) } - a = LibDecimalFloat.FLOAT_ONE.sub(a.frac()); + a = a.ceil().sub(a); + if (a.isZero()) { + a = LibDecimalFloat.FLOAT_ONE; + } assembly ("memory-safe") { mstore(stackTop, a) @@ -42,10 +45,13 @@ library LibOpHeadroom { { // The headroom is 1 - frac(x). Float a = Float.wrap(StackItem.unwrap(inputs[0])); - Float headroom = LibDecimalFloat.FLOAT_ONE.sub(a.frac()); + a = a.ceil().sub(a); + if (a.isZero()) { + a = LibDecimalFloat.FLOAT_ONE; + } StackItem[] memory outputs = new StackItem[](1); - outputs[0] = StackItem.wrap(Float.unwrap(headroom)); + outputs[0] = StackItem.wrap(Float.unwrap(a)); return outputs; } } diff --git a/test/src/concrete/RainterpreterReferenceExtern.intInc.t.sol b/test/src/concrete/RainterpreterReferenceExtern.intInc.t.sol index 4fc7ebb19..a27584957 100644 --- a/test/src/concrete/RainterpreterReferenceExtern.intInc.t.sol +++ b/test/src/concrete/RainterpreterReferenceExtern.intInc.t.sol @@ -40,8 +40,8 @@ contract RainterpreterReferenceExternIntIncTest is OpTest { ); StackItem[] memory expectedStack = new StackItem[](3); - expectedStack[0] = StackItem.wrap(Float.unwrap(LibDecimalFloat.packLossless(4e37, -37))); - expectedStack[1] = StackItem.wrap(Float.unwrap(LibDecimalFloat.packLossless(3e37, -37))); + expectedStack[0] = StackItem.wrap(Float.unwrap(LibDecimalFloat.packLossless(4e66, -66))); + expectedStack[1] = StackItem.wrap(Float.unwrap(LibDecimalFloat.packLossless(3e66, -66))); expectedStack[2] = StackItem.wrap(EncodedExternDispatchV2.unwrap(encodedExternDispatch)); checkHappy( @@ -58,8 +58,8 @@ contract RainterpreterReferenceExternIntIncTest is OpTest { RainterpreterReferenceExtern extern = new RainterpreterReferenceExtern(); StackItem[] memory expectedStack = new StackItem[](2); - expectedStack[0] = StackItem.wrap(Float.unwrap(LibDecimalFloat.packLossless(4e37, -37))); - expectedStack[1] = StackItem.wrap(Float.unwrap(LibDecimalFloat.packLossless(3e37, -37))); + expectedStack[0] = StackItem.wrap(Float.unwrap(LibDecimalFloat.packLossless(4e66, -66))); + expectedStack[1] = StackItem.wrap(Float.unwrap(LibDecimalFloat.packLossless(3e66, -66))); checkHappy( bytes( diff --git a/test/src/lib/op/math/LibOpAdd.t.sol b/test/src/lib/op/math/LibOpAdd.t.sol index 359fed394..c3eeebbc2 100644 --- a/test/src/lib/op/math/LibOpAdd.t.sol +++ b/test/src/lib/op/math/LibOpAdd.t.sol @@ -98,12 +98,19 @@ contract LibOpAddTest is OpTest { } /// Test the eval of `add` opcode parsed from a string. Tests two inputs. - /// Tests the happy path where the addition does not overflow. function testOpAddEval2InputsHappy() external view { - checkHappy("_: add(5 6);", Float.unwrap(LibDecimalFloat.packLossless(11e37, -37)), "5 + 6"); + checkHappy("_: add(5 6);", Float.unwrap(LibDecimalFloat.packLossless(11e66, -66)), "5 + 6"); + checkHappy("_: add(6 5);", Float.unwrap(LibDecimalFloat.packLossless(11e66, -66)), "6 + 5"); + + checkHappy("_: add(-5 -6);", Float.unwrap(LibDecimalFloat.packLossless(-11e66, -66)), "-5 + -6"); + checkHappy("_: add(-6 -5);", Float.unwrap(LibDecimalFloat.packLossless(-11e66, -66)), "-6 + -5"); + + checkHappy("_: add(-5 6);", Float.unwrap(LibDecimalFloat.packLossless(1e67, -67)), "-5 + 6"); + checkHappy("_: add(6 -5);", Float.unwrap(LibDecimalFloat.packLossless(1e67, -67)), "6 + -5"); - checkHappy("_: add(5e-18 6e-18);", Float.unwrap(LibDecimalFloat.packLossless(11e37, -55)), "5e-18 + 6e-18"); - checkHappy("_: add(6e-18 5e-18);", Float.unwrap(LibDecimalFloat.packLossless(11e37, -55)), "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"); } /// Test the eval of `add` opcode parsed from a string. Tests two inputs. @@ -136,72 +143,54 @@ contract LibOpAddTest is OpTest { ); } - /// Test the eval of `add` opcode parsed from a string. Tests two inputs. - /// Tests the unhappy path where the addition does overflow. - function testOpAddEval2InputsUnhappy() external { - checkUnhappyOverflow("_: add(max-positive-value() 1e-18);", 13479973333575319897333507543509815336, 2147483677); - checkUnhappyOverflow("_: add(1e-18 max-positive-value());", 13479973333575319897333507543509815336, 2147483677); - } - /// Test the eval of `add` opcode parsed from a string. Tests three inputs. /// Tests the happy path where the addition does not overflow. function testOpAddEval3InputsHappy() external view { - checkHappy("_: add(5e-18 6e-18 7e-18);", Float.unwrap(LibDecimalFloat.packLossless(18e37, -55)), "5 + 6 + 7"); - checkHappy("_: add(6e-18 5e-18 7e-18);", Float.unwrap(LibDecimalFloat.packLossless(18e37, -55)), "6 + 5 + 7"); - checkHappy("_: add(7e-18 6e-18 5e-18);", Float.unwrap(LibDecimalFloat.packLossless(18e37, -55)), "7 + 6 + 5"); - checkHappy("_: add(5e-18 7e-18 6e-18);", Float.unwrap(LibDecimalFloat.packLossless(18e37, -55)), "5 + 7 + 6"); - checkHappy("_: add(7e-18 5e-18 6e-18);", Float.unwrap(LibDecimalFloat.packLossless(18e37, -55)), "7 + 5 + 6"); + checkHappy("_: add(5 6 7);", Float.unwrap(LibDecimalFloat.packLossless(18e65, -65)), "5 + 6 + 7"); + checkHappy("_: add(6 5 7);", Float.unwrap(LibDecimalFloat.packLossless(18e65, -65)), "6 + 5 + 7"); + 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"); } /// Test the eval of `add` opcode parsed from a string. Tests three inputs. /// Tests the unhappy path where the addition does overflow. function testOpAddEval3InputsUnhappy() external { - checkUnhappyOverflow( - "_: add(max-positive-value() 1e-18 1e-18);", 13479973333575319897333507543509815336, 2147483677 - ); - checkUnhappyOverflow( - "_: add(1e-18 max-positive-value() 1e-18);", 13479973333575319897333507543509815336, 2147483677 - ); - checkUnhappyOverflow( - "_: add(1e-18 1e-18 max-positive-value());", 13479973333575319897333507543509815336, 2147483677 - ); checkUnhappyOverflow( "_: add(max-positive-value() max-positive-value() 1e-18);", - 26959946667150639794667015087019630672, - 2147483677 + 2695994666715063979466701508701963067363714442254057248110361024921, + 2147483648 ); checkUnhappyOverflow( "_: add(max-positive-value() 1e-18 max-positive-value());", - 13479973333575319897333507543509815336, - 2147483677 + 2695994666715063979466701508701963067363714442254057248110361024921, + 2147483648 ); checkUnhappyOverflow( "_: add(1e-18 max-positive-value() max-positive-value());", - 13479973333575319897333507543509815336, - 2147483677 + 2695994666715063979466701508701963067363714442254057248110361024921, + 2147483648 ); checkUnhappyOverflow( "_: add(max-positive-value() max-positive-value() max-positive-value());", - 26959946667150639794667015087019630672, - 2147483677 - ); - checkUnhappyOverflow( - "_: add(max-positive-value() 1e-18 0);", 13479973333575319897333507543509815336, 2147483677 - ); - checkUnhappyOverflow( - "_: add(1e-18 max-positive-value() 0);", 13479973333575319897333507543509815336, 2147483677 - ); - checkUnhappyOverflow( - "_: add(1e-18 0 max-positive-value());", 13479973333575319897333507543509815336, 2147483677 + 2695994666715063979466701508701963067363714442254057248110361024921, + 2147483648 ); checkUnhappyOverflow( - "_: add(max-positive-value() max-positive-value() 0);", 26959946667150639794667015087019630672, 2147483677 + "_: add(max-positive-value() max-positive-value() 0);", + 2695994666715063979466701508701963067363714442254057248110361024921, + 2147483648 ); checkUnhappyOverflow( - "_: add(max-positive-value() 0 max-positive-value());", 26959946667150639794667015087019630672, 2147483677 + "_: add(max-positive-value() 0 max-positive-value());", + 2695994666715063979466701508701963067363714442254057248110361024921, + 2147483648 ); checkUnhappyOverflow( - "_: add(0 max-positive-value() max-positive-value());", 26959946667150639794667015087019630672, 2147483677 + "_: add(0 max-positive-value() max-positive-value());", + 2695994666715063979466701508701963067363714442254057248110361024921, + 2147483648 ); } diff --git a/test/src/lib/op/math/LibOpCeil.t.sol b/test/src/lib/op/math/LibOpCeil.t.sol index dc412de69..815cac44c 100644 --- a/test/src/lib/op/math/LibOpCeil.t.sol +++ b/test/src/lib/op/math/LibOpCeil.t.sol @@ -1,59 +1,78 @@ // SPDX-License-Identifier: CAL pragma solidity =0.8.25; -// import {OpTest, IntegrityCheckState, Operand, InterpreterState, UnexpectedOperand} from "test/abstract/OpTest.sol"; -// import {LibOpCeil} from "src/lib/op/math/LibOpCeil.sol"; -// import {LibOperand} from "test/lib/operand/LibOperand.sol"; - -// contract LibOpCeilTest is OpTest { -// /// Directly test the integrity logic of LibOpCeil. -// /// Inputs are always 1, outputs are always 1. -// function testOpCeilIntegrity(IntegrityCheckState memory state, Operand operand) external pure { -// (uint256 calcInputs, uint256 calcOutputs) = LibOpCeil.integrity(state, operand); -// assertEq(calcInputs, 1); -// assertEq(calcOutputs, 1); -// } - -// /// Directly test the runtime logic of LibOpCeil. -// function testOpCeilRun(uint256 a, uint16 operandData) public view { -// a = bound(a, 0, type(uint64).max - 1e18); -// InterpreterState memory state = opTestDefaultInterpreterState(); - -// Operand operand = LibOperand.build(1, 1, operandData); -// uint256[] memory inputs = new uint256[](1); -// inputs[0] = a; - -// opReferenceCheck(state, operand, LibOpCeil.referenceFn, LibOpCeil.integrity, LibOpCeil.run, inputs); -// } - -// /// Test the eval of `ceil`. -// function testOpCeilEval() external view { -// checkHappy("_: ceil(0);", 0, "0"); -// checkHappy("_: ceil(1);", 1e18, "1"); -// checkHappy("_: ceil(0.5);", 1e18, "0.5"); -// checkHappy("_: ceil(2);", 2e18, "2"); -// checkHappy("_: ceil(2.5);", 3e18, "2.5"); -// } - -// /// Test the eval of `ceil` for bad inputs. -// function testOpCeilZeroInputs() external { -// checkBadInputs("_: ceil();", 0, 1, 0); -// } - -// function testOpCeilTwoInputs() external { -// checkBadInputs("_: ceil(1 1);", 2, 1, 2); -// } - -// function testOpCeilZeroOutputs() external { -// checkBadOutputs(": ceil(1);", 1, 1, 0); -// } - -// function testOpCeilTwoOutputs() external { -// checkBadOutputs("_ _: ceil(1);", 1, 1, 2); -// } - -// /// Test that operand is disallowed. -// function testOpCeilEvalOperandDisallowed() external { -// checkUnhappyParse("_: ceil<0>(1);", abi.encodeWithSelector(UnexpectedOperand.selector)); -// } -// } +import {OpTest, IntegrityCheckState, OperandV2, InterpreterState, UnexpectedOperand} from "test/abstract/OpTest.sol"; +import {LibOpCeil} from "src/lib/op/math/LibOpCeil.sol"; +import {LibDecimalFloat, Float} from "rain.math.float/lib/LibDecimalFloat.sol"; +import {LibOperand} from "test/lib/operand/LibOperand.sol"; +import {StackItem} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol"; + +contract LibOpCeilTest is OpTest { + /// Directly test the integrity logic of LibOpCeil. + /// Inputs are always 1, outputs are always 1. + function testOpCeilIntegrity(IntegrityCheckState memory state, OperandV2 operand) external pure { + (uint256 calcInputs, uint256 calcOutputs) = LibOpCeil.integrity(state, operand); + assertEq(calcInputs, 1); + assertEq(calcOutputs, 1); + } + + /// Directly test the runtime logic of LibOpCeil. + function testOpCeilRun(Float a, uint16 operandData) public view { + InterpreterState memory state = opTestDefaultInterpreterState(); + + OperandV2 operand = LibOperand.build(1, 1, operandData); + StackItem[] memory inputs = new StackItem[](1); + inputs[0] = StackItem.wrap(Float.unwrap(a)); + + opReferenceCheck(state, operand, LibOpCeil.referenceFn, LibOpCeil.integrity, LibOpCeil.run, inputs); + } + + /// Test the eval of `ceil`. + function testOpCeilEval() external view { + checkHappy("_: ceil(0);", 0, "0"); + checkHappy("_: ceil(1);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "1"); + checkHappy("_: ceil(0.5);", Float.unwrap(LibDecimalFloat.packLossless(1e67, -67)), "0.5"); + checkHappy("_: ceil(2);", Float.unwrap(LibDecimalFloat.packLossless(2, 0)), "2"); + checkHappy("_: ceil(2.5);", Float.unwrap(LibDecimalFloat.packLossless(3e66, -66)), "2.5"); + + checkHappy("_: ceil(-1);", Float.unwrap(LibDecimalFloat.packLossless(-1, 0)), "-1"); + checkHappy("_: ceil(-1.1);", Float.unwrap(LibDecimalFloat.packLossless(-10, -1)), "-1.1"); + checkHappy("_: ceil(-0.5);", Float.unwrap(LibDecimalFloat.packLossless(0, -1)), "-0.5"); + checkHappy("_: ceil(-1.5);", Float.unwrap(LibDecimalFloat.packLossless(-10, -1)), "-1.5"); + checkHappy("_: ceil(-2);", Float.unwrap(LibDecimalFloat.packLossless(-2, 0)), "-2"); + checkHappy("_: ceil(-2.5);", Float.unwrap(LibDecimalFloat.packLossless(-20, -1)), "-2.5"); + + checkHappy( + "_: ceil(max-positive-value());", + Float.unwrap(LibDecimalFloat.packLossless(type(int224).max, type(int32).max)), + "max-positive-value" + ); + checkHappy( + "_: ceil(min-negative-value());", + Float.unwrap(LibDecimalFloat.packLossless(type(int224).min, type(int32).max)), + "min-negative-value" + ); + } + + /// Test the eval of `ceil` for bad inputs. + function testOpCeilZeroInputs() external { + checkBadInputs("_: ceil();", 0, 1, 0); + } + + function testOpCeilTwoInputs() external { + checkBadInputs("_: ceil(1 1);", 2, 1, 2); + } + + function testOpCeilZeroOutputs() external { + checkBadOutputs(": ceil(1);", 1, 1, 0); + } + + function testOpCeilTwoOutputs() external { + checkBadOutputs("_ _: ceil(1);", 1, 1, 2); + } + + /// Test that operand is disallowed. + function testOpCeilEvalOperandDisallowed() external { + checkUnhappyParse("_: ceil<0>(1);", abi.encodeWithSelector(UnexpectedOperand.selector)); + } +} diff --git a/test/src/lib/op/math/LibOpExp.t.sol b/test/src/lib/op/math/LibOpExp.t.sol index 7529fc2ad..53e84c0d8 100644 --- a/test/src/lib/op/math/LibOpExp.t.sol +++ b/test/src/lib/op/math/LibOpExp.t.sol @@ -41,22 +41,22 @@ contract LibOpExpTest is OpTest { checkHappy("_: exp(0);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "e^0"); checkHappy( "_: exp(1);", - Float.unwrap(LibDecimalFloat.packLossless(271828182845904523536028747135266249770000, -41)), + Float.unwrap(LibDecimalFloat.packLossless(2.7182818284590452353602874713526624977e66, -66)), "e^1" ); checkHappy( "_: exp(0.5);", - Float.unwrap(LibDecimalFloat.packLossless(164864091422952261768014373567633124880000, -41)), + Float.unwrap(LibDecimalFloat.packLossless(1.64864091422952261768014373567633124885e66, -66)), "e^0.5" ); checkHappy( "_: exp(2);", - Float.unwrap(LibDecimalFloat.packLossless(73901273138361809414411498854106499908000, -40)), + Float.unwrap(LibDecimalFloat.packLossless(7.3901273138361809414411498854106499908e66, -66)), "e^2" ); checkHappy( "_: exp(3);", - Float.unwrap(LibDecimalFloat.packLossless(200884548537713570608086241405798749310000, -40)), + Float.unwrap(LibDecimalFloat.packLossless(20.088454853771357060808624140579874931e65, -65)), "e^3" ); } diff --git a/test/src/lib/op/math/LibOpGm.t.sol b/test/src/lib/op/math/LibOpGm.t.sol index 4dfbeaa8e..627624dda 100644 --- a/test/src/lib/op/math/LibOpGm.t.sol +++ b/test/src/lib/op/math/LibOpGm.t.sol @@ -55,11 +55,7 @@ contract LibOpGmTest is OpTest { checkHappy("_: gm(1 2);", Float.unwrap(LibDecimalFloat.packLossless(1415, -3)), "1 2"); checkHappy("_: gm(2 2);", Float.unwrap(LibDecimalFloat.packLossless(2e3, -3)), "2 2"); checkHappy("_: gm(2 3);", Float.unwrap(LibDecimalFloat.packLossless(2450, -3)), "2 3"); - checkHappy( - "_: gm(2 4);", - Float.unwrap(LibDecimalFloat.packLossless(282850000000000000000000000000000000000000, -41)), - "2 4" - ); + checkHappy("_: gm(2 4);", Float.unwrap(LibDecimalFloat.packLossless(2.8285e66, -66)), "2 4"); checkHappy("_: gm(4 0.5);", Float.unwrap(LibDecimalFloat.packLossless(1415, -3)), "4 0.5"); } diff --git a/test/src/lib/op/math/LibOpHeadroom.t.sol b/test/src/lib/op/math/LibOpHeadroom.t.sol index 25ee4c0a1..38c5071c5 100644 --- a/test/src/lib/op/math/LibOpHeadroom.t.sol +++ b/test/src/lib/op/math/LibOpHeadroom.t.sol @@ -9,7 +9,7 @@ import {StackItem} from "rain.interpreter.interface/interface/unstable/IInterpre contract LibOpHeadroomTest is OpTest { /// Directly test the integrity logic of LibOpHeadroom. - /// Inputs are always 1, outputs are always 1. + /// Inputs is always 1, outputs is always 1. function testOpHeadroomIntegrity(IntegrityCheckState memory state, OperandV2 operand) external pure { (uint256 calcInputs, uint256 calcOutputs) = LibOpHeadroom.integrity(state, operand); assertEq(calcInputs, 1); @@ -31,18 +31,16 @@ contract LibOpHeadroomTest is OpTest { function testOpHeadroomEval() external view { checkHappy("_: headroom(0);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "0"); checkHappy("_: headroom(1);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "1"); - checkHappy( - "_: headroom(0.5);", - Float.unwrap(LibDecimalFloat.packLossless(50000000000000000000000000000000000000, -38)), - "0.5" - ); + checkHappy("_: headroom(0.5);", Float.unwrap(LibDecimalFloat.packLossless(5e66, -67)), "0.5"); checkHappy("_: headroom(2);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "2"); checkHappy("_: headroom(3);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "3"); - checkHappy( - "_: headroom(3.8);", - Float.unwrap(LibDecimalFloat.packLossless(20000000000000000000000000000000000000, -38)), - "3.8" - ); + checkHappy("_: headroom(3.8);", Float.unwrap(LibDecimalFloat.packLossless(2e66, -67)), "3.8"); + + checkHappy("_: headroom(-1);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "-1"); + checkHappy("_: headroom(-0.5);", Float.unwrap(LibDecimalFloat.packLossless(0.5e1, -1)), "-0.5"); + checkHappy("_: headroom(-2);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "-2"); + checkHappy("_: headroom(-3);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "-3"); + checkHappy("_: headroom(-3.8);", Float.unwrap(LibDecimalFloat.packLossless(0.8e67, -67)), "-3.8"); } /// Test the eval of `headroom` for bad inputs. diff --git a/test/src/lib/op/math/LibOpSub.t.sol b/test/src/lib/op/math/LibOpSub.t.sol index dd3730a45..dcb13f86d 100644 --- a/test/src/lib/op/math/LibOpSub.t.sol +++ b/test/src/lib/op/math/LibOpSub.t.sol @@ -41,42 +41,22 @@ contract LibOpSubTest is OpTest { assertEq(calcOutputs, 1); } - function _testOpSubRun(OperandV2 operand, StackItem[] memory inputs) external view { - InterpreterState memory state = opTestDefaultInterpreterState(); - opReferenceCheck(state, operand, LibOpSub.referenceFn, LibOpSub.integrity, LibOpSub.run, inputs); - } - /// Directly test the runtime logic of LibOpSub. - function testOpSubRun(StackItem[] memory inputs) external { + function testOpSubRun(StackItem[] memory inputs) external view { vm.assume(inputs.length >= 2); vm.assume(inputs.length <= 0x0F); OperandV2 operand = LibOperand.build(uint8(inputs.length), 1, 0); - uint256 overflows = 0; - (int256 signedCoefficientA, int256 exponentA) = LibDecimalFloat.unpack(Float.wrap(StackItem.unwrap(inputs[0]))); - if (int32(exponentA) != exponentA) { - overflows++; - } - - for (uint256 i = 1; i < inputs.length; i++) { - (int256 signedCoefficientB, int256 exponentB) = + for (uint256 i = 0; i < inputs.length; i++) { + (int256 signedCoefficient, int256 exponent) = LibDecimalFloat.unpack(Float.wrap(StackItem.unwrap(inputs[i]))); - if (int32(exponentB) != exponentB) { - overflows++; - } - - (signedCoefficientA, exponentA) = - LibDecimalFloatImplementation.sub(signedCoefficientA, exponentA, signedCoefficientB, exponentB); - if (int32(exponentA) != exponentA) { - overflows++; - } - } - - if (overflows > 0) { - vm.expectRevert(); + exponent = int256(bound(exponent, type(int32).min, type(int32).max / 2)); + inputs[i] = StackItem.wrap(Float.unwrap(LibDecimalFloat.packLossless(signedCoefficient, int32(exponent)))); } - this._testOpSubRun(operand, inputs); + opReferenceCheck( + opTestDefaultInterpreterState(), operand, LibOpSub.referenceFn, LibOpSub.integrity, LibOpSub.run, inputs + ); } /// Test the eval of `sub` opcode parsed from a string. Tests zero inputs. @@ -95,29 +75,35 @@ 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(0e37, -37)), "1 1"); - checkHappy("_: sub(2 1);", Float.unwrap(LibDecimalFloat.packLossless(1e37, -37)), "2 1"); - checkHappy("_: sub(2 2);", Float.unwrap(LibDecimalFloat.packLossless(0e37, -37)), "2 2"); + checkHappy("_: sub(1 1);", Float.unwrap(LibDecimalFloat.packLossless(0, -75)), "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(max-positive-value() 0);", Float.unwrap(LibDecimalFloat.packLossless(type(int224).max, type(int32).max)), "max-positive-value() 0" ); - checkHappy("_: sub(1 2);", Float.unwrap(LibDecimalFloat.packLossless(-1e37, -37)), "1 2"); - checkHappy("_: sub(1 0.1);", Float.unwrap(LibDecimalFloat.packLossless(9e37, -38)), "1 0.1"); + checkHappy("_: sub(1 2);", Float.unwrap(LibDecimalFloat.packLossless(-1e67, -67)), "1 2"); + checkHappy("_: sub(1 0.1);", Float.unwrap(LibDecimalFloat.packLossless(9e66, -67)), "1 0.1"); // Subtracting 1 from max value is still max value because floats. - // https://github.com/rainlanguage/rain.math.float/issues/74 - // checkHappy("_: sub(max-value() 1);", Float.unwrap(LibDecimalFloat.packLossless(type(int224).max, type(int32).max)), "max-value() 1"); - // https://github.com/rainlanguage/rain.math.float/issues/75 - // checkHappy("_: sub(max-value() max-value());", 0, "max-value() max-value()"); + checkHappy( + "_: sub(max-positive-value() 1);", + Float.unwrap(LibDecimalFloat.packLossless(type(int224).max, type(int32).max)), + "max-positive-value() 1" + ); + checkHappy( + "_: sub(max-positive-value() max-positive-value());", + Float.unwrap(LibDecimalFloat.packLossless(0, type(int32).max - 8)), + "max-positive-value() max-positive-value()" + ); } /// Test the eval of `sub` opcode parsed from a string. Tests three inputs. 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, -37)), "2 1 1"); + checkHappy("_: sub(2 1 1);", Float.unwrap(LibDecimalFloat.packLossless(0, -75)), "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/LibOpLinearGrowth.t.sol b/test/src/lib/op/math/growth/LibOpLinearGrowth.t.sol index 262c10759..8366decbd 100644 --- a/test/src/lib/op/math/growth/LibOpLinearGrowth.t.sol +++ b/test/src/lib/op/math/growth/LibOpLinearGrowth.t.sol @@ -54,22 +54,22 @@ contract LibOpLinearGrowthTest is OpTest { checkHappy("_: linear-growth(0 0.1 0);", 0, "0 0.1 0"); checkHappy("_: linear-growth(0 0.1 1);", Float.unwrap(LibDecimalFloat.packLossless(1, -1)), "0 0.1 1"); checkHappy("_: linear-growth(1 0.1 0);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "1 0.1 0"); - checkHappy("_: linear-growth(1 0.1 1);", Float.unwrap(LibDecimalFloat.packLossless(1.1e38, -38)), "1 0.1 1"); - checkHappy("_: linear-growth(1 0.1 2);", Float.unwrap(LibDecimalFloat.packLossless(1.2e38, -38)), "1 0.1 2"); + checkHappy("_: linear-growth(1 0.1 1);", Float.unwrap(LibDecimalFloat.packLossless(1.1e67, -67)), "1 0.1 1"); + checkHappy("_: linear-growth(1 0.1 2);", Float.unwrap(LibDecimalFloat.packLossless(1.2e67, -67)), "1 0.1 2"); checkHappy( - "_: linear-growth(1 0.1 2.5);", Float.unwrap(LibDecimalFloat.packLossless(1.25e38, -38)), "1 0.1 2.5" + "_: linear-growth(1 0.1 2.5);", Float.unwrap(LibDecimalFloat.packLossless(1.25e67, -67)), "1 0.1 2.5" ); checkHappy("_: linear-growth(1 0 2);", Float.unwrap(LibDecimalFloat.packLossless(1, 0)), "1 0 2"); checkHappy( - "_: linear-growth(1 0.1 0.5);", Float.unwrap(LibDecimalFloat.packLossless(1.05e39, -39)), "1 0.1 0.5" + "_: linear-growth(1 0.1 0.5);", Float.unwrap(LibDecimalFloat.packLossless(1.05e67, -67)), "1 0.1 0.5" ); checkHappy("_: linear-growth(2 0.1 0);", Float.unwrap(LibDecimalFloat.packLossless(2, 0)), "2 0.1 0"); - checkHappy("_: linear-growth(2 0.1 1);", Float.unwrap(LibDecimalFloat.packLossless(2.1e38, -38)), "2 0.1 1"); - checkHappy("_: linear-growth(2 0.1 2);", Float.unwrap(LibDecimalFloat.packLossless(2.2e38, -38)), "2 0.1 2"); + checkHappy("_: linear-growth(2 0.1 1);", Float.unwrap(LibDecimalFloat.packLossless(2.1e66, -66)), "2 0.1 1"); + checkHappy("_: linear-growth(2 0.1 2);", Float.unwrap(LibDecimalFloat.packLossless(2.2e66, -66)), "2 0.1 2"); - checkHappy("_: linear-growth(1 -0.1 1);", Float.unwrap(LibDecimalFloat.packLossless(0.9e38, -38)), "1 -0.1 1"); + checkHappy("_: linear-growth(1 -0.1 1);", Float.unwrap(LibDecimalFloat.packLossless(0.9e67, -67)), "1 -0.1 1"); checkHappy( - "_: linear-growth(-1 -0.1 2);", Float.unwrap(LibDecimalFloat.packLossless(-1.2e38, -38)), "-1 -0.1 2" + "_: linear-growth(-1 -0.1 2);", Float.unwrap(LibDecimalFloat.packLossless(-1.2e67, -67)), "-1 -0.1 2" ); }