Skip to main content

Module std::u128

use std::ascii;
use std::option;
use std::string;
use std::vector;

Function bitwise_not

Returns the bitwise not of the value.
Each bit that is 1 becomes 0. Each bit that is 0 becomes 1.

public fun bitwise_not(x: u128): u128

Function max

Return the larger of x and y

public fun max(x: u128, y: u128): u128

Function min

Return the smaller of x and y

public fun min(x: u128, y: u128): u128

Function diff

Return the absolute value of x - y

public fun diff(x: u128, y: u128): u128

Function divide_and_round_up

Calculate x / y, but round up the result.

public fun divide_and_round_up(x: u128, y: u128): u128

Function pow

Return the value of a base raised to a power

public fun pow(base: u128, exponent: u8): u128

Function sqrt

Get a nearest lower integer Square Root for x. Given that this function can only operate with integers, it is impossible to get perfect (or precise) integer square root for some numbers.

Example:

math::sqrt(9) => 3
math::sqrt(8) => 2 // the nearest lower square root is 4;

In integer math, one of the possible ways to get results with more precision is to use higher values or temporarily multiply the value by some bigger number. Ideally if this is a square of 10 or 100.

Example:

math::sqrt(8) => 2;
math::sqrt(8 * 10000) => 282;
// now we can use this value as if it was 2.82;
// but to get the actual result, this value needs
// to be divided by 100 (because sqrt(10000)).


math::sqrt(8 * 1000000) => 2828; // same as above, 2828 / 1000 (2.828)
public fun sqrt(x: u128): u128

Function try_as_u8

Try to convert a u128 to a u8. Returns None if the value is too large.

public fun try_as_u8(x: u128): std::option::Option<u8>

Function try_as_u16

Try to convert a u128 to a u16. Returns None if the value is too large.

public fun try_as_u16(x: u128): std::option::Option<u16>

Function try_as_u32

Try to convert a u128 to a u32. Returns None if the value is too large.

public fun try_as_u32(x: u128): std::option::Option<u32>

Function try_as_u64

Try to convert a u128 to a u64. Returns None if the value is too large.

public fun try_as_u64(x: u128): std::option::Option<u64>

Function to_string

public fun to_string(x: u128): std::string::String

Function checked_add

Try to add x and y.
Returns None if the addition would overflow.

public fun checked_add(x: u128, y: u128): std::option::Option<u128>

Function checked_sub

Try to subtract y from x.
Returns None if y > x.

public fun checked_sub(x: u128, y: u128): std::option::Option<u128>

Function checked_mul

Try to multiply x and y.
Returns None if the multiplication would overflow.

public fun checked_mul(x: u128, y: u128): std::option::Option<u128>

Function checked_div

Try to divide x by y.
Returns None if y is zero.

public fun checked_div(x: u128, y: u128): std::option::Option<u128>

Function saturating_add

Add x and y, saturating at the maximum value instead of overflowing.

public fun saturating_add(x: u128, y: u128): u128

Function saturating_sub

Subtract y from x, saturating at 0 instead of underflowing.

public fun saturating_sub(x: u128, y: u128): u128

Function saturating_mul

Multiply x and y, saturating at the maximum value instead of overflowing.

public fun saturating_mul(x: u128, y: u128): u128

Function checked_shl

Shifts x left by shift bits.
Returns None if the shift is greater than or equal to the bit size of 128.

public fun checked_shl(x: u128, shift: u8): std::option::Option<u128>

Function checked_shr

Shifts x right by shift bits.
Returns None if the shift is greater than or equal to the bit size of 128.

public fun checked_shr(x: u128, shift: u8): std::option::Option<u128>

Function lossless_shl

Shifts x left by shift bits.
Returns None if the shift is larger than or equal to the bit size of 128, or if the shift would lose any bits (if the operation is not reversible).

public fun lossless_shl(x: u128, shift: u8): std::option::Option<u128>

Function lossless_shr

Shifts x right by shift bits.
Returns None if the shift is larger than or equal to the bit size of 128, or if the shift would lose any bits (if the operation is not reversible).

public fun lossless_shr(x: u128, shift: u8): std::option::Option<u128>

Function lossless_div

Divides x by y.
Returns None if y is zero or if there is a non-zero remainder (if x % y != 0). In other words, it returns None if the operation is not reversible.

public fun lossless_div(x: u128, y: u128): std::option::Option<u128>

Macro function max_value

Maximum value for a u128

public macro fun max_value(): u128

Macro function range_do

Loops applying f</span>toeachnumberfrom<spanclass="codeinline">f</span> to each number from <span class="code-inline">start to $stop (exclusive)

public macro fun range_do<$R: drop>($start: u128, $stop: u128, $f: |u128| -> $R)

Macro function range_do_eq

Loops applying f</span>toeachnumberfrom<spanclass="codeinline">f</span> to each number from <span class="code-inline">start to $stop (inclusive)

public macro fun range_do_eq<$R: drop>($start: u128, $stop: u128, $f: |u128| -> $R)

Macro function do

Loops applying f</span>toeachnumberfrom<spanclass="codeinline">0</span>to<spanclass="codeinline">f</span> to each number from <span class="code-inline">0</span> to <span class="code-inline">stop (exclusive)

public macro fun do<$R: drop>($stop: u128, $f: |u128| -> $R)

Macro function do_eq

Loops applying f</span>toeachnumberfrom<spanclass="codeinline">0</span>to<spanclass="codeinline">f</span> to each number from <span class="code-inline">0</span> to <span class="code-inline">stop (inclusive)

public macro fun do_eq<$R: drop>($stop: u128, $f: |u128| -> $R)