Skip to content

Minilib.Math.BigInt

Defined in minilib-math@0.6.1

Arbitrary-precision integer.

Values

namespace Minilib.Math.BigInt

abs

Type: Minilib.Math.BigInt::BigInt -> Minilib.Math.BigInt::BigInt

a.abs returns the absolute value of a.

bit_length

Type: Minilib.Math.BigInt::BigInt -> Std::U64

Returns the bit length of a.@nat, ie. one plus the bit position of most significant 1. Returns 0 if a is zero.

cmp

Type: Minilib.Math.BigInt::BigInt -> Minilib.Math.BigInt::BigInt -> Std::I64

BigInt::cmp(a,b) returns 1 if a > b, -1 if a < b, 0 if a == b.

divmod_by_two

Type: Minilib.Math.BigInt::BigInt -> (Minilib.Math.BigInt::BigInt, Minilib.Math.BigInt::BigInt)

BigInt::divmod_by_two(a) returns (a/2, a%2).

from_I64

Type: Std::I64 -> Minilib.Math.BigInt::BigInt

BigInt::from_I64(i64) creates new BigInt object from i64.

from_U64

Type: Std::U64 -> Minilib.Math.BigInt::BigInt

BigInt::from_U64(u64) creates new BigInt object from u64.

generate_bigint

Type: [m : Minilib.Monad.Random::MonadRandom] Std::I64 -> m Minilib.Math.BigInt::BigInt

generate_bigint(bit_length) generates a random BigInt of the specified bit length.

generate_bigint_range

Type: [m : Minilib.Monad.Random::MonadRandom] Minilib.Math.BigInt::BigInt -> Minilib.Math.BigInt::BigInt -> m Minilib.Math.BigInt::BigInt

generate_bigint_range(begin, end) generates a random BigInt r such that begin <= r && r < end.

is_even

Type: Minilib.Math.BigInt::BigInt -> Std::Bool

a.is_even returns true iff a is an even number.

is_negative

Type: Minilib.Math.BigInt::BigInt -> Std::Bool

a.is_negative returns true iff a is a negative number.

is_odd

Type: Minilib.Math.BigInt::BigInt -> Std::Bool

a.is_odd returns true iff a is an odd number.

is_positive

Type: Minilib.Math.BigInt::BigInt -> Std::Bool

a.is_positive returns true iff a is a positive number.

is_zero

Type: Minilib.Math.BigInt::BigInt -> Std::Bool

a.is_zero returns true iff a is zero.

make

Type: Std::I64 -> Std::Array Std::U32 -> Minilib.Math.BigInt::BigInt

BigInt::make(sign, nat) creates new BigInt object.

repeat_by_BigInt

Type: (a -> a -> a) -> a -> a -> Minilib.Math.BigInt::BigInt -> a

repeat_by_BigInt(op, x, a, n) calculates x.op(a).op(a)... for n times. op is an associative binary operation.

shift_left

Type: Std::U64 -> Minilib.Math.BigInt::BigInt -> Minilib.Math.BigInt::BigInt

Shifts @nat to left. NOTE @sign does not affect at all.

shift_right

Type: Std::U64 -> Minilib.Math.BigInt::BigInt -> Minilib.Math.BigInt::BigInt

Shifts @nat to right. NOTE @sign does not affect at all.

to_I64

Type: Minilib.Math.BigInt::BigInt -> Std::I64

Converts BigInt to I64. If overflow, it produces unexpected result.

two

Type: Minilib.Math.BigInt::BigInt

BigInt constant representing 2.

Types and aliases

namespace Minilib.Math.BigInt

BigInt

Defined as: type BigInt = unbox struct { ...fields... }

Arbitrary-precision integer.

field sign

Type: Std::I64

field nat

Type: Std::Array Std::U32

Traits and aliases

Trait implementations

impl Minilib.Math.BigInt::BigInt : Minilib.Math.Types::DivMod

divmod(a,b) returns (a/b, a%b). NOTE: -8 / 3 == -2 and -8 % 3 == -2, as with the Fix language.

impl Minilib.Math.BigInt::BigInt : Minilib.Math.Types::One

impl Minilib.Math.BigInt::BigInt : Std::Add

impl Minilib.Math.BigInt::BigInt : Std::Div

NOTE: -8 / 3 == -2, as with the Fix language.

impl Minilib.Math.BigInt::BigInt : Std::Eq

Checks two BigInts are equal.

impl Minilib.Math.BigInt::BigInt : Std::FromBytes

impl Minilib.Math.BigInt::BigInt : Std::FromString

Converts BigInt from a decimal string.

impl Minilib.Math.BigInt::BigInt : Std::LessThan

Compares two BigInts.

impl Minilib.Math.BigInt::BigInt : Std::LessThanOrEq

Compares two BigInts.

impl Minilib.Math.BigInt::BigInt : Std::Mul

impl Minilib.Math.BigInt::BigInt : Std::Neg

impl Minilib.Math.BigInt::BigInt : Std::Rem

NOTE: -8 % 3 == -2, as with the Fix language.

impl Minilib.Math.BigInt::BigInt : Std::Sub

impl Minilib.Math.BigInt::BigInt : Std::ToBytes

NOTE: Unneeded zeros might be placed at the beginning

impl Minilib.Math.BigInt::BigInt : Std::ToString

Converts BigInt to a decimal string.

impl Minilib.Math.BigInt::BigInt : Std::Zero