Skip to content

SimplicityHL standard library reference

The SimplicityHL standard library provides various functions useful in developing smart contracts.

Here is a complete list of the available library functions, their type signatures, and a description of what they do.

Some library functions can fail or panic. This allows a Simplicity program to refuse a proposed transaction by performing a mandatory assertion; these functions' return type is () below. The failure or panic effect produced by these functions, or the corresponding behavior of jets, is ultimately the only way to decline a transaction.

For more built-in SimplicityHL functions, see the jets reference.

Asserts

Click to hide
Standard library function
Description
assert_eq_1(u1, u1) -> () Assert that two u1 values are equal.

## Panics
The assertion fails.
assert_eq_8(u8, u8) -> () Assert that two u8 values are equal.

## Panics
The assertion fails.
assert_eq_16(u16, u16) -> () Assert that two u16 values are equal.

## Panics
The assertion fails.
assert_eq_32(u32, u32) -> () Assert that two u32 values are equal.

## Panics
The assertion fails.
assert_eq_64(u64, u64) -> () Assert that two u64 values are equal.

## Panics
The assertion fails.
assert_eq_128(u128, u128) -> () Assert that two u128 values are equal.

## Panics
The assertion fails.
assert_eq_256(u256, u256) -> () Assert that two u256 values are equal.

## Panics
The assertion fails.
assert_none_1(Option<u1>) -> () Assert that the given Option<u1> is None.

## Panics
The assertion fails.
assert_none_8(Option<u8>) -> () Assert that the given Option<u8> is None.

## Panics
The assertion fails.
assert_none_16(Option<u16>) -> () Assert that the given Option<u16> is None.

## Panics
The assertion fails.
assert_none_32(Option<u32>) -> () Assert that the given Option<u32> is None.

## Panics
The assertion fails.
assert_none_64(Option<u64>) -> () Assert that the given Option<u64> is None.

## Panics
The assertion fails.
assert_none_128(Option<u128>) -> () Assert that the given Option<u128> is None.

## Panics
The assertion fails.
assert_none_256(Option<u256>) -> () Assert that the given Option<u256> is None.

## Panics
The assertion fails.
assert_eq_bool(bool, bool) -> () Assert that two bool values are equal.

## Panics
The assertion fails.

Binary logic

Click to hide
Standard library function
Description
not(bool) -> bool Return the logical NOT of the given value.
or(bool, bool) -> bool Return the logical OR of the two given values.
and(bool, bool) -> bool Return the logical AND of the two given values.
xor(bool, bool) -> bool Return the logical XOR of the two given values.

OP_RETURN

Click to hide
Standard library function
Description
is_output_op_return(u32) -> bool Return true if the output at the given index is an OP_RETURN (null data) output, false otherwise (including if the output does not exist).
assert_output_is_op_return(u32) -> () Assert that the output at the given index is an OP_RETURN (null data) output.

## Panics
The assertion fails.

secp256k1 operations

Click to hide
Standard library function
Description
ge_to_point(Ge) -> Point Compress an affine point to (parity, x), where parity = 1 if and only if y is odd.
point_to_gej(Point) -> Gej Decompress a compressed Point into a Jacobian point with z = 1.

## Panics
Panics if the compressed point does not decode to a valid curve point.
safe_gej_normalize(Gej) -> Ge Convert a Jacobian point into affine coordinates.

## Panics
Panics if the point is the point at infinity, which has no affine representation.
fe_sub(Fe, Fe) -> Fe Subtract two field elements.
scalar_sub(Scalar, Scalar) -> Scalar Subtract two scalars.
gej_sub(Gej, Gej) -> Gej Subtract two Jacobian points.
fe_eq(Fe, Fe) -> bool Check field-element equality modulo p.
scalar_eq(Scalar, Scalar) -> bool Check scalar equality modulo the curve order n.
ge_eq(Ge, Ge) -> bool Check whether two affine points are equal.
point_point_eq(Point, Point) -> bool Check whether two compressed Point values are equal (same parity and same x-coordinate).
gej_point_eq(Gej, Point) -> bool Check whether a Jacobian point and a compressed Point represent the same curve point.

## Panics
Panics if the compressed point does not decode to a valid curve point.
assert_fe_eq(Fe, Fe) -> () Assert field-element equality modulo p.

## Panics
The assertion fails.
assert_scalar_eq(Scalar, Scalar) -> () Assert scalar equality modulo the curve order n.

## Panics
The assertion fails.
assert_ge_eq(Ge, Ge) -> () Assert that two affine points are equal.

## Panics
The assertion fails.
assert_point_eq(Point, Point) -> () Assert that two compressed Point values are equal (same parity and same x-coordinate).

## Panics
The assertion fails.
assert_gej_point_eq(Gej, Point) -> () Assert that a Jacobian point equals the point encoded by a compressed Point.

## Panics
The assertion fails, or the compressed point does not decode to a valid curve point.
assert_gej_eq(Gej, Gej) -> () Assert that two Jacobian points represent the same curve point, without normalizing either one first.

## Panics
The assertion fails.
assert_gej_ge_eq(Gej, Ge) -> () Assert that a Jacobian point equals an affine point, without normalizing the Jacobian point first.

## Panics
The assertion fails.

u1 conversions

Click to hide
Standard library function
Description
u1_to_u8(u1) -> u8 Widen a u1 value to a u8 value, zero-extending the high bits.
u1_to_u16(u1) -> u16 Widen a u1 value to a u16 value, zero-extending the high bits.
u1_to_u32(u1) -> u32 Widen a u1 value to a u32 value, zero-extending the high bits.
u1_to_u64(u1) -> u64 Widen a u1 value to a u64 value, zero-extending the high bits.
u1_to_u128(u1) -> u128 Widen a u1 value to a u128 value, zero-extending the high bits.
u1_to_u256(u1) -> u256 Widen a u1 value to a u256 value, zero-extending the high bits.
u1_to_bool(u1) -> bool Convert a u1 value to bool.

u8 arithmetic

Click to hide
Standard library function
Description
checked_add_8(u8, u8) -> Option<u8> Add two u8 values. Return Some of the sum, or None if the result overflows u8.
safe_add_8(u8, u8) -> u8 Add two u8 values.

## Panics
Panics if the result overflows u8.
checked_sub_8(u8, u8) -> Option<u8> Subtract the second u8 value from the first. Return Some of the difference, or None if the result would underflow u8.
safe_sub_8(u8, u8) -> u8 Subtract the second u8 value from the first.

## Panics
Panics if the result would underflow u8.
checked_mul_8(u8, u8) -> Option<u8> Multiply two u8 values. Return Some of the product, or None if the result overflows u8.
safe_mul_8(u8, u8) -> u8 Multiply two u8 values.

## Panics
Panics if the result overflows u8.
checked_div_8(u8, u8) -> Option<u8> Divide the first u8 value by the second. Return Some of the quotient, or None if the divisor is zero.
safe_div_8(u8, u8) -> u8 Divide the first u8 value by the second.

## Panics
Panics if the divisor is zero.
gt_8(u8, u8) -> bool Check if the first u8 value is greater than the second.
ge_8(u8, u8) -> bool Check if the first u8 value is greater than or equal to the second.

u8 conversions

Click to hide
Standard library function
Description
u8_to_u16(u8) -> u16 Widen a u8 value to a u16 value, zero-extending the high bits.
u8_to_u32(u8) -> u32 Widen a u8 value to a u32 value, zero-extending the high bits.
u8_to_u64(u8) -> u64 Widen a u8 value to a u64 value, zero-extending the high bits.
u8_to_u128(u8) -> u128 Widen a u8 value to a u128 value, zero-extending the high bits.
u8_to_u256(u8) -> u256 Widen a u8 value to a u256 value, zero-extending the high bits.
split_u8_into_u1(u8) -> (u1, u1, u1, u1, u1, u1, u1, u1) Split a u8 value into eight u1 words, most-significant first.
safe_u8_to_u1(u8) -> u1 Narrow a u8 value to u1.

## Panics
Panics if the value does not fit in u1.

u16 arithmetic

Click to hide
Standard library function
Description
checked_add_16(u16, u16) -> Option<u16> Add two u16 values. Return Some of the sum, or None if the result overflows u16.
safe_add_16(u16, u16) -> u16 Add two u16 values.

## Panics
Panics if the result overflows u16.
checked_sub_16(u16, u16) -> Option<u16> Subtract the second u16 value from the first. Return Some of the difference, or None if the result would underflow u16.
safe_sub_16(u16, u16) -> u16 Subtract the second u16 value from the first.

## Panics
Panics if the result would underflow u16.
checked_mul_16(u16, u16) -> Option<u16> Multiply two u16 values. Return Some of the product, or None if the result overflows u16.
safe_mul_16(u16, u16) -> u16 Multiply two u16 values.

## Panics
Panics if the result overflows u16.
checked_div_16(u16, u16) -> Option<u16> Divide the first u16 value by the second. Return Some of the quotient, or None if the divisor is zero.
safe_div_16(u16, u16) -> u16 Divide the first u16 value by the second.

## Panics
Panics if the divisor is zero.
gt_16(u16, u16) -> bool Check if the first u16 value is greater than the second.
ge_16(u16, u16) -> bool Check if the first u16 value is greater than or equal to the second.

u16 conversions

Click to hide
Standard library function
Description
u16_to_u32(u16) -> u32 Widen a u16 value to a u32 value, zero-extending the high bits.
u16_to_u64(u16) -> u64 Widen a u16 value to a u64 value, zero-extending the high bits.
u16_to_u128(u16) -> u128 Widen a u16 value to a u128 value, zero-extending the high bits.
u16_to_u256(u16) -> u256 Widen a u16 value to a u256 value, zero-extending the high bits.
split_u16_into_u8(u16) -> (u8, u8) Split a u16 value into two u8 words, most-significant first.
safe_u16_to_u1(u16) -> u1 Narrow a u16 value to u1.

## Panics
Panics if the value does not fit in u1.
safe_u16_to_u8(u16) -> u8 Narrow a u16 value to u8.

## Panics
Panics if the value does not fit in u8.

u32 arithmetic

Click to hide
Standard library function
Description
checked_add_32(u32, u32) -> Option<u32> Add two u32 values. Return Some of the sum, or None if the result overflows u32.
safe_add_32(u32, u32) -> u32 Add two u32 values.

## Panics
Panics if the result overflows u32.
checked_sub_32(u32, u32) -> Option<u32> Subtract the second u32 value from the first. Return Some of the difference, or None if the result would underflow u32.
safe_sub_32(u32, u32) -> u32 Subtract the second u32 value from the first.

## Panics
Panics if the result would underflow u32.
checked_mul_32(u32, u32) -> Option<u32> Multiply two u32 values. Return Some of the product, or None if the result overflows u32.
safe_mul_32(u32, u32) -> u32 Multiply two u32 values.

## Panics
Panics if the result overflows u32.
checked_div_32(u32, u32) -> Option<u32> Divide the first u32 value by the second. Return Some of the quotient, or None if the divisor is zero.
safe_div_32(u32, u32) -> u32 Divide the first u32 value by the second.

## Panics
Panics if the divisor is zero.
gt_32(u32, u32) -> bool Check if the first u32 value is greater than the second.
ge_32(u32, u32) -> bool Check if the first u32 value is greater than or equal to the second.

u32 conversions

Click to hide
Standard library function
Description
u32_to_u64(u32) -> u64 Widen a u32 value to a u64 value, zero-extending the high bits.
u32_to_u128(u32) -> u128 Widen a u32 value to a u128 value, zero-extending the high bits.
u32_to_u256(u32) -> u256 Widen a u32 value to a u256 value, zero-extending the high bits.
split_u32_into_u8(u32) -> (u8, u8, u8, u8) Split a u32 value into four u8 words, most-significant first.
split_u32_into_u16(u32) -> (u16, u16) Split a u32 value into two u16 words, most-significant first.
safe_u32_to_u1(u32) -> u1 Narrow a u32 value to u1.

## Panics
Panics if the value does not fit in u1.
safe_u32_to_u8(u32) -> u8 Narrow a u32 value to u8.

## Panics
Panics if the value does not fit in u8.
safe_u32_to_u16(u32) -> u16 Narrow a u32 value to u16.

## Panics
Panics if the value does not fit in u16.

u64 arithmetic

Click to hide
Standard library function
Description
checked_add_64(u64, u64) -> Option<u64> Add two u64 values. Return Some of the sum, or None if the result overflows u64.
safe_add_64(u64, u64) -> u64 Add two u64 values.

## Panics
Panics if the result overflows u64.
checked_sub_64(u64, u64) -> Option<u64> Subtract the second u64 value from the first. Return Some of the difference, or None if the result would underflow u64.
safe_sub_64(u64, u64) -> u64 Subtract the second u64 value from the first.

## Panics
Panics if the result would underflow u64.
checked_mul_64(u64, u64) -> Option<u64> Multiply two u64 values. Return Some of the product, or None if the result overflows u64.
safe_mul_64(u64, u64) -> u64 Multiply two u64 values.

## Panics
Panics if the result overflows u64.
checked_div_64(u64, u64) -> Option<u64> Divide the first u64 value by the second. Return Some of the quotient, or None if the divisor is zero.
safe_div_64(u64, u64) -> u64 Divide the first u64 value by the second.

## Panics
Panics if the divisor is zero.
gt_64(u64, u64) -> bool Check if the first u64 value is greater than the second.
ge_64(u64, u64) -> bool Check if the first u64 value is greater than or equal to the second.

u64 conversions

Click to hide
Standard library function
Description
u64_to_u128(u64) -> u128 Widen a u64 value to a u128 value, zero-extending the high bits.
u64_to_u256(u64) -> u256 Widen a u64 value to a u256 value, zero-extending the high bits.
split_u64_into_u8(u64) -> (u8, u8, u8, u8, u8, u8, u8, u8) Split a u64 value into eight u8 words, most-significant first.
split_u64_into_u16(u64) -> (u16, u16, u16, u16) Split a u64 value into four u16 words, most-significant first.
split_u64_into_u32(u64) -> (u32, u32) Split a u64 value into two u32 words, most-significant first.
safe_u64_to_u1(u64) -> u1 Narrow a u64 value to u1.

## Panics
Panics if the value does not fit in u1.
safe_u64_to_u8(u64) -> u8 Narrow a u64 value to u8.

## Panics
Panics if the value does not fit in u8.
safe_u64_to_u16(u64) -> u16 Narrow a u64 value to u16.

## Panics
Panics if the value does not fit in u16.
safe_u64_to_u32(u64) -> u32 Narrow a u64 value to u32.

## Panics
Panics if the value does not fit in u32.

u128 bit logic

Click to hide
Standard library function
Description
and_128(u128, u128) -> u128 Bitwise AND of two u128 values.
or_128(u128, u128) -> u128 Bitwise OR of two u128 values.
eq_128(u128, u128) -> bool Check if two u128 values are equal.
left_shift_128(u8, u128) -> u128 Left-shift a u128 value by the given amount. Bits shifted out are discarded; vacated low bits are filled with zeroes.
right_shift_128(u8, u128) -> u128 Right-shift a u128 value by the given amount. Bits shifted out are discarded; vacated high bits are filled with zeroes.

u128 comparisons

Click to hide
Standard library function
Description
is_zero_128(u128) -> bool Check if a u128 value is zero.
lt_128(u128, u128) -> bool Check if the first u128 value is strictly less than the second.
le_128(u128, u128) -> bool Check if the first u128 value is less than or equal to the second.
gt_128(u128, u128) -> bool Check if the first u128 value is strictly greater than the second.
ge_128(u128, u128) -> bool Check if the first u128 value is greater than or equal to the second.

u128 conversions

Click to hide
Standard library function
Description
u128_to_u256(u128) -> u256 Widen a u128 value to a u256 value, zero-extending the high bits.
split_u128_into_u8(u128) -> (u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8) Split a u128 value into sixteen u8 words, most-significant first.
split_u128_into_u16(u128) -> (u16, u16, u16, u16, u16, u16, u16, u16) Split a u128 value into eight u16 words, most-significant first.
split_u128_into_u32(u128) -> (u32, u32, u32, u32) Split a u128 value into four u32 words, most-significant first.
split_u128_into_u64(u128) -> (u64, u64) Split a u128 value into two u64 words, most-significant first.
safe_u128_to_u1(u128) -> u1 Narrow a u128 value to u1.

## Panics
Panics if the value does not fit in u1.
safe_u128_to_u8(u128) -> u8 Narrow a u128 value to u8.

## Panics
Panics if the value does not fit in u8.
safe_u128_to_u16(u128) -> u16 Narrow a u128 value to u16.

## Panics
Panics if the value does not fit in u16.
safe_u128_to_u32(u128) -> u32 Narrow a u128 value to u32.

## Panics
Panics if the value does not fit in u32.
safe_u128_to_u64(u128) -> u64 Narrow a u128 value to u64.

## Panics
Panics if the value does not fit in u64.

u128 arithmetic

Click to hide
Standard library function
Description
add_128(u128, u128) -> (bool, u128) Add two u128 values. Return the carry bit and the sum.
add_128_64(u128, u64) -> (bool, u128) Add a u64 value to a u128 value. Return the carry bit and the sum.
checked_add_128(u128, u128) -> Option<u128> Add two u128 values. Return Some of the sum, or None if the result overflows u128.
safe_add_128(u128, u128) -> u128 Add two u128 values.

## Panics
Panics if the result overflows u128.
sub_128(u128, u128) -> (bool, u128) Subtract the second u128 value from the first. Return the borrow bit and the difference.
checked_sub_128(u128, u128) -> Option<u128> Subtract the second u128 value from the first. Return Some of the difference, or None if the result would underflow u128.
safe_sub_128(u128, u128) -> u128 Subtract the second u128 value from the first.

## Panics
Panics if the result would underflow u128.
mul_128(u128, u128) -> u256 Multiply two u128 values. The full, non-truncated product is returned as a u256, so this operation can never overflow.
checked_mul_128(u128, u128) -> Option<u128> Multiply two u128 values. Return Some of the product, or None if the result overflows u128.
safe_mul_128(u128, u128) -> u128 Multiply two u128 values.

## Panics
Panics if the result overflows u128.
div_mod_128_64(u128, u64) -> (u128, u64) Divide a u128 value by a u64 value, returning the u128 quotient and the u64 remainder.

## Panics
Panics if the divisor is zero.
div_mod_128(u128, u128) -> (u128, u128) Divide the first u128 value by the second, returning the quotient and the remainder.

## Panics
Panics if the divisor is zero.
div_128(u128, u128) -> u128 Divide the first u128 value by the second, returning the quotient.

## Panics
Panics if the divisor is zero.
checked_div_128(u128, u128) -> Option<u128> Divide the first u128 value by the second. Return Some of the quotient, or None if the divisor is zero.
safe_div_128(u128, u128) -> u128 Divide the first u128 value by the second.

## Panics
Panics if the divisor is zero.
full_add_128(bool, u128, u128) -> (bool, u128) Add two u128 values, taking an incoming carry bit. Return the outgoing carry bit and the sum.
full_sub_128(bool, u128, u128) -> (bool, u128) Subtract the second u128 value from the first, taking an incoming borrow bit. Return the outgoing borrow bit and the difference.
mul_128_64(u128, u64) -> u256 Multiply a u128 value by a u64 value. The full, non-truncated product is returned as a u256, so this operation can never overflow.
calculate_normalizer_base_64(u128, bool) -> u64 Helper for jet::div_mod_128_64-based division algorithms. Returns the factor by which b should be multiplied so that its most-significant non-zero word is at least 2^63, as required by those algorithms (which operate in base 2^64). Set is_b_u128 to true if b's upper 64 bits may be non-zero, or false if b is known to fit in u64 (in which case its upper 64 bits must already be zero).

## Panics
The assertion fails if is_b_u128 is false but b's upper 64 bits are non-zero, or if b is zero.
estimate_quotient_digit_base_64(u64, u64, u64, u64, u64) -> u64 Helper for Algorithm D division. Estimates and corrects the next base-2^64 quotient digit from the three most-significant dividend words (u2, u1, u0) and the two most-significant divisor words (v1, v0).

u256 bit logic

Click to hide
Standard library function
Description
and_256(u256, u256) -> u256 Bitwise AND of two u256 values.
or_256(u256, u256) -> u256 Bitwise OR of two u256 values.
left_shift_256(u8, u256) -> u256 Left-shift a u256 value by the given amount. Bits shifted out are discarded; vacated low bits are filled with zeroes.
right_shift_256(u8, u256) -> u256 Right-shift a u256 value by the given amount. Bits shifted out are discarded; vacated high bits are filled with zeroes.

u256 comparisons

Click to hide
Standard library function
Description
is_zero_256(u256) -> bool Check if a u256 value is zero.
lt_256(u256, u256) -> bool Check if the first u256 value is strictly less than the second.
le_256(u256, u256) -> bool Check if the first u256 value is less than or equal to the second.
gt_256(u256, u256) -> bool Check if the first u256 value is strictly greater than the second.
ge_256(u256, u256) -> bool Check if the first u256 value is greater than or equal to the second.

u256 conversions

Click to hide
Standard library function
Description
split_u256_into_u8(u256) -> (u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8) Split a u256 value into thirty-two u8 words, most-significant first.
split_u256_into_u16(u256) -> (u16, u16, u16, u16, u16, u16, u16, u16, u16, u16, u16, u16, u16, u16, u16, u16) Split a u256 value into sixteen u16 words, most-significant first.
split_u256_into_u32(u256) -> (u32, u32, u32, u32, u32, u32, u32, u32) Split a u256 value into eight u32 words, most-significant first.
split_u256_into_u64(u256) -> (u64, u64, u64, u64) Split a u256 value into four u64 words, most-significant first.
split_u256_into_u128(u256) -> (u128, u128) Split a u256 value into two u128 words, most-significant first.
safe_u256_to_u1(u256) -> u1 Narrow a u256 value to u1.

## Panics
Panics if the value does not fit in u1.
safe_u256_to_u8(u256) -> u8 Narrow a u256 value to u8.

## Panics
Panics if the value does not fit in u8.
safe_u256_to_u16(u256) -> u16 Narrow a u256 value to u16.

## Panics
Panics if the value does not fit in u16.
safe_u256_to_u32(u256) -> u32 Narrow a u256 value to u32.

## Panics
Panics if the value does not fit in u32.
safe_u256_to_u64(u256) -> u64 Narrow a u256 value to u64.

## Panics
Panics if the value does not fit in u64.
safe_u256_to_u128(u256) -> u128 Narrow a u256 value to u128.

## Panics
Panics if the value does not fit in u128.

u256 arithmetic

Click to hide
Standard library function
Description
add_256(u256, u256) -> (bool, u256) Add two u256 values. Return the carry bit and the sum.
add_256_128(u256, u128) -> (bool, u256) Add a u128 value to a u256 value. Return the carry bit and the sum.
checked_add_256(u256, u256) -> Option<u256> Add two u256 values. Return Some of the sum, or None if the result overflows u256.
safe_add_256(u256, u256) -> u256 Add two u256 values.

## Panics
Panics if the result overflows u256.
sub_256(u256, u256) -> (bool, u256) Subtract the second u256 value from the first. Return the borrow bit and the difference.
checked_sub_256(u256, u256) -> Option<u256> Subtract the second u256 value from the first. Return Some of the difference, or None if the result would underflow u256.
safe_sub_256(u256, u256) -> u256 Subtract the second u256 value from the first.

## Panics
Panics if the result would underflow u256.
mul_256(u256, u256) -> (u256, u256) Multiply two u256 values. The full, non-truncated product is returned as a pair of u256 values, most-significant first, so this operation can never overflow.
mul_256_64(u256, u64) -> (u64, u256) Multiply a u256 value by a u64 value. The full, non-truncated product is returned as a u64/u256 pair, most-significant first, so this operation can never overflow.
mul_256_128(u256, u128) -> (u128, u256) Multiply a u256 value by a u128 value. The full, non-truncated product is returned as a u128/u256 pair, most-significant first, so this operation can never overflow.
checked_mul_256(u256, u256) -> Option<u256> Multiply two u256 values. Return Some of the product, or None if the result overflows u256.
safe_mul_256(u256, u256) -> u256 Multiply two u256 values.

## Panics
Panics if the result overflows u256.
div_mod_256_64(u256, u64) -> (u256, u64) Divide a u256 value by a u64 value, returning the u256 quotient and the u64 remainder.

## Panics
Panics if the divisor is zero.
div_mod_256_128(u256, u128) -> (u256, u128) Divide a u256 value by a u128 value, returning the u256 quotient and the u128 remainder.

## Panics
Panics if the divisor is zero.
div_mod_256(u256, u256) -> (u256, u256) Divide the first u256 value by the second, returning the quotient and the remainder.

## Panics
Panics if the divisor is zero.
div_256(u256, u256) -> u256 Divide the first u256 value by the second, returning the quotient.

## Panics
Panics if the divisor is zero.
checked_div_256(u256, u256) -> Option<u256> Divide the first u256 value by the second. Return Some of the quotient, or None if the divisor is zero.
safe_div_256(u256, u256) -> u256 Divide the first u256 value by the second.

## Panics
Panics if the divisor is zero.