def METHOD_NAME(
    ivp, step_small, step_large, solution_large_step, solution_small_step, algo_order
):
    """Assert that by halfing the step-size, the error of the small step is roughly the
    error of the large step multiplied with (small / large)**(nu)"""
    # Check that the final point is identical (sanity check)
    np.testing.assert_allclose(
        solution_small_step.locations[-1], solution_large_step.locations[-1]
    )
    # Compute both errors
    ref_sol = ivp.solution(solution_small_step.locations[-1])
    err_small_step = np.linalg.norm(ref_sol - solution_small_step.states[-1].mean)
    err_large_step = np.linalg.norm(ref_sol - solution_large_step.states[-1].mean)
    # Non-strict rtol, bc this test is flaky by construction
    # As long as rtol < 1., this test seems meaningful.
    error_decay_expected = (step_small / step_large) ** algo_order
    error_decay_received = err_small_step / err_large_step
    np.testing.assert_allclose(error_decay_received, error_decay_expected, rtol=0.95)