Function log2_int [src]

Return the log base 2 of integer value x, rounding down to the nearest integer.

Prototype

pub fn log2_int(comptime T: type, x: T) Log2Int(T)

Parameters

T: typex: T

Example

test log2_int { try testing.expect(log2_int(u32, 1) == 0); try testing.expect(log2_int(u32, 2) == 1); try testing.expect(log2_int(u32, 3) == 1); try testing.expect(log2_int(u32, 4) == 2); try testing.expect(log2_int(u32, 5) == 2); try testing.expect(log2_int(u32, 6) == 2); try testing.expect(log2_int(u32, 7) == 2); try testing.expect(log2_int(u32, 8) == 3); try testing.expect(log2_int(u32, 9) == 3); try testing.expect(log2_int(u32, 10) == 3); }

Source

pub fn log2_int(comptime T: type, x: T) Log2Int(T) { if (@typeInfo(T) != .int or @typeInfo(T).int.signedness != .unsigned) @compileError("log2_int requires an unsigned integer, found " ++ @typeName(T)); assert(x != 0); return @as(Log2Int(T), @intCast(@typeInfo(T).int.bits - 1 - @clz(x))); }