code: def _comparison_op(
      numpy_fn: Callable[..., Any], lax_fn: BinOp
  ) -> BinOp:
      def fn(x1, x2, /):
          x1, x2 = promote_args(numpy_fn.__name__, x1, x2)
          # Comparison on complex types are defined as a lexicographic ordering on
          # the (real, imag) pair.
          if dtypes.issubdtype(dtypes.dtype(x1), np.complexfloating):
              rx = lax.real(x1)
              ry = lax.real(x2)
              return lax.select(
                  lax.eq(rx, ry),
                  lax_fn(lax.imag(x1), lax.imag(x2)),
                  lax_fn(rx, ry),
              )
          return lax_fn(x1, x2)
  
      fn.__qualname__ = f"jax.numpy.{numpy_fn.__name__}"
      fn = jit(fn, inline=True)
      return _wraps(numpy_fn, module="numpy")(fn)
  
imports: from __future__ import annotations
  from functools import partial
  import operator
  from textwrap import dedent
  from typing import Any, Callable, overload
  import numpy
  from jax._src import core
  from jax._src import dtypes
  from jax._src.api import jit
  from jax._src.custom_derivatives import custom_jvp
  from jax._src.lax import lax
  from jax._src.typing import Array, ArrayLike
  from jax._src.numpy.util import check_arraylike, promote_args, promote_args_inexact, promote_args_numeric, promote_dtypes_inexact, promote_dtypes_numeric, promote_shapes, _where, _wraps, check_no_float0s
label_desc: Use image node_id 6 for calling a global function with example usage: _comparison_op(numpy_fn, lax_fn) and returns: _wraps, lax_fn, lax