<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def constant_hop_timebase(hop, end_time):
 """Generates a time series from 0 to ``end_time`` with times spaced ``hop`` apart Parameters hop : float Spacing of samples in the time series end_time : float Time series will span ``[0, end_time]`` Returns ------- times : np.ndarray Generated timebase """

    # Compute new timebase.  Rounding/linspace is to avoid float problems.
    end_time = np.round(end_time, 10)
    times = np.linspace(0, hop*int(np.floor(end_time/hop)),
                        int(np.floor(end_time/hop)) + 1)
    times = np.round(times, 10)
    return times