Function add [src]

r = a + b r, a and b may be aliases. Asserts the result fits in r. An upper bound on the number of limbs needed by r is @max(a.limbs.len, b.limbs.len) + 1.

Prototype

pub fn add(r: *Mutable, a: Const, b: Const) void

Parameters

r: *Mutablea: Constb: Const

Source

pub fn add(r: *Mutable, a: Const, b: Const) void { if (r.addCarry(a, b)) { // Fix up the result. Note that addCarry normalizes by a.limbs.len or b.limbs.len, // so we need to set the length here. const msl = @max(a.limbs.len, b.limbs.len); // `[add|sub]Carry` normalizes by `msl`, so we need to fix up the result manually here. // Note, the fact that it normalized means that the intermediary limbs are zero here. r.len = msl + 1; r.limbs[msl] = 1; // If this panics, there wasn't enough space in `r`. } }