def _modulo_ab(x: float, a: float, b: float) -> float:
    """Map a real number onto the interval [a, b)."""
    if a >= b:
        raise ValueError("Incorrect interval ends.")
    y = (x - a) % (b - a)
    return y + b if y < 0 else y + a