#root::numeric

N64 root/numeric/N64.vi

struct N64((N32, N32));

Natural numbers represented with 64 bits of precision.

let x = 123456789[N64] + 9876543210[N64];
x // 9999999999

N64 values are always in the range [0, 2^64) = [0, 18_446_744_073_709_551_616).

impl

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

maximum root/numeric/N64.vi:18

const maximum: N64;

from_n32 root/numeric/N64.vi:23

impl from_n32: Cast[N32, N64];

to_n32 root/numeric/N64.vi:29

impl to_n32: Cast[N64, N32];

is_zero root/numeric/N64.vi:39

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

add_n32 root/numeric/N64.vi:52

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

sub_n32 root/numeric/N64.vi:70

impl sub_n32: Sub[N64, N32, N64];

mul_n32 root/numeric/N64.vi:90

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

mul_n32_n32 root/numeric/N64.vi:96

fn mul_n32_n32(a: N32, b: N32) -> N64;

div_n32 root/numeric/N64.vi:100

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

rem_n32 root/numeric/N64.vi:106

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

div_rem_n32 root/numeric/N64.vi:112

fn div_rem_n32(...: N64, d: N32) -> (N64, N32);

div_rem root/numeric/N64.vi:139

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

min root/numeric/N64.vi:238

fn min(a: N64, b: N64) -> N64;

max root/numeric/N64.vi:246

fn max(a: N64, b: N64) -> N64;

parse root/numeric/N64.vi:254

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

to_string root/numeric/N64.vi:272

impl to_string: Cast[N64, String];

log_n32 root/numeric/N64.vi:300

fn log_n32(n: N64, b: N32) -> N32;

diff root/numeric/N64.vi:310

fn diff(a: N64, b: N64) -> N64;

to_n64 root/numeric/N64.vi:318

impl to_n64: Cast[Bool, N64];