#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).

maximum root/numeric/N64.vi:18

const maximum: N64;

fork root/numeric/N64.vi:20

impl fork: Fork[N64];

drop root/numeric/N64.vi:21

impl drop: Drop[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 root/numeric/N64.vi:43

impl add: Add[N64, N64, N64];

add_n32 root/numeric/N64.vi:52

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

sub root/numeric/N64.vi:61

impl sub: Sub[N64, N64, N64];

sub_n32 root/numeric/N64.vi:70

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

mul root/numeric/N64.vi:79

impl mul: Mul[N64, N64, 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 root/numeric/N64.vi:126

impl div: Div[N64, N64, N64];

rem root/numeric/N64.vi:132

impl rem: Rem[N64, N64, N64];

div_rem root/numeric/N64.vi:139

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

bit_and root/numeric/N64.vi:176

impl bit_and: BitAnd[N64, N64, N64];

bit_or root/numeric/N64.vi:182

impl bit_or: BitOr[N64, N64, N64];

bit_xor root/numeric/N64.vi:188

impl bit_xor: BitXor[N64, N64, N64];

shl root/numeric/N64.vi:194

impl shl: Shl[N64, N32, N64];

shr root/numeric/N64.vi:204

impl shr: Shr[N64, N32, N64];

eq root/numeric/N64.vi:214

impl eq: Eq[N64];

ord root/numeric/N64.vi:224

impl ord: Ord[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];

show root/numeric/N64.vi:288

impl show: Show[N64];

pow root/numeric/N64.vi:294

impl pow: Pow[N64, N32, N64];

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;