diff --git a/.gas-snapshot b/.gas-snapshot index 9fb735dfa..c9ef6d9b2 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -1,484 +1,552 @@ BaseRainterpreterExternNPE2IERC165Test:testRainterpreterExternNPE2IERC165(bytes4) (runs: 2056, μ: 320946, ~: 320946) BaseRainterpreterSubParserNPE2IERC165Test:testRainterpreterSubParserNPE2IERC165(uint32) (runs: 2056, μ: 678755, ~: 678755) -LibAllStandardOpsTest:testIntegrityAndOpcodeFunctionPointersLength() (gas: 56819) -LibAllStandardOpsTest:testIntegrityFunctionPointersLength() (gas: 8939) -LibAllStandardOpsTest:testOpcodeFunctionPointersLength() (gas: 8924) -LibEvalFBoundsTest:testEvalNPFBoundsModConstant(bytes32) (runs: 2056, μ: 84797, ~: 84797) +LibAllStandardOpsTest:testIntegrityAndOpcodeFunctionPointersLength() (gas: 64147) +LibAllStandardOpsTest:testIntegrityFunctionPointersLength() (gas: 9731) +LibAllStandardOpsTest:testOpcodeFunctionPointersLength() (gas: 9716) +LibEvalFBoundsTest:testEvalNPFBoundsModConstant(bytes32) (runs: 2056, μ: 85591, ~: 85591) LibExternCodecTest:testLibExternCodecEncodeExternCall(uint256,bytes32) (runs: 2056, μ: 9770, ~: 10284) LibExternCodecTest:testLibExternCodecEncodeExternDispatch(uint256,bytes32) (runs: 2056, μ: 8887, ~: 9401) LibInterpreterStateStackTraceTest:testStackTraceCall(uint256,uint256,uint256[]) (runs: 2056, μ: 43052, ~: 42630) -LibOpAddTest:testOpAddEval2InputsHappy() (gas: 160672) -LibOpAddTest:testOpAddEval2InputsHappyZero() (gas: 57669) -LibOpAddTest:testOpAddEval2InputsHappyZeroMax() (gas: 102991) -LibOpAddTest:testOpAddEval2InputsHappyZeroOne() (gas: 198952) -LibOpAddTest:testOpAddEval2InputsUnhappy() (gas: 103133) -LibOpAddTest:testOpAddEval3InputsHappy() (gas: 309464) -LibOpAddTest:testOpAddEval3InputsUnhappy() (gas: 708702) -LibOpAddTest:testOpAddEvalOneInput() (gas: 36592) -LibOpAddTest:testOpAddEvalOperandDisallowed() (gas: 91501) -LibOpAddTest:testOpAddEvalTwoOutput() (gas: 43976) -LibOpAddTest:testOpAddEvalZeroInputs() (gas: 30212) -LibOpAddTest:testOpAddEvalZeroOutputs() (gas: 42994) -LibOpAddTest:testOpAddIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 18196, ~: 18365) +LibOpAddTest:testOpAddEval2InputsHappy() (gas: 160747) +LibOpAddTest:testOpAddEval2InputsHappyZero() (gas: 57694) +LibOpAddTest:testOpAddEval2InputsHappyZeroMax() (gas: 103041) +LibOpAddTest:testOpAddEval2InputsHappyZeroOne() (gas: 199052) +LibOpAddTest:testOpAddEval2InputsUnhappy() (gas: 103185) +LibOpAddTest:testOpAddEval3InputsHappy() (gas: 309589) +LibOpAddTest:testOpAddEval3InputsUnhappy() (gas: 709022) +LibOpAddTest:testOpAddEvalOneInput() (gas: 36611) +LibOpAddTest:testOpAddEvalOperandDisallowed() (gas: 91579) +LibOpAddTest:testOpAddEvalTwoOutput() (gas: 43995) +LibOpAddTest:testOpAddEvalZeroInputs() (gas: 30232) +LibOpAddTest:testOpAddEvalZeroOutputs() (gas: 43013) +LibOpAddTest:testOpAddIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 18199, ~: 18400) LibOpAddTest:testOpAddIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13867, ~: 13733) LibOpAddTest:testOpAddIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13864, ~: 13730) -LibOpAddTest:testOpAddRun(bytes32[]) (runs: 2050, μ: 52047, ~: 51930) -LibOpBinaryEqualToTest:testOpBinaryEqualToEval2() (gas: 207750) -LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsBothOne() (gas: 57822) -LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsFirstOneSecondZero() (gas: 58551) -LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsFirstZeroSecondOne() (gas: 58553) -LibOpBinaryEqualToTest:testOpBinaryEqualToEval2ZeroInputs() (gas: 57867) -LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail0Inputs() (gas: 30615) -LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail1Input() (gas: 34935) -LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail3Inputs() (gas: 43434) -LibOpBinaryEqualToTest:testOpBinaryEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19690, ~: 19928) +LibOpAddTest:testOpAddRun(bytes32[]) (runs: 2050, μ: 52080, ~: 52341) +LibOpAnyTest:testOpAnyEval1FalseInput() (gas: 51884) +LibOpAnyTest:testOpAnyEval1TrueInput() (gas: 51849) +LibOpAnyTest:testOpAnyEval2FalseInputs() (gas: 57169) +LibOpAnyTest:testOpAnyEval2MixedInputs() (gas: 57762) +LibOpAnyTest:testOpAnyEval2MixedInputs2() (gas: 57840) +LibOpAnyTest:testOpAnyEval2TrueInputs() (gas: 57783) +LibOpAnyTest:testOpAnyEvalFail() (gas: 29739) +LibOpAnyTest:testOpAnyIntegrityGas0() (gas: 3273) +LibOpAnyTest:testOpAnyIntegrityHappy(uint8,uint16) (runs: 2056, μ: 8298, ~: 8417) +LibOpAnyTest:testOpAnyIntegrityUnhappyZeroInputs() (gas: 4059) +LibOpAnyTest:testOpAnyRun(bytes32[],uint16) (runs: 2050, μ: 21711, ~: 21692) +LibOpAnyTest:testOpAnyRunGas0() (gas: 3342) +LibOpAnyTest:testOpAnyTwoOutputs() (gas: 35816) +LibOpAnyTest:testOpAnyZeroOutputs() (gas: 34786) +LibOpBinaryEqualToTest:testOpBinaryEqualToEval2() (gas: 207850) +LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsBothOne() (gas: 57847) +LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsFirstOneSecondZero() (gas: 58576) +LibOpBinaryEqualToTest:testOpBinaryEqualToEval2InputsFirstZeroSecondOne() (gas: 58578) +LibOpBinaryEqualToTest:testOpBinaryEqualToEval2ZeroInputs() (gas: 57892) +LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail0Inputs() (gas: 30635) +LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail1Input() (gas: 34954) +LibOpBinaryEqualToTest:testOpBinaryEqualToEvalFail3Inputs() (gas: 43452) +LibOpBinaryEqualToTest:testOpBinaryEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19691, ~: 19895) LibOpBinaryEqualToTest:testOpBinaryEqualToRun(bytes32,bytes32) (runs: 2056, μ: 16674, ~: 16674) -LibOpBinaryEqualToTest:testOpBinaryEqualToTwoOutputs() (gas: 41593) -LibOpBinaryEqualToTest:testOpBinaryEqualToZeroOutputs() (gas: 40524) -LibOpBitwiseAndNPTest:testOpBitwiseAndNPEvalHappy() (gas: 719611) +LibOpBinaryEqualToTest:testOpBinaryEqualToTwoOutputs() (gas: 41612) +LibOpBinaryEqualToTest:testOpBinaryEqualToZeroOutputs() (gas: 40543) +LibOpBitwiseAndNPTest:testOpBitwiseAndNPEvalHappy() (gas: 720011) LibOpBitwiseAndNPTest:testOpBitwiseAndNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2056, μ: 13747, ~: 13661) LibOpBitwiseAndNPTest:testOpBitwiseAndNPRun(bytes32,bytes32) (runs: 2056, μ: 16671, ~: 16671) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalBadOperand() (gas: 18200) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalOneInput() (gas: 35749) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalThreeInputs() (gas: 45518) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalTwoOutputs() (gas: 41322) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalZeroInputs() (gas: 30771) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalZeroOutputs() (gas: 40296) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEval() (gas: 718317) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalBadOperand() (gas: 18141) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalOneInput() (gas: 35690) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalThreeInputs() (gas: 45416) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalTwoOutputs() (gas: 41240) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalZeroInputs() (gas: 30668) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalZeroOutputs() (gas: 40237) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalBadOperand() (gas: 18213) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalOneInput() (gas: 35768) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalThreeInputs() (gas: 45537) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalTwoOutputs() (gas: 41341) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalZeroInputs() (gas: 30791) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalZeroOutputs() (gas: 40315) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEval() (gas: 718717) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalBadOperand() (gas: 18154) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalOneInput() (gas: 35709) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalThreeInputs() (gas: 45435) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalTwoOutputs() (gas: 41259) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalZeroInputs() (gas: 30688) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalZeroOutputs() (gas: 40256) LibOpBitwiseOrNPTest:testOpBitwiseORNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2056, μ: 13746, ~: 13660) LibOpBitwiseOrNPTest:testOpBitwiseORNPRun(bytes32,bytes32) (runs: 2056, μ: 16628, ~: 16628) -LibOpBlockNumberTest:testOpBlockNumberEval(uint256) (runs: 2056, μ: 50948, ~: 50726) -LibOpBlockNumberTest:testOpBlockNumberEvalOneInput() (gas: 35162) -LibOpBlockNumberTest:testOpBlockNumberEvalTwoOutputs() (gas: 31463) -LibOpBlockNumberTest:testOpBlockNumberEvalZeroOutputs() (gas: 30454) -LibOpBlockNumberTest:testOpBlockNumberIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19654, ~: 19877) -LibOpBlockNumberTest:testOpBlockNumberRun(uint256,uint16) (runs: 2056, μ: 20850, ~: 21044) -LibOpCallTest:testCallTraceInnerOnly() (gas: 62979) -LibOpCallTest:testCallTraceOuterOnly() (gas: 45549) -LibOpCallTest:testOpCallNPIntegrityIO((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2055, μ: 39979, ~: 38553) -LibOpCallTest:testOpCallNPIntegritySourceIndexOutOfBounds((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint256,uint256,bytes32) (runs: 2056, μ: 59223, ~: 59108) -LibOpCallTest:testOpCallNPIntegrityTooManyOutputs((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2051, μ: 58975, ~: 59518) -LibOpCallTest:testOpCallNPRunInputsMismatch() (gas: 71893) -LibOpCallTest:testOpCallNPRunOutputsMismatch() (gas: 65508) -LibOpCallTest:testOpCallNPRunSourceDoesNotExist() (gas: 350425) -LibOpChainIdTest:testOpChainIDEval(uint64) (runs: 2056, μ: 47017, ~: 47017) -LibOpChainIdTest:testOpChainIDIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19676, ~: 19886) -LibOpChainIdTest:testOpChainIdEvalFail() (gas: 34336) +LibOpBlockNumberTest:testOpBlockNumberEval(uint256) (runs: 2056, μ: 50976, ~: 50751) +LibOpBlockNumberTest:testOpBlockNumberEvalOneInput() (gas: 35181) +LibOpBlockNumberTest:testOpBlockNumberEvalTwoOutputs() (gas: 31483) +LibOpBlockNumberTest:testOpBlockNumberEvalZeroOutputs() (gas: 30474) +LibOpBlockNumberTest:testOpBlockNumberIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19645, ~: 19915) +LibOpBlockNumberTest:testOpBlockNumberRun(uint256,uint16) (runs: 2056, μ: 20848, ~: 21044) +LibOpCallTest:testCallTraceInnerOnly() (gas: 63004) +LibOpCallTest:testCallTraceOuterOnly() (gas: 45575) +LibOpCallTest:testOpCallNPIntegrityIO((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2053, μ: 39841, ~: 38563) +LibOpCallTest:testOpCallNPIntegritySourceIndexOutOfBounds((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint256,uint256,bytes32) (runs: 2056, μ: 59177, ~: 58399) +LibOpCallTest:testOpCallNPIntegrityTooManyOutputs((uint256,uint256,uint256,bytes32[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2050, μ: 59084, ~: 59092) +LibOpCallTest:testOpCallNPRunInputsMismatch() (gas: 71912) +LibOpCallTest:testOpCallNPRunOutputsMismatch() (gas: 65527) +LibOpCallTest:testOpCallNPRunSourceDoesNotExist() (gas: 350615) +LibOpChainIdTest:testOpChainIDEval(uint64) (runs: 2056, μ: 47042, ~: 47042) +LibOpChainIdTest:testOpChainIDIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19679, ~: 19925) +LibOpChainIdTest:testOpChainIdEvalFail() (gas: 34355) LibOpChainIdTest:testOpChainIdRun(uint64,uint16) (runs: 2056, μ: 17123, ~: 17123) -LibOpChainIdTest:testOpChainIdTwoOutputs() (gas: 31140) -LibOpChainIdTest:testOpChainIdZeroOutputs() (gas: 30089) -LibOpConstantTest:testOpConstantEvalNPE2E() (gas: 56065) -LibOpConstantTest:testOpConstantEvalZeroConstants() (gas: 41509) -LibOpConstantTest:testOpConstantNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2056, μ: 19195, ~: 19098) -LibOpConstantTest:testOpConstantNPIntegrityOOBConstants((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2056, μ: 40163, ~: 39805) -LibOpConstantTest:testOpConstantNPMultipleOutputErrorSugared() (gas: 31648) -LibOpConstantTest:testOpConstantNPMultipleOutputErrorUnsugared() (gas: 41588) -LibOpConstantTest:testOpConstantNPRun(bytes32[],uint16) (runs: 2056, μ: 52448, ~: 51854) -LibOpConstantTest:testOpConstantNPZeroOutputErrorSugared() (gas: 30264) -LibOpConstantTest:testOpConstantNPZeroOutputErrorUnsugared() (gas: 40216) -LibOpContextNPTest:testOpContextNPEval00(bytes32[][]) (runs: 108, μ: 6495316, ~: 5266230) -LibOpContextNPTest:testOpContextNPEval01(bytes32[][]) (runs: 108, μ: 6521703, ~: 5266411) -LibOpContextNPTest:testOpContextNPEval10(bytes32[][]) (runs: 108, μ: 6495460, ~: 5266374) -LibOpContextNPTest:testOpContextNPEval11(bytes32[][]) (runs: 108, μ: 6482299, ~: 5151897) -LibOpContextNPTest:testOpContextNPEvalOOBi(bytes32[]) (runs: 108, μ: 75053, ~: 72740) -LibOpContextNPTest:testOpContextNPEvalOOBj(bytes32) (runs: 2056, μ: 48210, ~: 48210) +LibOpChainIdTest:testOpChainIdTwoOutputs() (gas: 31160) +LibOpChainIdTest:testOpChainIdZeroOutputs() (gas: 30109) +LibOpConstantTest:testOpConstantEvalNPE2E() (gas: 56090) +LibOpConstantTest:testOpConstantEvalZeroConstants() (gas: 41528) +LibOpConstantTest:testOpConstantNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2056, μ: 19193, ~: 19095) +LibOpConstantTest:testOpConstantNPIntegrityOOBConstants((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2056, μ: 40153, ~: 39809) +LibOpConstantTest:testOpConstantNPMultipleOutputErrorSugared() (gas: 31667) +LibOpConstantTest:testOpConstantNPMultipleOutputErrorUnsugared() (gas: 41607) +LibOpConstantTest:testOpConstantNPRun(bytes32[],uint16) (runs: 2056, μ: 52452, ~: 51854) +LibOpConstantTest:testOpConstantNPZeroOutputErrorSugared() (gas: 30283) +LibOpConstantTest:testOpConstantNPZeroOutputErrorUnsugared() (gas: 40235) +LibOpContextNPTest:testOpContextNPEval00(bytes32[][]) (runs: 108, μ: 6495399, ~: 5266310) +LibOpContextNPTest:testOpContextNPEval01(bytes32[][]) (runs: 108, μ: 6521787, ~: 5266491) +LibOpContextNPTest:testOpContextNPEval10(bytes32[][]) (runs: 108, μ: 6495543, ~: 5266454) +LibOpContextNPTest:testOpContextNPEval11(bytes32[][]) (runs: 108, μ: 6482383, ~: 5151976) +LibOpContextNPTest:testOpContextNPEvalOOBi(bytes32[]) (runs: 108, μ: 75078, ~: 72765) +LibOpContextNPTest:testOpContextNPEvalOOBj(bytes32) (runs: 2056, μ: 48236, ~: 48236) LibOpContextNPTest:testOpContextNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2056, μ: 14498, ~: 14412) -LibOpContextNPTest:testOpContextNPOneInput() (gas: 41587) -LibOpContextNPTest:testOpContextNPRun(bytes32[][],uint256,uint256) (runs: 108, μ: 10222915, ~: 7383135) -LibOpContextNPTest:testOpContextNPRunOOBi(bytes32[][],uint256,uint256) (runs: 108, μ: 10571998, ~: 7923969) -LibOpContextNPTest:testOpContextNPRunOOBj(bytes32[][],uint256,uint256) (runs: 108, μ: 10581009, ~: 7924884) -LibOpContextNPTest:testOpContextNPTwoInputs() (gas: 46451) -LibOpContextNPTest:testOpContextNPTwoOutputs() (gas: 37255) -LibOpContextNPTest:testOpContextNPZeroOutputs() (gas: 36203) -LibOpCtPopNPTest:testOpCtPopNPEval(bytes32) (runs: 2056, μ: 74567, ~: 85264) +LibOpContextNPTest:testOpContextNPOneInput() (gas: 41606) +LibOpContextNPTest:testOpContextNPRun(bytes32[][],uint256,uint256) (runs: 108, μ: 10187363, ~: 7383211) +LibOpContextNPTest:testOpContextNPRunOOBi(bytes32[][],uint256,uint256) (runs: 108, μ: 10571982, ~: 7923969) +LibOpContextNPTest:testOpContextNPRunOOBj(bytes32[][],uint256,uint256) (runs: 108, μ: 10581006, ~: 7924884) +LibOpContextNPTest:testOpContextNPTwoInputs() (gas: 46470) +LibOpContextNPTest:testOpContextNPTwoOutputs() (gas: 37275) +LibOpContextNPTest:testOpContextNPZeroOutputs() (gas: 36223) +LibOpCtPopNPTest:testOpCtPopNPEval(bytes32) (runs: 2056, μ: 74343, ~: 85263) LibOpCtPopNPTest:testOpCtPopNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2056, μ: 13745, ~: 13659) LibOpCtPopNPTest:testOpCtPopNPRun(bytes32) (runs: 2056, μ: 16698, ~: 16698) -LibOpCtPopNPTest:testOpCtPopNPTwoInputs() (gas: 41134) -LibOpCtPopNPTest:testOpCtPopNPTwoOutputs() (gas: 37006) -LibOpCtPopNPTest:testOpCtPopNPZeroInputs() (gas: 31270) -LibOpCtPopNPTest:testOpCtPopNPZeroOutputs() (gas: 35955) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalHappy() (gas: 835295) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalTwoInputs() (gas: 46963) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalTwoOutputs() (gas: 42815) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalZeroInputs() (gas: 37145) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalZeroOutputs() (gas: 41762) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8,uint8) (runs: 2056, μ: 22125, ~: 22237) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFail((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2056, μ: 41489, ~: 41536) +LibOpCtPopNPTest:testOpCtPopNPTwoInputs() (gas: 41153) +LibOpCtPopNPTest:testOpCtPopNPTwoOutputs() (gas: 37025) +LibOpCtPopNPTest:testOpCtPopNPZeroInputs() (gas: 31290) +LibOpCtPopNPTest:testOpCtPopNPZeroOutputs() (gas: 35974) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalHappy() (gas: 835758) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalTwoInputs() (gas: 46982) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalTwoOutputs() (gas: 42834) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalZeroInputs() (gas: 37165) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalZeroOutputs() (gas: 41781) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8,uint8) (runs: 2056, μ: 22135, ~: 22237) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFail((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2056, μ: 41496, ~: 41549) LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFailZeroLength((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2056, μ: 35684, ~: 35423) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPRun(bytes32,uint8,uint8) (runs: 2056, μ: 21003, ~: 20814) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPRun(bytes32,uint8,uint8) (runs: 2056, μ: 21008, ~: 20814) LibOpDivTest:testDebugOpDivRun() (gas: 13482) -LibOpDivTest:testOpDivEvalOneInput() (gas: 126303) -LibOpDivTest:testOpDivEvalOperandsDisallowed() (gas: 91477) -LibOpDivTest:testOpDivEvalThreeInputsHappy() (gas: 337335) -LibOpDivTest:testOpDivEvalThreeInputsUnhappy() (gas: 211898) -LibOpDivTest:testOpDivEvalThreeInputsUnhappyOverflow() (gas: 63004) -LibOpDivTest:testOpDivEvalTwoInputsHappy() (gas: 295717) -LibOpDivTest:testOpDivEvalTwoInputsUnhappy() (gas: 143613) -LibOpDivTest:testOpDivEvalTwoInputsUnhappyOverflow() (gas: 56399) -LibOpDivTest:testOpDivEvalTwoOutputs() (gas: 41216) -LibOpDivTest:testOpDivEvalZeroInputs() (gas: 30168) -LibOpDivTest:testOpDivEvalZeroOutputs() (gas: 40212) -LibOpDivTest:testOpDivIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 18248, ~: 18486) +LibOpDivTest:testOpDivEvalOneInput() (gas: 126380) +LibOpDivTest:testOpDivEvalOperandsDisallowed() (gas: 91555) +LibOpDivTest:testOpDivEvalThreeInputsHappy() (gas: 337489) +LibOpDivTest:testOpDivEvalThreeInputsUnhappy() (gas: 212000) +LibOpDivTest:testOpDivEvalThreeInputsUnhappyOverflow() (gas: 63029) +LibOpDivTest:testOpDivEvalTwoInputsHappy() (gas: 295867) +LibOpDivTest:testOpDivEvalTwoInputsUnhappy() (gas: 143688) +LibOpDivTest:testOpDivEvalTwoInputsUnhappyOverflow() (gas: 56425) +LibOpDivTest:testOpDivEvalTwoOutputs() (gas: 41235) +LibOpDivTest:testOpDivEvalZeroInputs() (gas: 30188) +LibOpDivTest:testOpDivEvalZeroOutputs() (gas: 40231) +LibOpDivTest:testOpDivIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 18249, ~: 18416) LibOpDivTest:testOpDivIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13820, ~: 13686) LibOpDivTest:testOpDivIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13843, ~: 13709) -LibOpDivTest:testOpDivRun(bytes32[]) (runs: 2050, μ: 37491, ~: 33511) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalFourInputs() (gas: 55846) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalHappy(uint256,uint8) (runs: 2056, μ: 72130, ~: 72039) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalOneInput() (gas: 37102) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalOperandDisallowed() (gas: 18606) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalTwoInputs() (gas: 43633) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalTwoOutputs() (gas: 50665) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalZeroInputs() (gas: 31108) -LibOpERC20AllowanceTest:testOpERC20AllowanceEvalZeroOutputs() (gas: 49641) +LibOpDivTest:testOpDivRun(bytes32[]) (runs: 2050, μ: 37805, ~: 33720) +LibOpERC20AllowanceTest:testOpERC20AllowanceEvalFourInputs() (gas: 55865) +LibOpERC20AllowanceTest:testOpERC20AllowanceEvalHappy(uint256,uint8) (runs: 2056, μ: 72156, ~: 72065) +LibOpERC20AllowanceTest:testOpERC20AllowanceEvalOneInput() (gas: 37121) +LibOpERC20AllowanceTest:testOpERC20AllowanceEvalOperandDisallowed() (gas: 18618) +LibOpERC20AllowanceTest:testOpERC20AllowanceEvalTwoInputs() (gas: 43652) +LibOpERC20AllowanceTest:testOpERC20AllowanceEvalTwoOutputs() (gas: 50684) +LibOpERC20AllowanceTest:testOpERC20AllowanceEvalZeroInputs() (gas: 31128) +LibOpERC20AllowanceTest:testOpERC20AllowanceEvalZeroOutputs() (gas: 49660) LibOpERC20AllowanceTest:testOpERC20AllowanceIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2056, μ: 13709, ~: 13623) -LibOpERC20AllowanceTest:testOpERC20AllowanceRun(address,address,address,uint256,uint8) (runs: 2055, μ: 27668, ~: 27579) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalHappy(uint256,uint8) (runs: 2053, μ: 66052, ~: 66052) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalOneInput() (gas: 37207) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalOperandDisallowed() (gas: 18664) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalOverflow(uint256,uint8) (runs: 2049, μ: 62325, ~: 62325) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalThreeInputs() (gas: 49534) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalTwoOutputs() (gas: 44403) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroInputs() (gas: 31167) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroOutputs() (gas: 43335) +LibOpERC20AllowanceTest:testOpERC20AllowanceRun(address,address,address,uint256,uint8) (runs: 2056, μ: 27672, ~: 27579) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalHappy(uint256,uint8) (runs: 2053, μ: 66077, ~: 66077) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalOneInput() (gas: 37226) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalOperandDisallowed() (gas: 18676) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalOverflow(uint256,uint8) (runs: 2049, μ: 62350, ~: 62350) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalThreeInputs() (gas: 49553) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalTwoOutputs() (gas: 44422) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroInputs() (gas: 31187) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroOutputs() (gas: 43354) LibOpERC20BalanceOfTest:testOpERC20BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2056, μ: 13688, ~: 13602) LibOpERC20BalanceOfTest:testOpERC20BalanceOfRun(address,address,uint256,uint16,uint8) (runs: 2055, μ: 28009, ~: 28009) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalHappy(uint256,uint8) (runs: 2053, μ: 59221, ~: 59221) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalOperandDisallowed() (gas: 18827) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalOverflow(uint256,uint8) (runs: 2049, μ: 55461, ~: 55461) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoInputs() (gas: 43855) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoOutputs() (gas: 38217) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroInputs() (gas: 31350) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroOutputs() (gas: 37189) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalHappy(uint256,uint8) (runs: 2053, μ: 59245, ~: 59245) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalOperandDisallowed() (gas: 18839) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalOverflow(uint256,uint8) (runs: 2049, μ: 55485, ~: 55485) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoInputs() (gas: 43874) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoOutputs() (gas: 38235) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroInputs() (gas: 31370) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroOutputs() (gas: 37207) LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2056, μ: 13732, ~: 13646) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPRun(address,uint256,uint16,uint8) (runs: 2053, μ: 27211, ~: 27211) -LibOpERC5313OwnerTest:testOpERC5313OwnerEvalHappy() (gas: 55241) -LibOpERC5313OwnerTest:testOpERC5313OwnerEvalOperandDisallowed() (gas: 18344) -LibOpERC5313OwnerTest:testOpERC5313OwnerEvalTwoInputs() (gas: 43451) -LibOpERC5313OwnerTest:testOpERC5313OwnerEvalTwoOutputs() (gas: 37654) -LibOpERC5313OwnerTest:testOpERC5313OwnerEvalZeroInputs() (gas: 30944) -LibOpERC5313OwnerTest:testOpERC5313OwnerEvalZeroOutputs() (gas: 36625) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPRun(address,uint256,uint16,uint8) (runs: 2054, μ: 27211, ~: 27211) +LibOpERC5313OwnerTest:testOpERC5313OwnerEvalHappy() (gas: 55267) +LibOpERC5313OwnerTest:testOpERC5313OwnerEvalOperandDisallowed() (gas: 18357) +LibOpERC5313OwnerTest:testOpERC5313OwnerEvalTwoInputs() (gas: 43470) +LibOpERC5313OwnerTest:testOpERC5313OwnerEvalTwoOutputs() (gas: 37673) +LibOpERC5313OwnerTest:testOpERC5313OwnerEvalZeroInputs() (gas: 30964) +LibOpERC5313OwnerTest:testOpERC5313OwnerEvalZeroOutputs() (gas: 36644) LibOpERC5313OwnerTest:testOpERC5313OwnerOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2056, μ: 13749, ~: 13663) LibOpERC5313OwnerTest:testOpERC5313OwnerOfRun(address,address,uint16) (runs: 2056, μ: 23615, ~: 23615) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfEvalHappy(address,address,uint256) (runs: 2055, μ: 105319, ~: 105489) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19663, ~: 19911) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail0() (gas: 30811) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail1() (gas: 35101) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail3() (gas: 44535) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFailOperand() (gas: 21548) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfOneInput() (gas: 35568) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfRun(address,address,uint256,uint16) (runs: 2055, μ: 26008, ~: 26008) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfThreeInputs() (gas: 45055) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfTwoOutputs() (gas: 41062) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfZeroInputs() (gas: 31245) -LibOpERC721BalanceOfTest:testOpERC721BalanceOfZeroOutputs() (gas: 39879) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail0() (gas: 30694) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail1() (gas: 34982) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail3() (gas: 44471) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFailOperand() (gas: 18197) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalHappy(address,uint256,address) (runs: 2055, μ: 96521, ~: 92477) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalOneInput() (gas: 35440) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalThreeInputs() (gas: 44936) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalZeroInputs() (gas: 31141) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalZeroOutputs() (gas: 39730) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfEvalHappy(address,address,uint256) (runs: 2054, μ: 105333, ~: 105488) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19655, ~: 19930) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail0() (gas: 30831) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail1() (gas: 35120) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail3() (gas: 44554) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFailOperand() (gas: 21560) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfOneInput() (gas: 35587) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfRun(address,address,uint256,uint16) (runs: 2054, μ: 26008, ~: 26008) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfThreeInputs() (gas: 45074) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfTwoOutputs() (gas: 41081) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfZeroInputs() (gas: 31265) +LibOpERC721BalanceOfTest:testOpERC721BalanceOfZeroOutputs() (gas: 39898) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail0() (gas: 30714) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail1() (gas: 35001) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail3() (gas: 44490) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFailOperand() (gas: 18209) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalHappy(address,uint256,address) (runs: 2056, μ: 96500, ~: 92464) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalOneInput() (gas: 35459) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalThreeInputs() (gas: 44955) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalZeroInputs() (gas: 31161) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalZeroOutputs() (gas: 39749) LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2056, μ: 13762, ~: 13698) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPRun(address,bytes32,address,uint16) (runs: 2055, μ: 24201, ~: 24201) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPTwoOutputs() (gas: 40776) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalHappy() (gas: 832520) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalOneInput() (gas: 42038) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalThreeInputs() (gas: 51785) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalTwoOutputs() (gas: 47611) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalZeroInputs() (gas: 37059) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalZeroOutputs() (gas: 46607) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2056, μ: 18145, ~: 18144) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFail((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2056, μ: 41695, ~: 41753) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPRun(address,bytes32,address,uint16) (runs: 2056, μ: 24201, ~: 24201) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPTwoOutputs() (gas: 40795) +LibOpETest:testOpEEval() (gas: 44599) +LibOpETest:testOpEEvalOneInput() (gas: 34267) +LibOpETest:testOpEEvalTwoOutputs() (gas: 30635) +LibOpETest:testOpEEvalZeroOutputs() (gas: 29584) +LibOpETest:testOpEIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19691, ~: 19933) +LibOpETest:testOpERun(uint16) (runs: 2056, μ: 16132, ~: 16132) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalHappy() (gas: 832908) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalOneInput() (gas: 42057) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalThreeInputs() (gas: 51804) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalTwoOutputs() (gas: 47630) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalZeroInputs() (gas: 37079) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalZeroOutputs() (gas: 46626) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2056, μ: 18140, ~: 18135) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFail((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8) (runs: 2056, μ: 41699, ~: 41753) LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFailZeroLength((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2056, μ: 35813, ~: 35552) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPRun(bytes32,bytes32,uint8,uint8) (runs: 2056, μ: 21402, ~: 21212) -LibOpEnsureTest:testOpEnsureEvalBadOutputs() (gas: 34422) -LibOpEnsureTest:testOpEnsureEvalBadOutputs2() (gas: 33947) -LibOpEnsureTest:testOpEnsureEvalHappy() (gas: 166193) -LibOpEnsureTest:testOpEnsureEvalOne() (gas: 34628) -LibOpEnsureTest:testOpEnsureEvalThree() (gas: 45346) -LibOpEnsureTest:testOpEnsureEvalUnhappy() (gas: 111833) -LibOpEnsureTest:testOpEnsureEvalUnhappyOperand() (gas: 17047) -LibOpEnsureTest:testOpEnsureEvalZero() (gas: 29624) -LibOpEnsureTest:testOpEnsureIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19717, ~: 19989) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPRun(bytes32,bytes32,uint8,uint8) (runs: 2056, μ: 21401, ~: 21212) +LibOpEnsureTest:testOpEnsureEvalBadOutputs() (gas: 34434) +LibOpEnsureTest:testOpEnsureEvalBadOutputs2() (gas: 33959) +LibOpEnsureTest:testOpEnsureEvalHappy() (gas: 166268) +LibOpEnsureTest:testOpEnsureEvalOne() (gas: 34647) +LibOpEnsureTest:testOpEnsureEvalThree() (gas: 45365) +LibOpEnsureTest:testOpEnsureEvalUnhappy() (gas: 111885) +LibOpEnsureTest:testOpEnsureEvalUnhappyOperand() (gas: 17060) +LibOpEnsureTest:testOpEnsureEvalZero() (gas: 29644) +LibOpEnsureTest:testOpEnsureIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19730, ~: 19948) LibOpEnsureTest:testOpEnsureIntegrityUnhappy((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13811, ~: 13677) -LibOpEnsureTest:testOpEnsureOneOutput() (gas: 39583) +LibOpEnsureTest:testOpEnsureOneOutput() (gas: 39602) LibOpEnsureTest:testOpEnsureRun(bytes32,string) (runs: 2052, μ: 18144, ~: 18151) -LibOpEqualToNPTest:testOpEqualToEval2Inputs() (gas: 339133) -LibOpEqualToNPTest:testOpEqualToEval2InputsBothOne() (gas: 57634) -LibOpEqualToNPTest:testOpEqualToEval2InputsFirstOneSecondZero() (gas: 58320) -LibOpEqualToNPTest:testOpEqualToEval2InputsFirstZeroSecondOne() (gas: 58323) -LibOpEqualToNPTest:testOpEqualToEval2ZeroInputs() (gas: 57657) -LibOpEqualToNPTest:testOpEqualToEvalFail0Inputs() (gas: 30048) -LibOpEqualToNPTest:testOpEqualToEvalFail1Input() (gas: 34359) -LibOpEqualToNPTest:testOpEqualToEvalFail3Inputs() (gas: 42783) -LibOpEqualToNPTest:testOpEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19668, ~: 19873) -LibOpEqualToNPTest:testOpEqualToRun(bytes32,bytes32) (runs: 2056, μ: 17543, ~: 17466) -LibOpEqualToNPTest:testOpEqualToTwoOutputs() (gas: 41048) -LibOpEqualToNPTest:testOpEqualToZeroOutputs() (gas: 39957) -LibOpExternNPTest:testOpExternNPEvalHappy() (gas: 99749) -LibOpExternNPTest:testOpExternNPEvalMultipleInputsOutputsHappy() (gas: 115319) -LibOpExternNPTest:testOpExternNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2055, μ: 34995, ~: 34982) -LibOpExternNPTest:testOpExternNPIntegrityNotAnExternContract((uint256,uint256,uint256,bytes32[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2055, μ: 53558, ~: 53773) -LibOpExternNPTest:testOpExternNPRunHappy(address,bytes32[],uint16,bytes32[],bytes32[]) (runs: 2055, μ: 117729, ~: 117621) -LibOpGetTest:testLibOpGetEvalKeyNotSet() (gas: 308623) -LibOpGetTest:testLibOpGetEvalOperandDisallowed() (gas: 57488) -LibOpGetTest:testLibOpGetEvalSetThenGet() (gas: 522490) -LibOpGetTest:testLibOpGetEvalStoreAndSetAndGet() (gas: 255505) -LibOpGetTest:testLibOpGetEvalStoreThenGet() (gas: 475988) -LibOpGetTest:testLibOpGetEvalThreeInputs() (gas: 44984) -LibOpGetTest:testLibOpGetEvalTwoInputs() (gas: 39742) -LibOpGetTest:testLibOpGetEvalTwoOutputs() (gas: 35334) -LibOpGetTest:testLibOpGetEvalZeroInputs() (gas: 29757) -LibOpGetTest:testLibOpGetEvalZeroOutputs() (gas: 34304) -LibOpGetTest:testLibOpGetIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 20559, ~: 20809) -LibOpGetTest:testLibOpGetRunState(bytes32,bytes32,uint16) (runs: 2056, μ: 19634, ~: 19638) +LibOpEqualToNPTest:testOpEqualToEval2Inputs() (gas: 339308) +LibOpEqualToNPTest:testOpEqualToEval2InputsBothOne() (gas: 57659) +LibOpEqualToNPTest:testOpEqualToEval2InputsFirstOneSecondZero() (gas: 58345) +LibOpEqualToNPTest:testOpEqualToEval2InputsFirstZeroSecondOne() (gas: 58348) +LibOpEqualToNPTest:testOpEqualToEval2ZeroInputs() (gas: 57682) +LibOpEqualToNPTest:testOpEqualToEvalFail0Inputs() (gas: 30068) +LibOpEqualToNPTest:testOpEqualToEvalFail1Input() (gas: 34378) +LibOpEqualToNPTest:testOpEqualToEvalFail3Inputs() (gas: 42802) +LibOpEqualToNPTest:testOpEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19669, ~: 19920) +LibOpEqualToNPTest:testOpEqualToRun(bytes32,bytes32) (runs: 2056, μ: 17542, ~: 17466) +LibOpEqualToNPTest:testOpEqualToTwoOutputs() (gas: 41067) +LibOpEqualToNPTest:testOpEqualToZeroOutputs() (gas: 39976) +LibOpExternNPTest:testOpExternNPEvalHappy() (gas: 99773) +LibOpExternNPTest:testOpExternNPEvalMultipleInputsOutputsHappy() (gas: 115343) +LibOpExternNPTest:testOpExternNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2056, μ: 34931, ~: 34876) +LibOpExternNPTest:testOpExternNPIntegrityNotAnExternContract((uint256,uint256,uint256,bytes32[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2056, μ: 53366, ~: 53408) +LibOpExternNPTest:testOpExternNPRunHappy(address,bytes32[],uint16,bytes32[],bytes32[]) (runs: 2056, μ: 117796, ~: 117523) +LibOpGetTest:testLibOpGetEvalKeyNotSet() (gas: 308779) +LibOpGetTest:testLibOpGetEvalOperandDisallowed() (gas: 57540) +LibOpGetTest:testLibOpGetEvalSetThenGet() (gas: 522665) +LibOpGetTest:testLibOpGetEvalStoreAndSetAndGet() (gas: 255581) +LibOpGetTest:testLibOpGetEvalStoreThenGet() (gas: 476200) +LibOpGetTest:testLibOpGetEvalThreeInputs() (gas: 45003) +LibOpGetTest:testLibOpGetEvalTwoInputs() (gas: 39761) +LibOpGetTest:testLibOpGetEvalTwoOutputs() (gas: 35353) +LibOpGetTest:testLibOpGetEvalZeroInputs() (gas: 29777) +LibOpGetTest:testLibOpGetEvalZeroOutputs() (gas: 34323) +LibOpGetTest:testLibOpGetIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 20561, ~: 20826) +LibOpGetTest:testLibOpGetRunState(bytes32,bytes32,uint16) (runs: 2056, μ: 19633, ~: 19638) LibOpGetTest:testLibOpGetRunStateAndStore(bytes32,bytes32,bytes32,uint16) (runs: 2056, μ: 47596, ~: 47610) -LibOpGetTest:testLibOpGetRunStore(bytes32,bytes32,uint16) (runs: 2056, μ: 49831, ~: 49835) -LibOpGetTest:testLibOpGetRunStoreDifferentNamespace(bytes32,bytes32,uint16) (runs: 2056, μ: 51423, ~: 51427) +LibOpGetTest:testLibOpGetRunStore(bytes32,bytes32,uint16) (runs: 2056, μ: 49830, ~: 49835) +LibOpGetTest:testLibOpGetRunStoreDifferentNamespace(bytes32,bytes32,uint16) (runs: 2056, μ: 51422, ~: 51427) LibOpGetTest:testLibOpGetRunUnset(bytes32,uint16) (runs: 2056, μ: 24663, ~: 24668) -LibOpGreaterThanTest:testOpGreaterThanEval1_0Gt1() (gas: 58568) -LibOpGreaterThanTest:testOpGreaterThanEval1_1Gt1_2() (gas: 61169) -LibOpGreaterThanTest:testOpGreaterThanEval2InputsBothOne() (gas: 57883) -LibOpGreaterThanTest:testOpGreaterThanEval2InputsFirstOneSecondZero() (gas: 58614) -LibOpGreaterThanTest:testOpGreaterThanEval2InputsFirstZeroSecondOne() (gas: 58633) -LibOpGreaterThanTest:testOpGreaterThanEval2ZeroInputs() (gas: 57904) -LibOpGreaterThanTest:testOpGreaterThanEvalFail0Inputs() (gas: 30416) -LibOpGreaterThanTest:testOpGreaterThanEvalFail1Input() (gas: 34737) -LibOpGreaterThanTest:testOpGreaterThanEvalFail3Inputs() (gas: 43078) -LibOpGreaterThanTest:testOpGreaterThanEvalNeg1Gt0() (gas: 58666) -LibOpGreaterThanTest:testOpGreaterThanEvalNeg1_1GtNeg1_2() (gas: 61370) -LibOpGreaterThanTest:testOpGreaterThanIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19688, ~: 19951) -LibOpGreaterThanTest:testOpGreaterThanRun(bytes32,bytes32) (runs: 2056, μ: 17417, ~: 17347) -LibOpGreaterThanTest:testOpGreaterThanTwoOutputs() (gas: 41835) -LibOpGreaterThanTest:testOpGreaterThanZeroOutputs() (gas: 40787) -LibOpHashNPTest:testOpHashNPEval0Inputs() (gas: 46285) -LibOpHashNPTest:testOpHashNPEval1Input() (gas: 54893) -LibOpHashNPTest:testOpHashNPEval2Inputs() (gas: 63237) -LibOpHashNPTest:testOpHashNPEval2InputsDifferent() (gas: 63910) -LibOpHashNPTest:testOpHashNPEval2InputsOtherStack() (gas: 78464) -LibOpHashNPTest:testOpHashNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19703, ~: 19941) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEval2InputsBothOne() (gas: 59037) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEval2InputsFirstOneSecondZero() (gas: 59746) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEval2InputsFirstZeroSecondOne() (gas: 59746) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEval2ZeroInputs() (gas: 59080) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEvalFail0Inputs() (gas: 31385) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEvalFail1Input() (gas: 35812) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToEvalFail3Inputs() (gas: 44161) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2056, μ: 13741, ~: 13677) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToRun(bytes32,bytes32) (runs: 2056, μ: 17392, ~: 17323) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToTwoOutputs() (gas: 43006) +LibOpGreaterThanOrEqualToTest:testOpGreaterThanOrEqualToZeroOutputs() (gas: 41780) +LibOpGreaterThanTest:testOpGreaterThanEval1_0Gt1() (gas: 58593) +LibOpGreaterThanTest:testOpGreaterThanEval1_1Gt1_2() (gas: 61194) +LibOpGreaterThanTest:testOpGreaterThanEval2InputsBothOne() (gas: 57908) +LibOpGreaterThanTest:testOpGreaterThanEval2InputsFirstOneSecondZero() (gas: 58639) +LibOpGreaterThanTest:testOpGreaterThanEval2InputsFirstZeroSecondOne() (gas: 58658) +LibOpGreaterThanTest:testOpGreaterThanEval2ZeroInputs() (gas: 57929) +LibOpGreaterThanTest:testOpGreaterThanEvalFail0Inputs() (gas: 30436) +LibOpGreaterThanTest:testOpGreaterThanEvalFail1Input() (gas: 34756) +LibOpGreaterThanTest:testOpGreaterThanEvalFail3Inputs() (gas: 43097) +LibOpGreaterThanTest:testOpGreaterThanEvalNeg1Gt0() (gas: 58691) +LibOpGreaterThanTest:testOpGreaterThanEvalNeg1_1GtNeg1_2() (gas: 61395) +LibOpGreaterThanTest:testOpGreaterThanIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19686, ~: 19937) +LibOpGreaterThanTest:testOpGreaterThanRun(bytes32,bytes32) (runs: 2056, μ: 17419, ~: 17347) +LibOpGreaterThanTest:testOpGreaterThanTwoOutputs() (gas: 41854) +LibOpGreaterThanTest:testOpGreaterThanZeroOutputs() (gas: 40806) +LibOpHashNPTest:testOpHashNPEval0Inputs() (gas: 46310) +LibOpHashNPTest:testOpHashNPEval1Input() (gas: 54919) +LibOpHashNPTest:testOpHashNPEval2Inputs() (gas: 63261) +LibOpHashNPTest:testOpHashNPEval2InputsDifferent() (gas: 63935) +LibOpHashNPTest:testOpHashNPEval2InputsOtherStack() (gas: 78490) +LibOpHashNPTest:testOpHashNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19707, ~: 19934) LibOpHashNPTest:testOpHashNPRun(bytes32[]) (runs: 2050, μ: 19460, ~: 19563) -LibOpHashNPTest:testOpHashNPTwoOutputs() (gas: 30825) -LibOpHashNPTest:testOpHashNPZeroOutputs() (gas: 29451) -LibOpIsZeroTest:testOpIsZeroEval0e20Input() (gas: 53331) -LibOpIsZeroTest:testOpIsZeroEval1NonZeroInput() (gas: 52289) -LibOpIsZeroTest:testOpIsZeroEval1ZeroInput() (gas: 52026) -LibOpIsZeroTest:testOpIsZeroEvalFail0Inputs() (gas: 29957) -LibOpIsZeroTest:testOpIsZeroEvalFail2Inputs() (gas: 38516) -LibOpIsZeroTest:testOpIsZeroNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19779, ~: 20050) +LibOpHashNPTest:testOpHashNPTwoOutputs() (gas: 30845) +LibOpHashNPTest:testOpHashNPZeroOutputs() (gas: 29471) +LibOpInvTest:testOpExpEvalOperandDisallowed() (gas: 17607) +LibOpInvTest:testOpInvEval() (gas: 176874) +LibOpInvTest:testOpInvIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2056, μ: 13746, ~: 13660) +LibOpInvTest:testOpInvRun(int224,int32,uint16) (runs: 2055, μ: 25068, ~: 25219) +LibOpInvTest:testOpInvTwoInputs() (gas: 40079) +LibOpInvTest:testOpInvTwoOutputs() (gas: 35865) +LibOpInvTest:testOpInvZeroInputs() (gas: 30196) +LibOpInvTest:testOpInvZeroOutputs() (gas: 34858) +LibOpIsZeroTest:testOpIsZeroEval0e20Input() (gas: 53357) +LibOpIsZeroTest:testOpIsZeroEval1NonZeroInput() (gas: 52315) +LibOpIsZeroTest:testOpIsZeroEval1ZeroInput() (gas: 52052) +LibOpIsZeroTest:testOpIsZeroEvalFail0Inputs() (gas: 29977) +LibOpIsZeroTest:testOpIsZeroEvalFail2Inputs() (gas: 38535) +LibOpIsZeroTest:testOpIsZeroNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19778, ~: 20036) LibOpIsZeroTest:testOpIsZeroRun(bytes32) (runs: 2056, μ: 16420, ~: 16421) -LibOpIsZeroTest:testOpIsZeroTwoOutputs() (gas: 36351) -LibOpIsZeroTest:testOpIsZeroZeroOutputs() (gas: 35057) -LibOpLessThanTest:testOpLessThanEval2InputsFirstZeroSecondOne() (gas: 58390) -LibOpLessThanTest:testOpLessThanEval2ZeroInputs() (gas: 57639) -LibOpLessThanTest:testOpLessThanIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19692, ~: 19966) -LibOpLessThanTest:testOpLessThanNP1_0Lt1() (gas: 58392) -LibOpLessThanTest:testOpLessThanNP1_1Lt1_2() (gas: 60882) -LibOpLessThanTest:testOpLessThanNPEval2InputsBothOne() (gas: 57663) -LibOpLessThanTest:testOpLessThanNPEval2InputsFirstOneSecondZero() (gas: 58347) -LibOpLessThanTest:testOpLessThanNPMinus1Lt0() (gas: 58445) -LibOpLessThanTest:testOpLessThanNPMinus1_1LtMinus1_2() (gas: 61106) -LibOpLessThanTest:testOpLessThanNPTwoOutputs() (gas: 41921) -LibOpLessThanTest:testOpLessThanNPZeroOutputs() (gas: 40036) -LibOpLessThanTest:testOpLessThanRun(bytes32,bytes32) (runs: 2056, μ: 17422, ~: 17353) -LibOpLessThanTest:testOpLessThanToNPEvalFail0Inputs() (gas: 30151) -LibOpLessThanTest:testOpLessThanToNPEvalFail1Input() (gas: 34441) -LibOpLessThanTest:testOpLessThanToNPEvalFail3Inputs() (gas: 42821) -LibOpMaxTest:testOpMaxEval2InputsHappy() (gas: 880041) -LibOpMaxTest:testOpMaxEval3InputsHappy() (gas: 2029060) -LibOpMaxTest:testOpMaxEvalOneInput() (gas: 129040) -LibOpMaxTest:testOpMaxEvalOperandDisallowed() (gas: 58885) -LibOpMaxTest:testOpMaxEvalTwoOutputs() (gas: 40731) -LibOpMaxTest:testOpMaxEvalZeroInputs() (gas: 30170) -LibOpMaxTest:testOpMaxIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 18197, ~: 18408) +LibOpIsZeroTest:testOpIsZeroTwoOutputs() (gas: 36370) +LibOpIsZeroTest:testOpIsZeroZeroOutputs() (gas: 35076) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEval2InputsBothOne() (gas: 57219) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEval2InputsFirstOneSecondZero() (gas: 57929) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEval2InputsFirstZeroSecondOne() (gas: 57950) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEval2ZeroInputs() (gas: 57243) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEvalFail0Inputs() (gas: 31120) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEvalFail1Input() (gas: 35475) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToEvalFail3Inputs() (gas: 43938) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19675, ~: 19946) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToRun(bytes32,bytes32) (runs: 2056, μ: 17399, ~: 17329) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToTwoOutputs() (gas: 42605) +LibOpLessThanOrEqualToTest:testOpLessThanOrEqualToZeroOutputs() (gas: 41558) +LibOpLessThanTest:testOpLessThanEval2InputsFirstZeroSecondOne() (gas: 58415) +LibOpLessThanTest:testOpLessThanEval2ZeroInputs() (gas: 57664) +LibOpLessThanTest:testOpLessThanIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19698, ~: 19966) +LibOpLessThanTest:testOpLessThanNP1_0Lt1() (gas: 58417) +LibOpLessThanTest:testOpLessThanNP1_1Lt1_2() (gas: 60907) +LibOpLessThanTest:testOpLessThanNPEval2InputsBothOne() (gas: 57688) +LibOpLessThanTest:testOpLessThanNPEval2InputsFirstOneSecondZero() (gas: 58372) +LibOpLessThanTest:testOpLessThanNPMinus1Lt0() (gas: 58470) +LibOpLessThanTest:testOpLessThanNPMinus1_1LtMinus1_2() (gas: 61131) +LibOpLessThanTest:testOpLessThanNPTwoOutputs() (gas: 41940) +LibOpLessThanTest:testOpLessThanNPZeroOutputs() (gas: 40055) +LibOpLessThanTest:testOpLessThanRun(bytes32,bytes32) (runs: 2056, μ: 17425, ~: 17353) +LibOpLessThanTest:testOpLessThanToNPEvalFail0Inputs() (gas: 30171) +LibOpLessThanTest:testOpLessThanToNPEvalFail1Input() (gas: 34460) +LibOpLessThanTest:testOpLessThanToNPEvalFail3Inputs() (gas: 42840) +LibOpMaxTest:testOpMaxEval2InputsHappy() (gas: 880516) +LibOpMaxTest:testOpMaxEval3InputsHappy() (gas: 2030060) +LibOpMaxTest:testOpMaxEvalOneInput() (gas: 129117) +LibOpMaxTest:testOpMaxEvalOperandDisallowed() (gas: 58937) +LibOpMaxTest:testOpMaxEvalTwoOutputs() (gas: 40750) +LibOpMaxTest:testOpMaxEvalZeroInputs() (gas: 30190) +LibOpMaxTest:testOpMaxIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 18203, ~: 18365) LibOpMaxTest:testOpMaxIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13821, ~: 13687) LibOpMaxTest:testOpMaxIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13843, ~: 13709) -LibOpMaxTest:testOpMaxRun(bytes32[]) (runs: 2050, μ: 26607, ~: 26367) -LibOpMaxUint256Test:testOpMaxUint256Eval() (gas: 47280) -LibOpMaxUint256Test:testOpMaxUint256EvalFail() (gas: 35109) -LibOpMaxUint256Test:testOpMaxUint256Integrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19657, ~: 19919) +LibOpMaxTest:testOpMaxRun(bytes32[]) (runs: 2050, μ: 26607, ~: 26371) +LibOpMaxUint256Test:testOpMaxUint256Eval() (gas: 47305) +LibOpMaxUint256Test:testOpMaxUint256EvalFail() (gas: 35128) +LibOpMaxUint256Test:testOpMaxUint256Integrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19656, ~: 19853) LibOpMaxUint256Test:testOpMaxUint256Run() (gas: 15997) -LibOpMaxUint256Test:testOpMaxUint256TwoOutputs() (gas: 31892) -LibOpMaxUint256Test:testOpMaxUint256ZeroOutputs() (gas: 30797) -LibOpMaxValueTest:testOpMaxValueEval() (gas: 46896) -LibOpMaxValueTest:testOpMaxValueEvalFail() (gas: 34417) -LibOpMaxValueTest:testOpMaxValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19648, ~: 19902) +LibOpMaxUint256Test:testOpMaxUint256TwoOutputs() (gas: 31912) +LibOpMaxUint256Test:testOpMaxUint256ZeroOutputs() (gas: 30817) +LibOpMaxValueTest:testOpMaxValueEval() (gas: 46691) +LibOpMaxValueTest:testOpMaxValueEvalFail() (gas: 34436) +LibOpMaxValueTest:testOpMaxValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19651, ~: 19880) LibOpMaxValueTest:testOpMaxValueRun() (gas: 16217) -LibOpMaxValueTest:testOpMaxValueTwoOutputs() (gas: 31266) -LibOpMaxValueTest:testOpMaxValueZeroOutputs() (gas: 30171) -LibOpMinTest:testOpMinEval2InputsHappy() (gas: 972829) -LibOpMinTest:testOpMinEval3InputsHappy() (gas: 3458613) -LibOpMinTest:testOpMinEvalOneInput() (gas: 126204) -LibOpMinTest:testOpMinEvalOperandDisallowed() (gas: 58908) -LibOpMinTest:testOpMinEvalZeroInputs() (gas: 30150) -LibOpMinTest:testOpMinIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 18276, ~: 18512) +LibOpMaxValueTest:testOpMaxValueTwoOutputs() (gas: 31286) +LibOpMaxValueTest:testOpMaxValueZeroOutputs() (gas: 30191) +LibOpMinTest:testOpMinEval2InputsHappy() (gas: 973354) +LibOpMinTest:testOpMinEval3InputsHappy() (gas: 3460316) +LibOpMinTest:testOpMinEvalOneInput() (gas: 126281) +LibOpMinTest:testOpMinEvalOperandDisallowed() (gas: 58960) +LibOpMinTest:testOpMinEvalZeroInputs() (gas: 30170) +LibOpMinTest:testOpMinIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 18277, ~: 18504) LibOpMinTest:testOpMinIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13844, ~: 13710) LibOpMinTest:testOpMinIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13821, ~: 13687) -LibOpMinTest:testOpMinRun(bytes32[],uint16) (runs: 2050, μ: 26543, ~: 26653) +LibOpMinTest:testOpMinRun(bytes32[],uint16) (runs: 2050, μ: 26554, ~: 26651) +LibOpMinValueTest:testOpMaxValueTwoOutputs() (gas: 31242) +LibOpMinValueTest:testOpMaxValueZeroOutputs() (gas: 30213) +LibOpMinValueTest:testOpMinValueEval() (gas: 46690) +LibOpMinValueTest:testOpMinValueEvalFail() (gas: 34458) +LibOpMinValueTest:testOpMinValueIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19691, ~: 19925) +LibOpMinValueTest:testOpMinValueRun() (gas: 16187) LibOpMulTest:testOpDecimal18MulNPIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13822, ~: 13688) -LibOpMulTest:testOpMulEvalOneInput() (gas: 126238) -LibOpMulTest:testOpMulEvalOperandsDisallowed() (gas: 91499) -LibOpMulTest:testOpMulEvalThreeInputsHappy() (gas: 743697) -LibOpMulTest:testOpMulEvalThreeInputsUnhappyOverflow() (gas: 60803) -LibOpMulTest:testOpMulEvalTwoInputsHappy() (gas: 522883) -LibOpMulTest:testOpMulEvalTwoInputsUnhappyOverflow() (gas: 54354) -LibOpMulTest:testOpMulEvalZeroInputs() (gas: 30213) -LibOpMulTest:testOpMulIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 18235, ~: 18443) +LibOpMulTest:testOpMulEvalOneInput() (gas: 126315) +LibOpMulTest:testOpMulEvalOperandsDisallowed() (gas: 91577) +LibOpMulTest:testOpMulEvalThreeInputsHappy() (gas: 744054) +LibOpMulTest:testOpMulEvalThreeInputsUnhappyOverflow() (gas: 60828) +LibOpMulTest:testOpMulEvalTwoInputsHappy() (gas: 523158) +LibOpMulTest:testOpMulEvalTwoInputsUnhappyOverflow() (gas: 54380) +LibOpMulTest:testOpMulEvalZeroInputs() (gas: 30233) +LibOpMulTest:testOpMulIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 18242, ~: 18477) LibOpMulTest:testOpMulIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13865, ~: 13731) -LibOpMulTest:testOpMulRun(bytes32[]) (runs: 2050, μ: 28960, ~: 26565) -LibOpMulTest:testOpMulTwoOutputs() (gas: 40752) -LibOpMulTest:testOpMulZeroOutputs() (gas: 39706) -LibOpSetTest:testLibOpSet(bytes32,bytes32) (runs: 2056, μ: 17660, ~: 17665) -LibOpSetTest:testLibOpSetEvalOneInput() (gas: 34192) -LibOpSetTest:testLibOpSetEvalOneOutput() (gas: 39829) -LibOpSetTest:testLibOpSetEvalOperandsDisallowed() (gas: 56003) -LibOpSetTest:testLibOpSetEvalSetTwice() (gas: 78234) -LibOpSetTest:testLibOpSetEvalThreeInputs() (gas: 44625) -LibOpSetTest:testLibOpSetEvalTwoInputs() (gas: 258452) -LibOpSetTest:testLibOpSetEvalTwoOutputs() (gas: 40451) -LibOpSetTest:testLibOpSetEvalZeroInputs() (gas: 29372) -LibOpSetTest:testLibOpSetIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 20433, ~: 20653) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPEval() (gas: 878842) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailBadShiftAmount() (gas: 128113) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailTwoInputs() (gas: 44447) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailTwoOutputs() (gas: 40331) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailZeroInputs() (gas: 34606) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailZeroOutputs() (gas: 39256) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8) (runs: 2055, μ: 19765, ~: 19760) +LibOpMulTest:testOpMulRun(bytes32[]) (runs: 2050, μ: 28965, ~: 26565) +LibOpMulTest:testOpMulTwoOutputs() (gas: 40771) +LibOpMulTest:testOpMulZeroOutputs() (gas: 39725) +LibOpSetTest:testLibOpSet(bytes32,bytes32) (runs: 2056, μ: 17661, ~: 17665) +LibOpSetTest:testLibOpSetEvalOneInput() (gas: 34211) +LibOpSetTest:testLibOpSetEvalOneOutput() (gas: 39848) +LibOpSetTest:testLibOpSetEvalOperandsDisallowed() (gas: 56055) +LibOpSetTest:testLibOpSetEvalSetTwice() (gas: 78261) +LibOpSetTest:testLibOpSetEvalThreeInputs() (gas: 44644) +LibOpSetTest:testLibOpSetEvalTwoInputs() (gas: 258581) +LibOpSetTest:testLibOpSetEvalTwoOutputs() (gas: 40470) +LibOpSetTest:testLibOpSetEvalZeroInputs() (gas: 29392) +LibOpSetTest:testLibOpSetIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 20441, ~: 20738) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPEval() (gas: 879350) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailBadShiftAmount() (gas: 128183) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailTwoInputs() (gas: 44466) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailTwoOutputs() (gas: 40350) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailZeroInputs() (gas: 34626) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailZeroOutputs() (gas: 39275) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8) (runs: 2055, μ: 19781, ~: 19722) LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityNoop((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 2056, μ: 35779, ~: 35518) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityZero((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 41975, ~: 42447) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPRun(bytes32,uint8) (runs: 2056, μ: 16833, ~: 16833) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPEval() (gas: 1053755) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityFailBadShiftAmount() (gas: 128703) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8) (runs: 107, μ: 19635, ~: 19131) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityZero((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 41980, ~: 42587) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPRun(bytes32,uint8) (runs: 2055, μ: 16833, ~: 16833) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPEval() (gas: 1054365) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityFailBadShiftAmount() (gas: 128771) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint8) (runs: 107, μ: 19631, ~: 19233) LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityNoop((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8) (runs: 108, μ: 36628, ~: 36899) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityZero((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 108, μ: 40453, ~: 40926) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityZero((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 108, μ: 40448, ~: 40926) LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPRun(bytes32,uint8) (runs: 2056, μ: 16836, ~: 16836) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoInputs() (gas: 44571) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoOutputs() (gas: 40391) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroInputs() (gas: 34665) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroOutputs() (gas: 39340) -LibOpStackNPTest:testOpStackEval() (gas: 65313) -LibOpStackNPTest:testOpStackEvalSeveral() (gas: 87151) -LibOpStackNPTest:testOpStackNPIntegrity(bytes,uint256,bytes32[],bytes32) (runs: 2056, μ: 18896, ~: 18657) -LibOpStackNPTest:testOpStackNPIntegrityOOBStack(bytes,uint16,bytes32[],uint16,uint256) (runs: 2056, μ: 41419, ~: 41563) -LibOpStackNPTest:testOpStackNPMultipleOutputErrorSugared() (gas: 39336) -LibOpStackNPTest:testOpStackNPMultipleOutputErrorUnsugared() (gas: 42996) -LibOpStackNPTest:testOpStackNPRun(bytes32[][],uint256) (runs: 108, μ: 2064572, ~: 1852966) -LibOpStackNPTest:testOpStackNPZeroOutputErrorSugared() (gas: 37881) -LibOpStackNPTest:testOpStackNPZeroOutputErrorUnsugared() (gas: 41506) -LibOpSubTest:testOpSubEvalOneInput() (gas: 128861) -LibOpSubTest:testOpSubEvalThreeInputs() (gas: 226150) -LibOpSubTest:testOpSubEvalTwoInputs() (gas: 342286) -LibOpSubTest:testOpSubEvalZeroInputs() (gas: 30131) -LibOpSubTest:testOpSubIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 18242, ~: 18469) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoInputs() (gas: 44590) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoOutputs() (gas: 40410) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroInputs() (gas: 34685) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroOutputs() (gas: 39359) +LibOpStackNPTest:testOpStackEval() (gas: 65339) +LibOpStackNPTest:testOpStackEvalSeveral() (gas: 87176) +LibOpStackNPTest:testOpStackNPIntegrity(bytes,uint256,bytes32[],bytes32) (runs: 2056, μ: 18891, ~: 18684) +LibOpStackNPTest:testOpStackNPIntegrityOOBStack(bytes,uint16,bytes32[],uint16,uint256) (runs: 2056, μ: 41407, ~: 41563) +LibOpStackNPTest:testOpStackNPMultipleOutputErrorSugared() (gas: 39354) +LibOpStackNPTest:testOpStackNPMultipleOutputErrorUnsugared() (gas: 43014) +LibOpStackNPTest:testOpStackNPRun(bytes32[][],uint256) (runs: 108, μ: 2064574, ~: 1852966) +LibOpStackNPTest:testOpStackNPZeroOutputErrorSugared() (gas: 37899) +LibOpStackNPTest:testOpStackNPZeroOutputErrorUnsugared() (gas: 41524) +LibOpSubTest:testOpSubEvalOneInput() (gas: 128938) +LibOpSubTest:testOpSubEvalThreeInputs() (gas: 226254) +LibOpSubTest:testOpSubEvalTwoInputs() (gas: 342461) +LibOpSubTest:testOpSubEvalZeroInputs() (gas: 30151) +LibOpSubTest:testOpSubIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 18244, ~: 18476) LibOpSubTest:testOpSubIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13821, ~: 13687) LibOpSubTest:testOpSubIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13822, ~: 13688) -LibOpSubTest:testOpSubRun(bytes32[]) (runs: 2050, μ: 55883, ~: 55355) -LibOpTimestampTest:testOpBlockTimestampNPEvalFail() (gas: 65815) -LibOpTimestampTest:testOpBlockTimestampNPTwoOutputs() (gas: 58732) -LibOpTimestampTest:testOpBlockTimestampNPZeroOutputs() (gas: 56607) -LibOpTimestampTest:testOpTimestampEval(uint256) (runs: 2056, μ: 84986, ~: 84663) -LibOpTimestampTest:testOpTimestampIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19671, ~: 19929) -LibOpTimestampTest:testOpTimestampRun(uint256) (runs: 2056, μ: 20589, ~: 20364) -LibOpUint256AddTest:testOpUint256AddEvalOneInput() (gas: 128271) -LibOpUint256AddTest:testOpUint256AddEvalOperandsDisallowed() (gas: 95387) -LibOpUint256AddTest:testOpUint256AddEvalThreeInputsHappy() (gas: 209684) -LibOpUint256AddTest:testOpUint256AddEvalThreeInputsUnhappy() (gas: 114790) -LibOpUint256AddTest:testOpUint256AddEvalTwoInputsHappy() (gas: 280090) -LibOpUint256AddTest:testOpUint256AddEvalTwoOutputs() (gas: 41422) -LibOpUint256AddTest:testOpUint256AddEvalZeroInputs() (gas: 30839) -LibOpUint256AddTest:testOpUint256AddEvalZeroOutputs() (gas: 40353) -LibOpUint256AddTest:testOpUint256AddIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 18245, ~: 18478) +LibOpSubTest:testOpSubRun(bytes32[]) (runs: 2050, μ: 55738, ~: 54749) +LibOpTimestampTest:testOpBlockTimestampNPEvalFail() (gas: 65853) +LibOpTimestampTest:testOpBlockTimestampNPTwoOutputs() (gas: 58772) +LibOpTimestampTest:testOpBlockTimestampNPZeroOutputs() (gas: 56647) +LibOpTimestampTest:testOpTimestampEval(uint256) (runs: 2056, μ: 85038, ~: 84713) +LibOpTimestampTest:testOpTimestampIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19662, ~: 19901) +LibOpTimestampTest:testOpTimestampRun(uint256) (runs: 2056, μ: 20592, ~: 20364) +LibOpUint256AddTest:testOpUint256AddEvalOneInput() (gas: 128347) +LibOpUint256AddTest:testOpUint256AddEvalOperandsDisallowed() (gas: 95465) +LibOpUint256AddTest:testOpUint256AddEvalThreeInputsHappy() (gas: 209786) +LibOpUint256AddTest:testOpUint256AddEvalThreeInputsUnhappy() (gas: 114841) +LibOpUint256AddTest:testOpUint256AddEvalTwoInputsHappy() (gas: 280239) +LibOpUint256AddTest:testOpUint256AddEvalTwoOutputs() (gas: 41441) +LibOpUint256AddTest:testOpUint256AddEvalZeroInputs() (gas: 30859) +LibOpUint256AddTest:testOpUint256AddEvalZeroOutputs() (gas: 40372) +LibOpUint256AddTest:testOpUint256AddIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 18243, ~: 18471) LibOpUint256AddTest:testOpUint256AddIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13823, ~: 13689) LibOpUint256AddTest:testOpUint256AddIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13821, ~: 13687) -LibOpUint256AddTest:testOpUint256AddRun(bytes32[]) (runs: 2050, μ: 19993, ~: 19501) -LibOpUint256DivTest:testOpUint256DivEval2InputsHappy() (gas: 770716) -LibOpUint256DivTest:testOpUint256DivEval2InputsUnhappy() (gas: 143501) -LibOpUint256DivTest:testOpUint256DivEval3InputsHappy() (gas: 1406661) -LibOpUint256DivTest:testOpUint256DivEval3InputsUnhappy() (gas: 479352) -LibOpUint256DivTest:testOpUint256DivEvalOneInput() (gas: 132967) -LibOpUint256DivTest:testOpUint256DivEvalOperandDisallowed() (gas: 61456) -LibOpUint256DivTest:testOpUint256DivEvalTwoOutputs() (gas: 41423) -LibOpUint256DivTest:testOpUint256DivEvalZeroInputs() (gas: 30840) -LibOpUint256DivTest:testOpUint256DivEvalZeroOutputs() (gas: 40331) -LibOpUint256DivTest:testOpUint256DivIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 18261, ~: 18467) +LibOpUint256AddTest:testOpUint256AddRun(bytes32[]) (runs: 2050, μ: 19949, ~: 19409) +LibOpUint256DivTest:testOpUint256DivEval2InputsHappy() (gas: 771139) +LibOpUint256DivTest:testOpUint256DivEval2InputsUnhappy() (gas: 143620) +LibOpUint256DivTest:testOpUint256DivEval3InputsHappy() (gas: 1407371) +LibOpUint256DivTest:testOpUint256DivEval3InputsUnhappy() (gas: 479717) +LibOpUint256DivTest:testOpUint256DivEvalOneInput() (gas: 133044) +LibOpUint256DivTest:testOpUint256DivEvalOperandDisallowed() (gas: 61508) +LibOpUint256DivTest:testOpUint256DivEvalTwoOutputs() (gas: 41442) +LibOpUint256DivTest:testOpUint256DivEvalZeroInputs() (gas: 30860) +LibOpUint256DivTest:testOpUint256DivEvalZeroOutputs() (gas: 40350) +LibOpUint256DivTest:testOpUint256DivIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 18260, ~: 18467) LibOpUint256DivTest:testOpUint256DivIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13843, ~: 13709) LibOpUint256DivTest:testOpUint256DivIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13823, ~: 13689) LibOpUint256DivTest:testOpUint256DivRun(bytes32[]) (runs: 2050, μ: 24850, ~: 25168) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalFourInputs() (gas: 56648) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalHappy(uint256) (runs: 2056, μ: 70276, ~: 70276) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalOneInput() (gas: 37942) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalOperandDisallowed() (gas: 19254) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalTwoInputs() (gas: 44281) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalTwoOutputs() (gas: 51313) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalZeroInputs() (gas: 31734) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalZeroOutputs() (gas: 50289) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalFourInputs() (gas: 56667) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalHappy(uint256) (runs: 2056, μ: 70302, ~: 70302) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalOneInput() (gas: 37960) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalOperandDisallowed() (gas: 19266) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalTwoInputs() (gas: 44300) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalTwoOutputs() (gas: 51332) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalZeroInputs() (gas: 31754) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceEvalZeroOutputs() (gas: 50308) LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2056, μ: 13769, ~: 13683) LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceRun(address,address,address,uint256) (runs: 2056, μ: 24718, ~: 24718) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalHappy(uint256) (runs: 2056, μ: 63336, ~: 63336) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalOneInput() (gas: 37981) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalOperandDisallowed() (gas: 19312) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalThreeInputs() (gas: 50182) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalTwoOutputs() (gas: 45051) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroInputs() (gas: 31837) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroOutputs() (gas: 44006) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalHappy(uint256) (runs: 2056, μ: 63362, ~: 63362) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalOneInput() (gas: 37999) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalOperandDisallowed() (gas: 19324) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalThreeInputs() (gas: 50201) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalTwoOutputs() (gas: 45070) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroInputs() (gas: 31857) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfEvalZeroOutputs() (gas: 44025) LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2056, μ: 13792, ~: 13706) LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfRun(address,address,uint256,uint16) (runs: 2056, μ: 24168, ~: 24168) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalHappy(uint256) (runs: 2056, μ: 56439, ~: 56439) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalOperandDisallowed() (gas: 19475) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoInputs() (gas: 44503) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoOutputs() (gas: 38877) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroInputs() (gas: 32020) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroOutputs() (gas: 37804) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalHappy(uint256) (runs: 2056, μ: 56463, ~: 56463) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalOperandDisallowed() (gas: 19487) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoInputs() (gas: 44522) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalTwoOutputs() (gas: 38895) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroInputs() (gas: 32040) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyEvalZeroOutputs() (gas: 37822) LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),bytes32) (runs: 2056, μ: 13792, ~: 13706) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyRun(address,uint256,uint16) (runs: 2055, μ: 23332, ~: 23332) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfEvalHappy(address,address,uint256) (runs: 2056, μ: 104689, ~: 104853) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19672, ~: 19936) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail0() (gas: 31459) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail1() (gas: 35844) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail3() (gas: 45183) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFailOperand() (gas: 22186) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfOneInput() (gas: 36374) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfRun(address,address,uint256,uint16) (runs: 2056, μ: 24211, ~: 24211) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfThreeInputs() (gas: 45703) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfTwoOutputs() (gas: 41700) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfZeroInputs() (gas: 31893) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfZeroOutputs() (gas: 40675) -LibOpUint256MulTest:testOpUint256MulEvalOneInput() (gas: 128359) -LibOpUint256MulTest:testOpUint256MulEvalOperandsDisallowed() (gas: 95367) -LibOpUint256MulTest:testOpUint256MulEvalThreeInputsHappy() (gas: 1014303) -LibOpUint256MulTest:testOpUint256MulEvalThreeInputsUnhappy() (gas: 640418) -LibOpUint256MulTest:testOpUint256MulEvalTwoInputsHappy() (gas: 416748) -LibOpUint256MulTest:testOpUint256MulEvalTwoInputsUnhappy() (gas: 143680) -LibOpUint256MulTest:testOpUint256MulEvalTwoOutputs() (gas: 41367) -LibOpUint256MulTest:testOpUint256MulEvalZeroInputs() (gas: 30893) -LibOpUint256MulTest:testOpUint256MulEvalZeroOutputs() (gas: 40366) -LibOpUint256MulTest:testOpUint256MulIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 18196, ~: 18359) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyRun(address,uint256,uint16) (runs: 2056, μ: 23332, ~: 23332) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfEvalHappy(address,address,uint256) (runs: 2055, μ: 104718, ~: 104878) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrity((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint8,uint16) (runs: 2056, μ: 19677, ~: 19922) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail0() (gas: 31479) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail1() (gas: 35862) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail3() (gas: 45202) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFailOperand() (gas: 22198) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfOneInput() (gas: 36392) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfRun(address,address,uint256,uint16) (runs: 2055, μ: 24211, ~: 24211) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfThreeInputs() (gas: 45722) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfTwoOutputs() (gas: 41719) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfZeroInputs() (gas: 31913) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfZeroOutputs() (gas: 40694) +LibOpUint256MulTest:testOpUint256MulEvalOneInput() (gas: 128435) +LibOpUint256MulTest:testOpUint256MulEvalOperandsDisallowed() (gas: 95445) +LibOpUint256MulTest:testOpUint256MulEvalThreeInputsHappy() (gas: 1014816) +LibOpUint256MulTest:testOpUint256MulEvalThreeInputsUnhappy() (gas: 640712) +LibOpUint256MulTest:testOpUint256MulEvalTwoInputsHappy() (gas: 416971) +LibOpUint256MulTest:testOpUint256MulEvalTwoInputsUnhappy() (gas: 143753) +LibOpUint256MulTest:testOpUint256MulEvalTwoOutputs() (gas: 41386) +LibOpUint256MulTest:testOpUint256MulEvalZeroInputs() (gas: 30913) +LibOpUint256MulTest:testOpUint256MulEvalZeroOutputs() (gas: 40385) +LibOpUint256MulTest:testOpUint256MulIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 18201, ~: 18432) LibOpUint256MulTest:testOpUint256MulIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13865, ~: 13731) LibOpUint256MulTest:testOpUint256MulIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13822, ~: 13688) LibOpUint256MulTest:testOpUint256MulRun(bytes32[]) (runs: 2050, μ: 18883, ~: 19078) -LibOpUint256PowTest:testOpUint256ExpIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 18218, ~: 18387) -LibOpUint256PowTest:testOpUint256PowEval2InputsHappy() (gas: 871553) -LibOpUint256PowTest:testOpUint256PowEval2InputsUnhappy() (gas: 145660) -LibOpUint256PowTest:testOpUint256PowEval3InputsHappy() (gas: 1978684) -LibOpUint256PowTest:testOpUint256PowEval3InputsUnhappy() (gas: 633271) -LibOpUint256PowTest:testOpUint256PowEvalOneInput() (gas: 132280) -LibOpUint256PowTest:testOpUint256PowEvalOperandDisallowed() (gas: 62148) -LibOpUint256PowTest:testOpUint256PowEvalTwoOutputs() (gas: 41552) -LibOpUint256PowTest:testOpUint256PowEvalZeroInputs() (gas: 31032) -LibOpUint256PowTest:testOpUint256PowEvalZeroOutputs() (gas: 40484) +LibOpUint256PowTest:testOpUint256ExpIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 18221, ~: 18395) +LibOpUint256PowTest:testOpUint256PowEval2InputsHappy() (gas: 872025) +LibOpUint256PowTest:testOpUint256PowEval2InputsUnhappy() (gas: 145733) +LibOpUint256PowTest:testOpUint256PowEval3InputsHappy() (gas: 1979680) +LibOpUint256PowTest:testOpUint256PowEval3InputsUnhappy() (gas: 633571) +LibOpUint256PowTest:testOpUint256PowEvalOneInput() (gas: 132357) +LibOpUint256PowTest:testOpUint256PowEvalOperandDisallowed() (gas: 62200) +LibOpUint256PowTest:testOpUint256PowEvalTwoOutputs() (gas: 41571) +LibOpUint256PowTest:testOpUint256PowEvalZeroInputs() (gas: 31052) +LibOpUint256PowTest:testOpUint256PowEvalZeroOutputs() (gas: 40503) LibOpUint256PowTest:testOpUint256PowIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13845, ~: 13711) LibOpUint256PowTest:testOpUint256PowIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13822, ~: 13688) -LibOpUint256PowTest:testOpUint256PowRun(bytes32[]) (runs: 2050, μ: 19410, ~: 19309) +LibOpUint256PowTest:testOpUint256PowRun(bytes32[]) (runs: 2050, μ: 19378, ~: 19304) +LibOpUint256SubTest:testOpUint256SubEvalOneInput() (gas: 128434) +LibOpUint256SubTest:testOpUint256SubEvalOperandsDisallowed() (gas: 95467) +LibOpUint256SubTest:testOpUint256SubEvalThreeInputsHappy() (gas: 209661) +LibOpUint256SubTest:testOpUint256SubEvalThreeInputsUnhappy() (gas: 115014) +LibOpUint256SubTest:testOpUint256SubEvalTwoInputsHappy() (gas: 280237) +LibOpUint256SubTest:testOpUint256SubEvalTwoOutputs() (gas: 41430) +LibOpUint256SubTest:testOpUint256SubEvalZeroInputs() (gas: 30870) +LibOpUint256SubTest:testOpUint256SubEvalZeroOutputs() (gas: 40362) +LibOpUint256SubTest:testOpUint256SubIntegrityHappy((uint256,uint256,uint256,bytes32[],uint256,bytes),uint8,uint16) (runs: 2056, μ: 18243, ~: 18472) +LibOpUint256SubTest:testOpUint256SubIntegrityUnhappyOneInput((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13866, ~: 13732) +LibOpUint256SubTest:testOpUint256SubIntegrityUnhappyZeroInputs((uint256,uint256,uint256,bytes32[],uint256,bytes)) (runs: 2056, μ: 13822, ~: 13688) +LibOpUint256SubTest:testOpUint256SubRun(bytes32[]) (runs: 2050, μ: 17652, ~: 17687) LibParseCommentsTest:testParseCommentAfterSources() (gas: 69689) LibParseCommentsTest:testParseCommentBetweenSources() (gas: 69745) LibParseCommentsTest:testParseCommentInIgnoredLHS() (gas: 46231) @@ -837,29 +905,29 @@ LibParseUnexpectedRightParenTest:testParseUnexpectedRightParen() (gas: 50722) LibParseUnexpectedRightParenTest:testParseUnexpectedRightParenNested() (gas: 56990) LibSubParseSubParserExternTest:testLibSubParseSubParserExtern(address,uint8,uint8,uint8,uint16,uint8) (runs: 2056, μ: 13231, ~: 13163) LibSubParseSubParserExternTest:testLibSubParseSubParserExternConstantsHeightOverflow(address,uint256,uint8,uint8,uint16,uint8) (runs: 2056, μ: 11433, ~: 11167) -RainterpreterExpressionDeployerDeployCheckTest:testRainterpreterExpressionDeployerDeployNoEIP1820() (gas: 7739077) -RainterpreterExpressionDeployerDescribedByMetaV1Test:testRainterpreterExpressionDeployerDescribedByMetaV1Happy() (gas: 7749657) -RainterpreterExpressionDeployerIERC165Test:testRainterpreterExpressionDeployerIERC165(bytes4) (runs: 2056, μ: 7746518, ~: 7746518) +RainterpreterExpressionDeployerDeployCheckTest:testRainterpreterExpressionDeployerDeployNoEIP1820() (gas: 7945591) +RainterpreterExpressionDeployerDescribedByMetaV1Test:testRainterpreterExpressionDeployerDescribedByMetaV1Happy() (gas: 7956697) +RainterpreterExpressionDeployerIERC165Test:testRainterpreterExpressionDeployerIERC165(bytes4) (runs: 2056, μ: 7953032, ~: 7953032) RainterpreterExpressionDeployerMetaTest:testRainterpreterExpressionDeployerExpectedConstructionMetaHash() (gas: 6221) -RainterpreterIERC165Test:testRainterpreterIERC165(bytes4) (runs: 2056, μ: 2633268, ~: 2633268) -RainterpreterParserIERC165Test:testRainterpreterParserIERC165(bytes4) (runs: 2056, μ: 3473016, ~: 3473016) -RainterpreterParserParserPragma:testParsePragmaNoPragma() (gas: 17347474) -RainterpreterParserParserPragma:testParsePragmaSinglePragma() (gas: 10460200) -RainterpreterParserParserPragma:testParsePragmaWithInterstitial() (gas: 10463492) -RainterpreterParserPointersTest:testLiteralParserFunctionPointers() (gas: 3472022) -RainterpreterParserPointersTest:testOperandHandlerFunctionPointers() (gas: 3477508) -RainterpreterParserPointersTest:testParserParseMeta() (gas: 1716192) -RainterpreterPointersTest:testOpcodeFunctionPointers() (gas: 2637731) -RainterpreterReferenceExternContextRainlenTest:testRainterpreterReferenceExterNPE2ContextRainlenHappy() (gas: 2160048) -RainterpreterReferenceExternContextSenderTest:testRainterpreterReferenceExterNPE2ContextContractHappy() (gas: 2159634) -RainterpreterReferenceExternContextSenderTest:testRainterpreterReferenceExterNPE2ContextSenderHappy() (gas: 2158330) +RainterpreterIERC165Test:testRainterpreterIERC165(bytes4) (runs: 2056, μ: 2801665, ~: 2801665) +RainterpreterParserIERC165Test:testRainterpreterParserIERC165(bytes4) (runs: 2056, μ: 3492665, ~: 3492665) +RainterpreterParserParserPragma:testParsePragmaNoPragma() (gas: 17445714) +RainterpreterParserParserPragma:testParsePragmaSinglePragma() (gas: 10519154) +RainterpreterParserParserPragma:testParsePragmaWithInterstitial() (gas: 10522446) +RainterpreterParserPointersTest:testLiteralParserFunctionPointers() (gas: 3491671) +RainterpreterParserPointersTest:testOperandHandlerFunctionPointers() (gas: 3498226) +RainterpreterParserPointersTest:testParserParseMeta() (gas: 1964950) +RainterpreterPointersTest:testOpcodeFunctionPointers() (gas: 2807209) +RainterpreterReferenceExternContextRainlenTest:testRainterpreterReferenceExterNPE2ContextRainlenHappy() (gas: 2160073) +RainterpreterReferenceExternContextSenderTest:testRainterpreterReferenceExterNPE2ContextContractHappy() (gas: 2159659) +RainterpreterReferenceExternContextSenderTest:testRainterpreterReferenceExterNPE2ContextSenderHappy() (gas: 2158355) RainterpreterReferenceExternDescribedByMetaV1:testRainterpreterReferenceExternDescribedByMetaV1Happy() (gas: 2081641) RainterpreterReferenceExternIERC165Test:testRainterpreterReferenceExternIERC165(bytes4) (runs: 2056, μ: 2093899, ~: 2093899) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncHappySugared() (gas: 2183789) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncHappyUnsugared() (gas: 2178028) +RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncHappySugared() (gas: 2183814) +RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncHappyUnsugared() (gas: 2178053) RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncIntegrity(bytes32,uint256,uint256) (runs: 108, μ: 3597, ~: 3597) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncRun(bytes32,bytes32[]) (runs: 108, μ: 749649, ~: 757835) -RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncSubParseKnownWord(uint16,bytes1) (runs: 108, μ: 2095509, ~: 2095759) +RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncRun(bytes32,bytes32[]) (runs: 108, μ: 749618, ~: 757943) +RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncSubParseKnownWord(uint16,bytes1) (runs: 108, μ: 2095520, ~: 2095759) RainterpreterReferenceExternIntIncTest:testRainterpreterReferenceExternIntIncSubParseUnknownWord(uint16,bytes1,bytes) (runs: 100, μ: 2091863, ~: 2091662) RainterpreterReferenceExternPointersTest:testIntegrityFunctionPointers() (gas: 2081736) RainterpreterReferenceExternPointersTest:testOpcodeFunctionPointers() (gas: 2081779) @@ -867,14 +935,14 @@ RainterpreterReferenceExternPointersTest:testSubParserFunctionPointers() (gas: 2 RainterpreterReferenceExternPointersTest:testSubParserLiteralParsers() (gas: 2081756) RainterpreterReferenceExternPointersTest:testSubParserOperandParsers() (gas: 2082229) RainterpreterReferenceExternPointersTest:testSubParserParseMeta() (gas: 22017) -RainterpreterReferenceExternRepeatTest:testRainterpreterReferenceExternRepeatHappy() (gas: 2212950) -RainterpreterReferenceExternStackOperandTest:testRainterpreterReferenceExternStackOperandSingle(uint256) (runs: 2056, μ: 2167504, ~: 2167922) -RainterpreterReferenceExternUnknownWordTest:testRainterpreterReferenceExternUnknownWord() (gas: 2128684) -RainterpreterStateOverlayTest:testStateOverlayGet() (gas: 52336) -RainterpreterStateOverlayTest:testStateOverlaySet() (gas: 83065) +RainterpreterReferenceExternRepeatTest:testRainterpreterReferenceExternRepeatHappy() (gas: 2213000) +RainterpreterReferenceExternStackOperandTest:testRainterpreterReferenceExternStackOperandSingle(uint256) (runs: 2056, μ: 2167524, ~: 2167605) +RainterpreterReferenceExternUnknownWordTest:testRainterpreterReferenceExternUnknownWord() (gas: 2128697) +RainterpreterStateOverlayTest:testStateOverlayGet() (gas: 52363) +RainterpreterStateOverlayTest:testStateOverlaySet() (gas: 83090) RainterpreterStoreIERC165Test:testRainterpreterStoreIERC165(bytes4) (runs: 2056, μ: 229923, ~: 229923) RainterpreterStoreTest:testRainterpreterStoreSetGetDupes((uint256,bytes32[11])[]) (runs: 103, μ: 1618862, ~: 1605309) RainterpreterStoreTest:testRainterpreterStoreSetGetNoDupesMany((uint256,bytes32[])[]) (runs: 108, μ: 3455422, ~: 3312550) RainterpreterStoreTest:testRainterpreterStoreSetGetNoDupesSingle(uint256,bytes32[]) (runs: 108, μ: 1867991, ~: 1884915) RainterpreterStoreTest:testRainterpreterStoreSetOddLength(uint256,bytes32[]) (runs: 105, μ: 249369, ~: 249891) -RainterpreterTest:testRainterpreterOddFunctionPointersLength() (gas: 3672) \ No newline at end of file +RainterpreterTest:testRainterpreterOddFunctionPointersLength() (gas: 3684) \ No newline at end of file diff --git a/lib/rain.interpreter.interface b/lib/rain.interpreter.interface index 342fd0839..f5f1f8df2 160000 --- a/lib/rain.interpreter.interface +++ b/lib/rain.interpreter.interface @@ -1 +1 @@ -Subproject commit 342fd0839dbf840b8c42a5d555de4b1de3116848 +Subproject commit f5f1f8df21ec3fac1df0fadfa3ae1dba25201668 diff --git a/src/generated/Rainterpreter.pointers.sol b/src/generated/Rainterpreter.pointers.sol index 64b424b15..03f1a8f5a 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(0x1f82584ad80b630eb25769669c965fc8efff9d8f9cd3dcc6f9fc0ac842e81474); +bytes32 constant BYTECODE_HASH = bytes32(0xca873fdc0fafdd8622956664b1ff707a348e5086104c9df4041da19e4ed40eb2); /// @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"07c607f8081c09a80a710a830a950aae0ad20b060b170b280bca0be90ca70d570ddb0f1d10500ca7114911fb129d13151326133713371348138f1411142a143e14571470149b14b414cd14e01542159015de162c167a16c817161724177217a317f1183f188d1974"; + hex"07d8080a082e09ba0a830a950aa70ac00ae40b180b290b3a0bdc0bfb0cb90d690ded0f2f10620cb9115b120d12af1327133813491349135a13a11423143c14501469148214ad14c614df14f2155415a215f0163e168c16da17281759176717b517e61834186518b3190119e8"; diff --git a/src/generated/RainterpreterExpressionDeployer.pointers.sol b/src/generated/RainterpreterExpressionDeployer.pointers.sol index adefd5f6f..57ee96bd2 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(0xb76a360580b20009cee2999206d01cce8a7be9c16321becaa7a8897a4e8fc30c); +bytes32 constant BYTECODE_HASH = bytes32(0xbde8830f32466859d248ddbd93c3160f528590905b62e571cdf67a18f501b881); /// @dev The hash of the meta that describes the contract. -bytes32 constant DESCRIBED_BY_META_HASH = bytes32(0xde93b39376f1e94f38fde797b17027f86a9a59b2540f89ec15cc09759f171eb8); +bytes32 constant DESCRIBED_BY_META_HASH = bytes32(0xb592485a2a86d9c1b4189fb79e5ee78349710462b6cb3d9836d4c211e64dff5b); /// @dev The function pointers for the integrity check fns. bytes constant INTEGRITY_FUNCTION_POINTERS = - hex"0e580ed60f3a10b410be10be10c810d110ec1192119211ee1266127310be10c8127310be10c810be10be10be10c810b410b410b410b4127d12a210be10be10be10be10c810be10be10b412ac12ac12ac12ac12ac12ac12c610c812ac10b412ac12c612c610c812a2"; + hex"0e680ee60f4a10c410ce10ce10d810e110fc11a211a211fe1276128310ce10d8128310ce10d810ce10ce10ce10d810c410c410c410c4128d12b210ce10ce10ce10ce10d810ce10ce10c412bc12bc12bc12bc12bc12bc12d610c410d812bc10c412bc10c412d612d610d812b2"; diff --git a/src/generated/RainterpreterParser.pointers.sol b/src/generated/RainterpreterParser.pointers.sol index cb9b6f699..692901607 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(0x680382e10b1fa1d3a16b62c994f80ced2eff3fbd3cb51ed90817bf25bb904f08); +bytes32 constant BYTECODE_HASH = bytes32(0x2dd95b73bafe92197b507ea6cded7f00121a8dedfc9779057387ad0cdd34cb46); /// @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(0x680382e10b1fa1d3a16b62c994f80ced2eff3 /// 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"0178ac80600029b010910908a00a3448c001280030060100180000200cc2200408a00c95d8383248145c3334b3f32ed587e204afc8f01e95a26007b9a51f0d5e6f2803ce312215fae0a1271233de118cfd53051c784d25a55ade1681ac9622ac6dfc2fa4e5e91f5fc32a0e92b2401dbbd837100ef76b00cd8814205902e62a9714ec13313592290d473b21f880501427634f0f23b4970ac0e53d0b895f991ac908be0983724f12c080bc309d7b7d28757aea2c3a7b86266f62e02b5c0ab5086d2a7b2390a6b319bcb24402af7d4506414b8117b04fb31cb2182f18ef532924c301e31b9314ad31fa5d8001336a592dab2461"; + hex"0178ac80600029b010910908a00a7448c001280030060500180000200cc2200408a00c95d8383448145c3534b3f32fd587e204afc8f01e95a26007b9a51f0d5e6f2803ce312215fae0a1271233de118cfd53051c784d25a55ade3112233f1681ac9622ac6dfc30a4e5e91f5fc32a0e92b2401dbbd837100ef76b00cd8814205902e62a9714ec13313592290d473b21f880501427634f2ce048d30f23b4970ac0e53d0b895f991ac908be0983724f12c080bc329d7b7d28757aea2d3a7b86266f62e02b5c0ab5086d2a7b2390a6b319bcb24402af7d4506414b8117b04fb31cb2182f18ef532924c301e31b9314ad33fa5d8001336a592eab2461"; /// @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"1a3b1a3b1a3b1b101c271c271c271b101b101a3b1a3b1a3b1c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271c271a3b1c271c27"; + hex"1a4b1a4b1a4b1b201c371c371c371b201b201a4b1a4b1a4b1c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371c371a4b1c371c37"; /// @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"158317b517f81896"; +bytes constant LITERAL_PARSER_FUNCTION_POINTERS = hex"159317c5180818a6"; diff --git a/src/lib/op/LibAllStandardOps.sol b/src/lib/op/LibAllStandardOps.sol index f31d63565..1b1e6b249 100644 --- a/src/lib/op/LibAllStandardOps.sol +++ b/src/lib/op/LibAllStandardOps.sol @@ -74,7 +74,7 @@ import {LibOpAdd} from "./math/LibOpAdd.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"; +import {LibOpE} from "./math/LibOpE.sol"; // import {LibOpExp} from "./math/LibOpExp.sol"; // import {LibOpExp2} from "./math/LibOpExp2.sol"; // import {LibOpFloor} from "./math/LibOpFloor.sol"; @@ -87,6 +87,7 @@ import {LibOpInv} from "./math/LibOpInv.sol"; import {LibOpMax} from "./math/LibOpMax.sol"; import {LibOpMaxValue} from "./math/LibOpMaxValue.sol"; import {LibOpMin} from "./math/LibOpMin.sol"; +import {LibOpMinValue} from "./math/LibOpMinValue.sol"; import {LibOpMod} from "./math/LibOpMod.sol"; // import {LibOpLog2} from "./math/LibOpLog2.sol"; // import {LibOpPow} from "./math/LibOpPow.sol"; @@ -108,7 +109,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 = 52; +uint256 constant ALL_STANDARD_OPS_LENGTH = 54; /// @title LibAllStandardOps /// @notice Every opcode available from the core repository laid out as a single @@ -267,7 +268,7 @@ library LibAllStandardOps { // AuthoringMetaV2("avg", "Arithmetic average (mean) of two numbers."), // AuthoringMetaV2("ceil", "Ceiling of a number."), AuthoringMetaV2("div", "Divides the first number by all other numbers. Errors if any divisor is zero."), - // AuthoringMetaV2("e", "The mathematical constant e."), + AuthoringMetaV2("e", "The mathematical constant e."), // AuthoringMetaV2("exp", "Natural exponential e^x. Errors if the exponentiation exceeds `max-value()`."), // AuthoringMetaV2("exp2", "Binary exponential 2^x where x. Errors if the exponentiation exceeds `max-value()`."), // AuthoringMetaV2("floor", "Floor of a number."), @@ -284,9 +285,13 @@ library LibAllStandardOps { AuthoringMetaV2("max", "Finds the maximum number from all inputs."), AuthoringMetaV2( "max-value", - "The maximum representable float value. This is so large that it is effectively infinity (it has ~2.1 billion zero digits). Almost all numbers that you could possibly subtract from it will be ignored as a rounding error." + "The maximum representable float value. This is so large that it is effectively infinity. Almost all numbers that you could possibly subtract from it will be ignored as a rounding error." ), AuthoringMetaV2("min", "Finds the minimum number from all inputs."), + AuthoringMetaV2( + "min-value", + "The minimum representable float value. This is so small that it is effectively negative infinity. Almost all numbers that you could possibly add to it will be ignored as a rounding error." + ), // AuthoringMetaV2("mod", "Modulos the first number by all other numbers. Errors if any divisor is zero."), AuthoringMetaV2("mul", "Multiplies all numbers together."), // AuthoringMetaV2( @@ -478,8 +483,8 @@ library LibAllStandardOps { // LibParseOperand.handleOperandDisallowed, // div LibParseOperand.handleOperandDisallowed, - // // e - // LibParseOperand.handleOperandDisallowed, + // e + LibParseOperand.handleOperandDisallowed, // // exp // LibParseOperand.handleOperandDisallowed, // // exp2 @@ -506,6 +511,8 @@ library LibAllStandardOps { LibParseOperand.handleOperandDisallowed, // min LibParseOperand.handleOperandDisallowed, + // min-value + LibParseOperand.handleOperandDisallowed, // // mod // LibParseOperand.handleOperandDisallowed, // mul @@ -616,7 +623,7 @@ library LibAllStandardOps { // LibOpAvg.integrity, // LibOpCeil.integrity, LibOpDiv.integrity, - // LibOpE.integrity, + LibOpE.integrity, // LibOpExp.integrity, // LibOpExp2.integrity, // LibOpFloor.integrity, @@ -630,6 +637,7 @@ library LibAllStandardOps { LibOpMax.integrity, LibOpMaxValue.integrity, LibOpMin.integrity, + LibOpMinValue.integrity, // LibOpMod.integrity, LibOpMul.integrity, // LibOpPow.integrity, @@ -731,7 +739,7 @@ library LibAllStandardOps { // LibOpAvg.run, // LibOpCeil.run, LibOpDiv.run, - // LibOpE.run, + LibOpE.run, // LibOpExp.run, // LibOpExp2.run, // LibOpFloor.run, @@ -745,6 +753,7 @@ library LibAllStandardOps { LibOpMax.run, LibOpMaxValue.run, LibOpMin.run, + LibOpMinValue.run, // LibOpMod.run, LibOpMul.run, // LibOpPow.run, diff --git a/src/lib/op/math/LibOpE.sol b/src/lib/op/math/LibOpE.sol index 1389cfced..3fea2d6a3 100644 --- a/src/lib/op/math/LibOpE.sol +++ b/src/lib/op/math/LibOpE.sol @@ -1,34 +1,36 @@ // SPDX-License-Identifier: CAL pragma solidity ^0.8.18; -// import {Pointer} from "rain.solmem/lib/LibPointer.sol"; -// import {OperandV2} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol"; -// import {InterpreterState} from "../../state/LibInterpreterState.sol"; -// import {IntegrityCheckState} from "../../integrity/LibIntegrityCheck.sol"; +import {Pointer} from "rain.solmem/lib/LibPointer.sol"; +import {OperandV2} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol"; +import {InterpreterState} from "../../state/LibInterpreterState.sol"; +import {IntegrityCheckState} from "../../integrity/LibIntegrityCheck.sol"; +import {LibDecimalFloat, Float} from "rain.math.float/lib/LibDecimalFloat.sol"; +import {StackItem} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol"; -// /// @title LibOpE -// /// Stacks the mathematical constant e. -// library LibOpE { -// function integrity(IntegrityCheckState memory, Operand) internal pure returns (uint256, uint256) { -// return (0, 1); -// } +/// @title LibOpE +/// Stacks the mathematical constant e. +library LibOpE { + function integrity(IntegrityCheckState memory, OperandV2) internal pure returns (uint256, uint256) { + return (0, 1); + } -// function run(InterpreterState memory, Operand, Pointer stackTop) internal pure returns (Pointer) { -// uint256 e = FIXED_POINT_E; -// assembly ("memory-safe") { -// stackTop := sub(stackTop, 0x20) -// mstore(stackTop, e) -// } -// return stackTop; -// } + function run(InterpreterState memory, OperandV2, Pointer stackTop) internal pure returns (Pointer) { + Float e = LibDecimalFloat.FLOAT_E; + assembly ("memory-safe") { + stackTop := sub(stackTop, 0x20) + mstore(stackTop, e) + } + return stackTop; + } -// function referenceFn(InterpreterState memory, Operand, uint256[] memory) -// internal -// pure -// returns (uint256[] memory) -// { -// uint256[] memory outputs = new uint256[](1); -// outputs[0] = FIXED_POINT_E; -// return outputs; -// } -// } + function referenceFn(InterpreterState memory, OperandV2, StackItem[] memory) + internal + pure + returns (StackItem[] memory) + { + StackItem[] memory outputs = new StackItem[](1); + outputs[0] = StackItem.wrap(Float.unwrap(LibDecimalFloat.FLOAT_E)); + return outputs; + } +} diff --git a/src/lib/op/math/LibOpMaxValue.sol b/src/lib/op/math/LibOpMaxValue.sol index 09b7d6cff..8b23c9f31 100644 --- a/src/lib/op/math/LibOpMaxValue.sol +++ b/src/lib/op/math/LibOpMaxValue.sol @@ -7,8 +7,6 @@ import {InterpreterState} from "../../state/LibInterpreterState.sol"; import {Pointer} from "rain.solmem/lib/LibPointer.sol"; import {Float, LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; -uint256 constant MAX_VALUE = uint256(0x7fffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffff); - /// @title LibOpMaxValue /// Exposes the maximum representable float value as a Rainlang opcode. library LibOpMaxValue { @@ -19,7 +17,7 @@ library LibOpMaxValue { } function run(InterpreterState memory, OperandV2, Pointer stackTop) internal pure returns (Pointer) { - uint256 value = MAX_VALUE; + Float value = LibDecimalFloat.FLOAT_MAX_VALUE; assembly ("memory-safe") { stackTop := sub(stackTop, 0x20) mstore(stackTop, value) diff --git a/src/lib/op/math/LibOpMinValue.sol b/src/lib/op/math/LibOpMinValue.sol new file mode 100644 index 000000000..383053b02 --- /dev/null +++ b/src/lib/op/math/LibOpMinValue.sol @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: CAL +pragma solidity ^0.8.18; + +import {IntegrityCheckState} from "../../integrity/LibIntegrityCheck.sol"; +import {OperandV2, StackItem} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol"; +import {InterpreterState} from "../../state/LibInterpreterState.sol"; +import {Pointer} from "rain.solmem/lib/LibPointer.sol"; +import {Float, LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; + +/// @title LibOpMinValue +/// Exposes the minimum representable float value as a Rainlang opcode. +library LibOpMinValue { + using LibDecimalFloat for Float; + + function integrity(IntegrityCheckState memory, OperandV2) internal pure returns (uint256, uint256) { + return (0, 1); + } + + function run(InterpreterState memory, OperandV2, Pointer stackTop) internal pure returns (Pointer) { + Float value = LibDecimalFloat.FLOAT_MIN_NEGATIVE_VALUE; + assembly ("memory-safe") { + stackTop := sub(stackTop, 0x20) + mstore(stackTop, value) + } + return stackTop; + } + + function referenceFn(InterpreterState memory, OperandV2, StackItem[] memory) + internal + pure + returns (StackItem[] memory) + { + StackItem[] memory outputs = new StackItem[](1); + outputs[0] = StackItem.wrap(Float.unwrap(LibDecimalFloat.packLossless(type(int224).min, type(int32).max))); + return outputs; + } +} diff --git a/test/src/lib/op/math/LibOpE.t.sol b/test/src/lib/op/math/LibOpE.t.sol index 40f813090..f42630548 100644 --- a/test/src/lib/op/math/LibOpE.t.sol +++ b/test/src/lib/op/math/LibOpE.t.sol @@ -1,73 +1,73 @@ // SPDX-License-Identifier: CAL pragma solidity =0.8.25; -// import {OpTest} from "test/abstract/OpTest.sol"; -// import {LibInterpreterState, InterpreterState} from "src/lib/state/LibInterpreterState.sol"; -// import {LibOpE} from "src/lib/op/math/LibOpE.sol"; -// import {LibOperand, Operand} from "test/lib/operand/LibOperand.sol"; -// import {IntegrityCheckState, BadOpInputsLength} from "src/lib/integrity/LibIntegrityCheck.sol"; -// import {IInterpreterV4, EvalV4} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol"; -// import {IInterpreterStoreV2} from "rain.interpreter.interface/interface/IInterpreterStoreV2.sol"; -// import {SignedContextV1} from "rain.interpreter.interface/interface/IInterpreterCallerV3.sol"; -// import {LibContext} from "rain.interpreter.interface/lib/caller/LibContext.sol"; -// import {FullyQualifiedNamespace} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol"; -// import {SourceIndexV2} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol"; -// import {FIXED_POINT_E} from "rain.math.fixedpoint/lib/FixedPointDecimalConstants.sol"; +import {OpTest} from "test/abstract/OpTest.sol"; +import {LibInterpreterState, InterpreterState} from "src/lib/state/LibInterpreterState.sol"; +import {LibOpE} from "src/lib/op/math/LibOpE.sol"; +import {LibOperand, OperandV2} from "test/lib/operand/LibOperand.sol"; +import {IntegrityCheckState, BadOpInputsLength} from "src/lib/integrity/LibIntegrityCheck.sol"; +import {IInterpreterV4, EvalV4} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol"; +import {SignedContextV1} from "rain.interpreter.interface/interface/IInterpreterCallerV3.sol"; +import {LibContext} from "rain.interpreter.interface/lib/caller/LibContext.sol"; +import {FullyQualifiedNamespace} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol"; +import {SourceIndexV2} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol"; +import {StackItem} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol"; +import {LibDecimalFloat, Float} from "rain.math.float/lib/LibDecimalFloat.sol"; -// /// @title LibOpETest -// contract LibOpETest is OpTest { -// /// Directly test the integrity logic of LibOpE. -// function testOpEIntegrity(IntegrityCheckState memory state, uint8 inputs, uint8 outputs, uint16 operandData) -// external -// pure -// { -// inputs = uint8(bound(inputs, 0, 0x0F)); -// outputs = uint8(bound(outputs, 0, 0x0F)); -// (uint256 calcInputs, uint256 calcOutputs) = -// LibOpE.integrity(state, LibOperand.build(inputs, outputs, operandData)); +/// @title LibOpETest +contract LibOpETest is OpTest { + /// Directly test the integrity logic of LibOpE. + function testOpEIntegrity(IntegrityCheckState memory state, uint8 inputs, uint8 outputs, uint16 operandData) + external + pure + { + inputs = uint8(bound(inputs, 0, 0x0F)); + outputs = uint8(bound(outputs, 0, 0x0F)); + (uint256 calcInputs, uint256 calcOutputs) = + LibOpE.integrity(state, LibOperand.build(inputs, outputs, operandData)); -// assertEq(calcInputs, 0); -// assertEq(calcOutputs, 1); -// } + assertEq(calcInputs, 0); + assertEq(calcOutputs, 1); + } -// /// Directly test the runtime logic of LibOpE. This tests that the -// /// opcode correctly pushes the mathematical constant e onto the stack. -// function testOpERun(uint16 operandData) external view { -// InterpreterState memory state = opTestDefaultInterpreterState(); -// Operand operand = LibOperand.build(0, 1, operandData); -// uint256[] memory inputs = new uint256[](0); -// opReferenceCheck(state, operand, LibOpE.referenceFn, LibOpE.integrity, LibOpE.run, inputs); -// } + /// Directly test the runtime logic of LibOpE. This tests that the + /// opcode correctly pushes the mathematical constant e onto the stack. + function testOpERun(uint16 operandData) external view { + InterpreterState memory state = opTestDefaultInterpreterState(); + OperandV2 operand = LibOperand.build(0, 1, operandData); + StackItem[] memory inputs = new StackItem[](0); + opReferenceCheck(state, operand, LibOpE.referenceFn, LibOpE.integrity, LibOpE.run, inputs); + } -// /// Test the eval of a mathematical constant e opcode parsed from a string. -// function testOpEEval() external view { -// bytes memory bytecode = iDeployer.parse2("_: e();"); + /// Test the eval of a mathematical constant e opcode parsed from a string. + function testOpEEval() external view { + bytes memory bytecode = iDeployer.parse2("_: e();"); -// (uint256[] memory stack, uint256[] memory kvs) = iInterpreter.eval4( -// EvalV4({ -// store: iStore, -// namespace: FullyQualifiedNamespace.wrap(0), -// bytecode: bytecode, -// sourceIndex: SourceIndexV2.wrap(0), -// context: LibContext.build(new uint256[][](0), new SignedContextV1[](0)), -// inputs: new uint256[](0), -// stateOverlay: new uint256[](0) -// }) -// ); -// assertEq(stack.length, 1); -// assertEq(stack[0], FIXED_POINT_E); -// assertEq(kvs.length, 0); -// } + (StackItem[] memory stack, bytes32[] memory kvs) = iInterpreter.eval4( + EvalV4({ + store: iStore, + namespace: FullyQualifiedNamespace.wrap(0), + bytecode: bytecode, + sourceIndex: SourceIndexV2.wrap(0), + context: LibContext.build(new bytes32[][](0), new SignedContextV1[](0)), + inputs: new StackItem[](0), + stateOverlay: new bytes32[](0) + }) + ); + assertEq(stack.length, 1); + assertEq(StackItem.unwrap(stack[0]), Float.unwrap(LibDecimalFloat.FLOAT_E)); + assertEq(kvs.length, 0); + } -// function testOpEEvalOneInput() external { -// checkBadInputs("_: e(0x00);", 1, 0, 1); -// } + function testOpEEvalOneInput() external { + checkBadInputs("_: e(0x00);", 1, 0, 1); + } -// function testOpEEvalZeroOutputs() external { -// checkBadOutputs(": e();", 0, 1, 0); -// } + function testOpEEvalZeroOutputs() external { + checkBadOutputs(": e();", 0, 1, 0); + } -// function testOpEEvalTwoOutputs() external { -// checkBadOutputs("_ _: e();", 0, 1, 2); -// } -// } + function testOpEEvalTwoOutputs() external { + checkBadOutputs("_ _: e();", 0, 1, 2); + } +} diff --git a/test/src/lib/op/math/LibOpMaxValue.t.sol b/test/src/lib/op/math/LibOpMaxValue.t.sol index c4d325aa6..ff4bf80d1 100644 --- a/test/src/lib/op/math/LibOpMaxValue.t.sol +++ b/test/src/lib/op/math/LibOpMaxValue.t.sol @@ -49,7 +49,7 @@ contract LibOpMaxValueTest is OpTest { /// Test the eval of LibOpMaxValue parsed from a string. function testOpMaxValueEval() external view { - checkHappy("_: max-value();", Float.unwrap(LibDecimalFloat.packLossless(type(int224).max, type(int32).max)), ""); + checkHappy("_: max-value();", Float.unwrap(LibDecimalFloat.FLOAT_MAX_VALUE), ""); } /// Test that a max-value with inputs fails integrity check. diff --git a/test/src/lib/op/math/LibOpMinValue.t.sol b/test/src/lib/op/math/LibOpMinValue.t.sol new file mode 100644 index 000000000..945e95549 --- /dev/null +++ b/test/src/lib/op/math/LibOpMinValue.t.sol @@ -0,0 +1,69 @@ +// SPDX-License-Identifier: CAL +pragma solidity =0.8.25; + +import {OpTest} from "test/abstract/OpTest.sol"; +import {LibOpMinValue} from "src/lib/op/math/LibOpMinValue.sol"; +import {IntegrityCheckState, BadOpInputsLength} from "src/lib/integrity/LibIntegrityCheck.sol"; +import { + IInterpreterV4, + OperandV2, + SourceIndexV2, + FullyQualifiedNamespace, + StackItem +} from "rain.interpreter.interface/interface/unstable/IInterpreterV4.sol"; +import {InterpreterState, LibInterpreterState} from "src/lib/state/LibInterpreterState.sol"; +import {LibContext} from "rain.interpreter.interface/lib/caller/LibContext.sol"; +import {IInterpreterStoreV2} from "rain.interpreter.interface/interface/IInterpreterStoreV2.sol"; +import {SignedContextV1} from "rain.interpreter.interface/interface/IInterpreterCallerV3.sol"; +import {LibOperand} from "test/lib/operand/LibOperand.sol"; +import {Float, LibDecimalFloat} from "rain.math.float/lib/LibDecimalFloat.sol"; + +/// @title LibOpMinValueTest +/// @notice Test the runtime and integrity time logic of LibOpMinValue. +contract LibOpMinValueTest is OpTest { + using LibInterpreterState for InterpreterState; + using LibDecimalFloat for Float; + + /// Directly test the integrity logic of LibOpMinValue. + function testOpMinValueIntegrity(IntegrityCheckState memory state, uint8 inputs, uint8 outputs, uint16 operandData) + external + pure + { + inputs = uint8(bound(inputs, 0, 0x0F)); + outputs = uint8(bound(outputs, 0, 0x0F)); + (uint256 calcInputs, uint256 calcOutputs) = + LibOpMinValue.integrity(state, LibOperand.build(inputs, outputs, operandData)); + + assertEq(calcInputs, 0); + assertEq(calcOutputs, 1); + } + + /// Directly test the runtime logic of LibOpMinValue. This tests that the + /// opcode correctly pushes the max value onto the stack. + function testOpMinValueRun() external view { + InterpreterState memory state = opTestDefaultInterpreterState(); + StackItem[] memory inputs = new StackItem[](0); + OperandV2 operand = LibOperand.build(0, 1, 0); + opReferenceCheck(state, operand, LibOpMinValue.referenceFn, LibOpMinValue.integrity, LibOpMinValue.run, inputs); + } + + /// Test the eval of LibOpMinValue parsed from a string. + function testOpMinValueEval() external view { + checkHappy("_: min-value();", Float.unwrap(LibDecimalFloat.FLOAT_MIN_NEGATIVE_VALUE), ""); + } + + /// Test that a min-value with inputs fails integrity check. + function testOpMinValueEvalFail() public { + vm.expectRevert(abi.encodeWithSelector(BadOpInputsLength.selector, 1, 0, 1)); + bytes memory bytecode = iDeployer.parse2("_: min-value(0x00);"); + (bytecode); + } + + function testOpMaxValueZeroOutputs() external { + checkBadOutputs(": max-value();", 0, 1, 0); + } + + function testOpMaxValueTwoOutputs() external { + checkBadOutputs("_ _: max-value();", 0, 1, 2); + } +}