Function sqrt [src]

r = ⌊√a⌋

Prototype

pub fn sqrt(rma: *Managed, a: *const Managed) !void

Parameters

rma: *Manageda: *const Managed

Source

pub fn sqrt(rma: *Managed, a: *const Managed) !void { const bit_count = a.bitCountAbs(); if (bit_count == 0) { try rma.set(0); rma.setMetadata(a.isPositive(), rma.len()); return; } if (!a.isPositive()) { return error.SqrtOfNegativeNumber; } const needed_limbs = calcSqrtLimbsBufferLen(bit_count); const limbs_buffer = try rma.allocator.alloc(Limb, needed_limbs); defer rma.allocator.free(limbs_buffer); try rma.ensureCapacity((a.len() - 1) / 2 + 1); var m = rma.toMutable(); m.sqrt(a.toConst(), limbs_buffer); rma.setMetadata(m.positive, m.len); }