pub(super) fn widening_mul(a: u128, b: u128) -> [u128; 2]
[low, high] = a * b.
[low, high] = a * b
This cannot overflow, because
(n - 1) * (n - 1) + 2 * (n - 1) == (n - 1) * (n + 1)
which is less than n2.