<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def binary_to_float(binary_list, lower_bound, upper_bound):
 """Return a floating point number between lower and upper bounds, from binary. Args: binary_list: list<int>; List of 0s and 1s. The number of bits in this list determine the number of possible values between lower and upper bound. Increase the size of binary_list for more precise floating points. lower_bound: Minimum value for output, inclusive. A binary list of 0s will have this value. upper_bound: Maximum value for output, inclusive. A binary list of 1s will have this value. Returns: float; A floating point number. """

    # Edge case for empty binary_list
    if binary_list == []:
        # With 0 bits, only one value can be represented,
        # and we default to lower_bound
        return lower_bound


    # A little bit of math gets us a floating point
    # number between upper and lower bound
    # We look at the relative position of
    # the integer corresponding to our binary list
    # between the upper and lower bound,
    # and offset that by lower bound
    return ((
        # Range between lower and upper bound
        float(upper_bound - lower_bound)
        # Divided by the maximum possible integer
        / (2**len(binary_list) - 1)
        # Times the integer represented by the given binary
        * binary_to_int(binary_list))
            # Plus the lower bound
            + lower_bound)