code: def _range(
      start, limit=None, delta=1, dtype=None, name="range"
  ):  # pylint: disable=unused-argument
      """Emulates tf.range."""
      # Emulating dtype inference logic from tf.range
      dtype = utils.numpy_dtype(dtype)
      infer_dtype = lambda t: ops.convert_to_tensor(
          t, dtype=dtype
      ).dtype
      # We must keep start, limit, and delta static np.array since they determine
      # the size of the result array, which JAX requires to be static.
      start = onp.array(start, dtype=infer_dtype(start))
      limit = (
          None
          if limit is None
          else onp.array(limit, dtype=infer_dtype(limit))
      )
      delta = onp.array(delta, dtype=infer_dtype(delta))
      if dtype is None:
          dtype_hierarchy = [np.int32, np.int64, np.float32, np.float64]
          inferred_dtype = max(
              (
                  arg.dtype
                  for arg in (start, limit, delta)
                  if arg is not None
              ),
              key=dtype_hierarchy.index,
          )
      else:
          inferred_dtype = dtype
      return np.arange(start, limit, delta).astype(inferred_dtype)
  
imports: import functools
  import numpy
  import numpy
  from tensorflow_probability.python.internal.backend.numpy import _utils
  from tensorflow_probability.python.internal.backend.numpy import ops
  from tensorflow_probability.python.internal.backend.numpy.linalg_impl import einsum
  from tensorflow_probability.python.internal.backend.numpy.linalg_impl import norm
  from tensorflow_probability.python.internal.backend.numpy.linalg_impl import tensordot
label_desc: Use image node_id 11 for calling a global function with example usage: _range(start, limit, delta, dtype, name) and returns: np