code: def arange(
      start: float,
      /,
      stop: Optional[float] = None,
      step: float = 1,
      *,
      dtype: Optional[tf.DType] = None,
      device: Optional[str] = None,
      out: Optional[Union[tf.Tensor, tf.Variable]] = None,
  ) -> Union[tf.Tensor, tf.Variable]:
      if stop is None:
          stop = start
          start = 0
      if (step > 0 and start > stop) or (step < 0 and start < stop):
          if isinstance(stop, float):
              stop = float(start)
          else:
              stop = start
      if dtype is None:
          if (
              isinstance(start, int)
              and isinstance(stop, int)
              and isinstance(step, int)
          ):
              return tf.cast(
                  tf.range(start, stop, delta=step, dtype=tf.int64),
                  tf.int32,
              )
          else:
              return tf.range(start, stop, delta=step)
      else:
          dtype = ivy.as_native_dtype(ivy.default_dtype(dtype=dtype))
          if dtype in [
              tf.int8,
              tf.uint8,
              tf.int16,
              tf.uint16,
              tf.uint32,
              tf.uint64,
          ]:
              return tf.cast(
                  tf.range(start, stop, delta=step, dtype=tf.int64),
                  dtype,
              )
          else:
              return tf.range(start, stop, delta=step, dtype=dtype)
  
imports: import numpy
  from numbers import Number
  from typing import Union, List, Optional, Sequence, Tuple
  import tensorflow
  import ivy
  from ivy.func_wrapper import with_unsupported_dtypes
  from ivy.functional.ivy.creation import _asarray_to_native_arrays_and_back, _asarray_infer_device, _asarray_infer_dtype, _asarray_handle_nestable, NestedSequence, SupportsBufferProtocol, _asarray_inputs_to_native_shapes
  from .None import backend_version
label_desc: Use image node_id 1 for calling a global function with example usage: arange(stop, step) and returns: tf, tf, tf, tf