def binary_horner(poly, x):
    """
    Returns the binary polynomial :code:`poly` evaluated at point :code:`x`, using `Horner's
    method <https://en.wikipedia.org/wiki/Horner's_method>`_.  Any Python object supporting
    the operations of addition, subtraction, and multiplication may serve as the input point.
    """
    result = x - x
    for coefficient in reversed(poly.coefficients()):
        result *= x
        if coefficient:
            result += coefficient
    return result
