#root::numeric

Nat root/numeric/Nat/Nat.vi

struct Nat(...);

Arbitrary-precision natural numbers.

let x = 12[Nat] + 34[Nat];
x // 46

impl

impl : Fork[Nat];
impl : Drop[Nat];
impl : Fork[Nat];
impl : Drop[Nat];
impl : Add[Nat, Nat, Nat];
impl : Sub[Nat, Nat, Nat];
impl : Mul[Nat, Nat, Nat];
impl : Div[Nat, Nat, Nat];
impl : Rem[Nat, Nat, Nat];
impl : BitAnd[Nat, Nat, Nat];
impl : BitOr[Nat, Nat, Nat];
impl : BitXor[Nat, Nat, Nat];
impl : Shl[Nat, N32, Nat];
impl : Shr[Nat, N32, Nat];
impl : Eq[Nat];
impl : Ord[Nat];
impl : Show[Nat];

div_rem root/numeric/Nat/div_rem.vi

fn div_rem(a: Nat, d: Nat) -> (Nat, Nat);

from_parts root/numeric/Nat/Nat.vi:20

fn from_parts(parts: List[N32]) -> Nat;

to_parts root/numeric/Nat/Nat.vi:25

fn to_parts(...: Nat) -> List[N32];

is_zero root/numeric/Nat/Nat.vi:29

fn is_zero(...: &Nat) -> Bool;

add_n32 root/numeric/Nat/Nat.vi:33

impl add_n32: Add[Nat, N32, Nat];

mul_n32 root/numeric/Nat/Nat.vi:117

impl mul_n32: Mul[Nat, N32, Nat];

pow_n32 root/numeric/Nat/Nat.vi:157

impl pow_n32: Pow[Nat, N32, Nat];

div_n32 root/numeric/Nat/Nat.vi:163

impl div_n32: Div[Nat, N32, Nat];

rem_n32 root/numeric/Nat/Nat.vi:169

impl rem_n32: Rem[Nat, N32, N32];

div_rem_n32 root/numeric/Nat/Nat.vi:175

fn div_rem_n32(a: Nat, d: N32) -> (Nat, N32);

from_n32 root/numeric/Nat/Nat.vi:302

impl from_n32: Cast[N32, Nat];

to_n32 root/numeric/Nat/Nat.vi:312

impl to_n32: Cast[Nat, N32];

from_n64 root/numeric/Nat/Nat.vi:318

impl from_n64: Cast[N64, Nat];

to_n64 root/numeric/Nat/Nat.vi:328

impl to_n64: Cast[Nat, N64];

parse root/numeric/Nat/Nat.vi:374

fn parse(str: String) -> Option[Nat];

to_string root/numeric/Nat/Nat.vi:392

impl to_string: Cast[Nat, String];

trailing_zeros root/numeric/Nat/Nat.vi:413

fn trailing_zeros(...: &Nat) -> N32;

gcd root/numeric/Nat/Nat.vi:424

fn gcd(a: Nat, b: Nat) -> Nat;
  1. div_rem