def coefficients(deriv, acc):
    """
    Calculates the finite difference coefficients for given derivative order and accuracy order.
    Assumes that the underlying grid is uniform. This function is available at the `findiff`
    package level.
    
    :param deriv: int > 0: The derivative order.
          
    :param acc:  even int > 0: The accuracy order. 
          
    :return: dict with the finite difference coefficients and corresponding offsets 
    """

    if acc % 2 == 1:
        acc += 1

    ret = {}

    # Determine central coefficients

    num_central = 2 * math.floor((deriv + 1) / 2) - 1 + acc
    num_side = num_central // 2

    ret["center"] = _calc_coef(num_side, num_side, deriv)

    # Determine forward coefficients

    if deriv % 2 == 0:
        num_coef = num_central + 1
    else:
        num_coef = num_central

    ret["forward"] = _calc_coef(0, num_coef - 1, deriv)

    # Determine backward coefficients

    ret["backward"] = _calc_coef(num_coef - 1, 0, deriv)

    return ret
Calculates the finite difference coefficients for given derivative order and accuracy order.
    Assumes that the underlying grid is uniform. This function is available at the `findiff`
    package level.
    
    :param deriv: int > 0: The derivative order.
          
    :param acc:  even int > 0: The accuracy order. 
          
    :return: dict with the finite difference coefficients and corresponding offsets