docs: def uddf(udfunc, x, dx):
      """
      Routine to calculate the first derivative of a caller-specified
      function using a three-point estimation.
  
      Use the @spiceypy.utils.callbacks.SpiceUDFUNS dectorator to wrap
      a given python function that takes one parameter (float) and
      returns a float. For example::
  
          @spiceypy.utils.callbacks.SpiceUDFUNS
          def udfunc(et_in):
              pos, new_et = spice.spkpos("MERCURY", et_in, "J2000", "LT+S", "MOON")
              return new_et
  
          deriv = spice.uddf(udfunc, et, 1.0)
  
      https://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/cspice/uddf_c.html
  
      :param udfunc: Name of the routine that computes the scalar value of interest.
      :type udfunc: ctypes.CFunctionType
      :param x: Independent variable of 'udfunc'.
      :type x: float
      :param dx: Interval from 'x' for derivative calculation.
      :type dx: float
      :return: Approximate derivative of 'udfunc' at 'x'
      :rtype: float
      """
      x = ctypes.c_double(x)
      dx = ctypes.c_double(dx)
      deriv = ctypes.c_double()
      libspice.uddf_c(udfunc, x, dx, ctypes.byref(deriv))
      return deriv.value