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: *Mutable
a: Const
b: 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`.
}
}