pub 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
3508 3509 3510 3511 3512 3513 3514 3515 3516 3517
pub fn gcd(rma: *Managed, x: *const Managed, y: *const Managed) !void { const aliased = limbsAliasDistinct(rma, x) or limbsAliasDistinct(rma, y); const needed = @min(x.len(), y.len()); try rma.ensureAliasAwareCapacity(needed, aliased); var m = rma.toMutable(); var limbs_buffer = std.array_list.Managed(Limb).init(rma.allocator); defer limbs_buffer.deinit(); try m.gcd(x.toConst(), y.toConst(), &limbs_buffer); rma.setMetadata(m.positive, m.len); }
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.