code: def arr_operator(f):
      """Define and register a new array composite operator"""
  
      if jit_enabled:
          f2 = nb.vectorize(f)
          f2._compile_for_argtys((nb.types.int32, nb.types.int32))
          f2._compile_for_argtys((nb.types.int64, nb.types.int64))
          f2._compile_for_argtys((nb.types.float32, nb.types.float32))
          f2._compile_for_argtys((nb.types.float64, nb.types.float64))
          f2._frozen = True
      else:
          f2 = np.vectorize(f)
  
      composite_op_lookup[f.__name__] = f2
      return f2
  
file_path: datashader/datashader/composite.py
imports: from __future__ import annotations
  import numba
  import numpy
  import os
label_desc: Use image node_id 9 for calling a global function with example usage: arr_operator(f) and returns: f2