code: def numba_funcify_CAReduce(op, node, **kwargs):
      axes = op.axis
      if axes is None:
          axes = list(range(node.inputs[0].ndim))
  
      if hasattr(op, "acc_dtype") and op.acc_dtype is not None:
          acc_dtype = op.acc_dtype
      else:
          acc_dtype = node.outputs[0].type.dtype
  
      np_acc_dtype = np.dtype(acc_dtype)
  
      scalar_op_identity = op.scalar_op.identity
      if np_acc_dtype.kind == "i" and not np.isfinite(
          scalar_op_identity
      ):
          if np.isposinf(scalar_op_identity):
              scalar_op_identity = np.iinfo(np_acc_dtype).max
          else:
              scalar_op_identity = np.iinfo(np_acc_dtype).min
  
      # Make sure it has the correct dtype
      scalar_op_identity = np.array(
          scalar_op_identity, dtype=np_acc_dtype
      )
  
      input_name = get_name_for_object(node.inputs[0])
      ndim = node.inputs[0].ndim
      careduce_py_fn = create_multiaxis_reducer(
          op.scalar_op,
          scalar_op_identity,
          axes,
          ndim,
          np.dtype(node.outputs[0].type.dtype),
          input_name=input_name,
      )
  
      careduce_fn = jit_compile_reducer(
          node, careduce_py_fn, reduce_to_scalar=False
      )
      return careduce_fn
  
imports: import base64
  import pickle
  from functools import singledispatch
  from numbers import Number
  from textwrap import indent
  from typing import Any, Callable, Optional, Union
  import numba
  import numpy
  from numba import TypingError, types
  from numba.core import cgutils
  from numba.core.extending import overload
  from numba.np import arrayobj
  from numpy.core.numeric import normalize_axis_index, normalize_axis_tuple
  from pytensor import config
  from pytensor.graph.basic import Apply
  from pytensor.graph.op import Op
  from pytensor.link.numba.dispatch import basic
  from pytensor.link.numba.dispatch import elemwise_codegen
  from pytensor.link.numba.dispatch.basic import create_numba_signature, create_tuple_creator, numba_funcify, numba_njit, use_optimized_cheap_pass
  from pytensor.link.utils import compile_function_src, get_name_for_object
  from pytensor.scalar.basic import AND, OR, XOR, Add, Composite, IntDiv, Mean, Mul, ScalarMaximum, ScalarMinimum, Sub, TrueDiv, scalar_maximum
  from pytensor.scalar.basic import add
  from pytensor.tensor.elemwise import CAReduce, DimShuffle, Elemwise
  from pytensor.tensor.math import MaxAndArgmax, MulWithoutZeros, Sum
  from pytensor.tensor.special import LogSoftmax, Softmax, SoftmaxGrad
  from pytensor.tensor.type import scalar
label_desc: Use image node_id 22 for calling a global function with example usage: numba_funcify_CAReduce(op, node) and returns: careduce_fn