rma may alias x or y. x and y may alias each other. Asserts that rma
has enough limbs to store the result. Upper bound is @min(x.limbs.len, y.limbs.len)
.
limbs_buffer
is used for temporary storage during the operation. When this function returns, it will have the same length as it had when the function was called.