code: def idiff(eq, y, x, n=1):
      """Return ``dy/dx`` assuming that ``eq == 0``.
  
      Parameters
      ==========
  
      y : the dependent variable or a list of dependent variables (with y first)
      x : the variable that the derivative is being taken with respect to
      n : the order of the derivative (default is 1)
  
      Examples
      ========
  
      >>> from sympy.abc import x, y, a
      >>> from sympy.geometry.util import idiff
  
      >>> circ = x**2 + y**2 - 4
      >>> idiff(circ, y, x)
      -x/y
      >>> idiff(circ, y, x, 2).simplify()
      (-x**2 - y**2)/y**3
  
      Here, ``a`` is assumed to be independent of ``x``:
  
      >>> idiff(x + a + y, y, x)
      -1
  
      Now the x-dependence of ``a`` is made explicit by listing ``a`` after
      ``y`` in a list.
  
      >>> idiff(x + a + y, [y, a], x)
      -Derivative(a, x) - 1
  
      See Also
      ========
  
      sympy.core.function.Derivative: represents unevaluated derivatives
      sympy.core.function.diff: explicitly differentiates wrt symbols
  
      """
      if is_sequence(y):
          dep = set(y)
          y = y[0]
      elif isinstance(y, Symbol):
          dep = {y}
      elif isinstance(y, Function):
          pass
      else:
          raise ValueError(
              "expecting x-dependent symbol(s) or function(s) but got: %s"
              % y
          )
  
      f = {
          s: Function(s.name)(x)
          for s in eq.free_symbols
          if s != x and s in dep
      }
  
      if isinstance(y, Symbol):
          dydx = Function(y.name)(x).diff(x)
      else:
          dydx = y.diff(x)
  
      eq = eq.subs(f)
      derivs = {}
      for i in range(n):
          # equation will be linear in dydx, a*dydx + b, so dydx = -b/a
          deq = eq.diff(x)
          b = deq.xreplace({dydx: S.Zero})
          a = (deq - b).xreplace({dydx: S.One})
          yp = factor_terms(
              expand_mul(cancel((-b / a).subs(derivs)), deep=False)
          )
          if i == n - 1:
              return yp.subs([(v, k) for k, v in f.items()])
          derivs[dydx] = yp
          eq = dydx - yp
          dydx = dydx.diff(x)
  
imports: from collections import deque
  from math import sqrt
  from sympy import nsimplify
  from .entity import GeometryEntity
  from .exceptions import GeometryError
  from .point import Point, Point2D, Point3D
  from sympy.core.containers import OrderedSet
  from sympy.core.exprtools import factor_terms
  from sympy.core.function import Function, expand_mul
  from sympy.core.numbers import Float
  from sympy.core.sorting import ordered
  from sympy.core.symbol import Symbol
  from sympy.core.singleton import S
  from sympy.polys.polytools import cancel
  from sympy.functions.elementary.miscellaneous import sqrt
  from sympy.utilities.iterables import is_sequence
  from mpmath.libmp.libmpf import prec_to_dps
label_desc: Use image node_id 9 for calling a global function with example usage: idiff(eq, y, x, n) and returns: yp