evm v0.1.14 EVM.Operation.StopAndArithmetic

Link to this section Summary

Functions

Addition operation

Modulo addition operation

Integer division operation

Exponential operation

Modulo remainder operation

Multiplication operation

Modulo multiplication operation

Signed integer division operation (truncated)

Extend length of two’s complement signed integer

Signed modulo remainder operation

Halts execution

Subtraction operation

Link to this section Functions

Addition operation.

Adds the values and wraps and encodes them

Examples

iex> EVM.Operation.StopAndArithmetic.add([1, 2], %{})
3

iex> EVM.Operation.StopAndArithmetic.add([-1, -5], %{})
-6

iex> EVM.Operation.StopAndArithmetic.add([0, 0], %{})
0

Modulo addition operation.

Integer division operation.

Examples

iex> EVM.Operation.StopAndArithmetic.div([5, 2], %{})
2

iex> EVM.Operation.StopAndArithmetic.div([10, 2], %{})
5

iex> EVM.Operation.StopAndArithmetic.div([10, 0], %{})
0

Exponential operation

Examples

iex> EVM.Operation.StopAndArithmetic.exp([2, 3], %{})
8

Modulo remainder operation.

Multiplication operation.

Examples

iex> EVM.Operation.StopAndArithmetic.mul([5, 2], %{})
10

iex> EVM.Operation.StopAndArithmetic.mul([5, -2], %{})
-10

Modulo multiplication operation.

Signed integer division operation (truncated).

Extend length of two’s complement signed integer.

Signed modulo remainder operation.

Halts execution.

In our implementation, this is a no-op.

Examples

iex> EVM.Operation.StopAndArithmetic.stop([], %{})
:noop

Subtraction operation.

Examples

iex> EVM.Operation.StopAndArithmetic.sub([5, 2], %{})
3

iex> EVM.Operation.StopAndArithmetic.sub([-1, 5], %{})
-6