def ceil_div(a, b):
    """Return ceil(a / b) without performing any floating-point operations."""
    if not isinstance(a, int) or not isinstance(b, int):
        raise TypeError('unsupported operand type(s): %r and %r' % (type(a)
            .__name__, type(b).__name__))
    q, r = divmod(a, b)
    if r:
        return q + 1
    else:
        return q
