code: def get_modf_kernel(
      context,
      int_dtype=np.float32,
      frac_dtype=np.float32,
      x_dtype=np.float32,
  ):
      return get_elwise_kernel(
          context,
          [
              VectorArg(int_dtype, "intpart", with_offset=True),
              VectorArg(frac_dtype, "fracpart", with_offset=True),
              VectorArg(x_dtype, "x", with_offset=True),
          ],
          """
          fracpart[i] = modf(x[i], &intpart[i])
          """,
          name="modf_kernel",
      )
  
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 30 for calling a global function with example usage: get_modf_kernel(context, int_dtype, frac_dtype, x_dtype) and returns: get_elwise_kernel