Skip to content

zorch.utils.bits

Bit/log helpers for power-of-two sized data.

log2_strict_usize

log2_strict_usize(n: int) -> int

Exact log2 of a power of two; raises ValueError otherwise.

Source code in zorch/utils/bits.py
11
12
13
14
15
def log2_strict_usize(n: int) -> int:
    """Exact log2 of a power of two; raises ValueError otherwise."""
    if not is_power_of_two(n):
        raise ValueError(f"{n} is not a power of two")
    return n.bit_length() - 1

log2_ceil_usize

log2_ceil_usize(n: int) -> int

ceil(log2 n); 0 for n <= 1.

Source code in zorch/utils/bits.py
18
19
20
21
22
def log2_ceil_usize(n: int) -> int:
    """ceil(log2 n); 0 for n <= 1."""
    if n <= 1:
        return 0
    return (n - 1).bit_length()