Function shiftRight [src]
r = a >> shift
r and a may alias.
Prototype
pub fn shiftRight(r: *Managed, a: *const Managed, shift: usize) !void
Parameters
r: *Managed
a: *const Managed
shift: usize
Source
pub fn shiftRight(r: *Managed, a: *const Managed, shift: usize) !void {
if (a.len() <= shift / limb_bits) {
// Shifting negative numbers converges to -1 instead of 0
if (a.isPositive()) {
r.metadata = 1;
r.limbs[0] = 0;
} else {
r.metadata = 1;
r.setSign(false);
r.limbs[0] = 1;
}
return;
}
try r.ensureCapacity(a.len() - (shift / limb_bits));
var m = r.toMutable();
m.shiftRight(a.toConst(), shift);
r.setMetadata(m.positive, m.len);
}