Solution (source code)

= Solution

Add corresponding coefficients, treating missing coefficients as zero:

``
function Add(a, b: number): number
    L := max(len(a), len(b))
    new(result, L)
    for i := 0 to L-1 do
        result[i] := 0
        if i < len(a) then result[i] := result[i] + a[i]
        if i < len(b) then result[i] := result[i] + b[i]
    Normal(result)
    return result
``

By the <digit-array integer representation>, the raw result has value $\operatorname{val}(a)+\operatorname{val}(b)$. <Carry normalization of a digit array> produces a normalized result, including any final carry. Both input arrays remain unchanged, so the operation also works when `a` and `b` alias each other.