docs: def partial_derivative(f, x, n, nargs, delta=DELTA):
      """
      Calculate partial derivative using central finite difference approximation.
  
      :param f: function
      :param x: sequence of arguments
      :param n: index of argument derivateve is with respect to
      :param nargs: number of arguments
      :param delta: optional step size, default is :math:`\\epsilon^{1/3}` where
          :math:`\\epsilon` is machine precision
      """
      dx = np.zeros((nargs, len(x[n])))
      # scale delta by (|x| + 1.0) to avoid noise from machine precision
      dx[n] += np.where(x[n], x[n] * delta, delta)
      # apply central difference approximation
      x_dx = zip(*[xi + (dxi, -dxi) for xi, dxi in zip(x, dx)])
      return (f(x_dx[0]) - f(x_dx[1])) / dx[n] / 2.0