code: def test_cum_prod(self):
      x = random_ops.random_uniform([2, 3, 4, 5])
      for axis in (1, -2, constant_op.constant(1, dtypes.int64)):
          for exclusive in (True, False):
              for reverse in (True, False):
                  # pylint: disable=cell-var-from-loop
                  def loop_fn(i):
                      a = array_ops.gather(x, i)
                      return math_ops.cumprod(
                          a,
                          axis=axis,
                          exclusive=exclusive,
                          reverse=reverse,
                      )
  
                  # pylint: enable=cell-var-from-loop
  
                  self._test_loop_fn(loop_fn, 2)
  
imports: import itertools
  from absl.testing import parameterized
  from tensorflow.python.eager import backprop
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import tensor
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import clip_ops
  from tensorflow.python.ops import linalg_ops
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import nn
  from tensorflow.python.ops import random_ops
  from tensorflow.python.ops import special_math_ops
  from tensorflow.python.ops import tensor_array_grad
  from tensorflow.python.ops.parallel_for import control_flow_ops
  from tensorflow.python.ops.parallel_for.test_util import PForTestCase
  from tensorflow.python.platform import test
label_desc: Use image node_id 21 for calling the MathTest obj's underlying member method code with example usage: obj.test_cum_prod() and returns: math_ops