Arithmetic

Bit Shifts

shift_left(string $value, int $shift) string

$value << $shift

shift_right(string $value, int $shift) string

$value >> $shift

Addition and Subtraction

add(string $a, string $b) string

$a + $b

add_int(string $a, int $b) string

$a + $b optimized for small integers

sub(string $a, string $b) string

$a - $b

sub_int(string $a, int $b) string

$a - $b optimized for small subtrahends

sub_int_rev(int $a, string $b) string

$a - $b optimized for small minuends

Multiplication

mul(string $a, string $b) string

$a * $b

mul_int(string $a, int $b) string

$a * $b optimized for small integers

Division

div_mod(string $a, string $b) [string, string]

$a /% $b

Returns:

[quotient, remainder]

div_mod_int(string $a, int $b) [string, int]

$a /% $b optimized for small divisors

Returns:

[quotient, remainder]

div(string $a, string $b) string

$a / $b

div_int(string $a, int $b) string

$a / $b optimized for small divisors

mod(string $a, string $b) string

$a % $b

mod_int(string $a, int $b) int

$a % $b optimized for small divisors

Returns:

Result is integer because if $b can be represented as native integer, remainder can be too

Comparison

compare(string $a, compare $b) int

$a <=> $b

Returns:

Same values as the spaceship operator

Bit manipulation

is_bit_set(string $a, int $bit) bool
Parameters:
  • $bit (int) – Bit number, 0 is the least significant bit

Returns:

If $bit’th bit is set

set_bit(string $a, int $bit) string

Set $bit’th bit to 1

Parameters:
  • $bit (int) – Bit number, 0 is the least significant bit

unset_bit(string $a, int $bit) string

Set $bit’th bit to 0

Parameters:
  • $bit (int) – Bit number, 0 is the least significant bit