code: def get_binary_minmax_kernel(
      func, dtype_x, dtype_y, dtype_z, use_scalar
  ):
      if np.float64 not in [dtype_x, dtype_y]:
          func = func + "f"
  
      if any(dt.kind == "f" for dt in [dtype_x, dtype_y, dtype_z]):
          func = "f" + func
  
      if use_scalar:
          return get_binary_func_scalar_kernel(
              func, dtype_x, dtype_y, dtype_z
          )
      else:
          return get_binary_func_kernel(func, dtype_x, dtype_y, dtype_z)
  
imports: from pycuda.tools import context_dependent_memoize
  from typing import Any
  import numpy
  from pycuda.tools import dtype_to_ctype, VectorArg, ScalarArg
  from pytools import memoize_method
label_desc: Use image node_id 17 for calling a global function with example usage: get_binary_minmax_kernel(func, dtype_x, dtype_y, dtype_z, use_scalar) and returns: get_binary_func_scalar_kernel, get_binary_func_kernel