Function clz [src]

Returns the number of leading zeros in twos-complement form.

Prototype

pub fn clz(a: Const, bits: Limb) Limb

Parameters

a: Constbits: Limb

Source

pub fn clz(a: Const, bits: Limb) Limb { // Limbs are stored in little-endian order but we need to iterate big-endian. if (!a.positive and !a.eqlZero()) return 0; var total_limb_lz: Limb = 0; var i: usize = a.limbs.len; const bits_per_limb = @bitSizeOf(Limb); while (i != 0) { i -= 1; const this_limb_lz = @clz(a.limbs[i]); total_limb_lz += this_limb_lz; if (this_limb_lz != bits_per_limb) break; } const total_limb_bits = a.limbs.len * bits_per_limb; return total_limb_lz + bits - total_limb_bits; }