code: def get_arange_kernel(context, dtype):
      if dtype.kind == "c":
          expr = "{root}_add(start, {root}_rmul(i, step))".format(
              root=complex_dtype_to_name(dtype)
          )
      else:
          expr = f"start + (({dtype_to_ctype(dtype)}) i) * step"
  
      return get_elwise_kernel(
          context,
          [
              VectorArg(dtype, "z", with_offset=True),
              ScalarArg(dtype, "start"),
              ScalarArg(dtype, "step"),
          ],
          f"z[i] = {expr}",
          name="arange",
      )
  
imports: import enum
  from typing import Any, List, Optional, Tuple, Union
  import numpy
  import pyopencl
  from pyopencl.tools import context_dependent_memoize
  from pyopencl.tools import dtype_to_ctype, DtypedArgument, VectorArg, ScalarArg, KernelTemplateBase, dtype_to_c_struct
  from pytools import memoize_method
label_desc: Use image node_id 19 for calling a global function with example usage: get_arange_kernel(context, dtype) and returns: get_elwise_kernel