fn gcd(rma: *Managed, x: *const Managed, y: *const Managed) !void
rma may alias x or y. x and y may alias each other.
rma’s allocator is used for temporary storage to boost multiplication performance.
rma: *Managed,
x: *const Managed,
y: *const Managed,