code: def test_128_reduce_sum_3d(self):
      a = tf_i128.to_i128(tf.ones([4, 2, 3], dtype=tf.float64) * 5)
      b = tf_i128.from_i128(
          tf_i128.reduce_sum(a, axis=0, keepdims=False)
      )
      c = tf_i128.from_i128(
          tf_i128.reduce_sum(a, axis=0, keepdims=True)
      )
      d = tf_i128.from_i128(
          tf_i128.reduce_sum(a, axis=1, keepdims=False)
      )
      e = tf_i128.from_i128(
          tf_i128.reduce_sum(a, axis=1, keepdims=True)
      )
      np.testing.assert_allclose(
          b, np.ones([2, 3]) * 20, rtol=0.0, atol=0.01
      )
      np.testing.assert_allclose(
          c, np.ones([1, 2, 3]) * 20, rtol=0.0, atol=0.01
      )
      np.testing.assert_allclose(
          d, np.ones([4, 3]) * 10, rtol=0.0, atol=0.01
      )
      np.testing.assert_allclose(
          e, np.ones([4, 1, 3]) * 10, rtol=0.0, atol=0.01
      )
  
imports: import unittest
  import numpy
  import tensorflow
  from tf_encrypted.operations import tf_i128
label_desc: Use image node_id 20 for calling the I128TestCase obj's underlying member method code with example usage: obj.test_128_reduce_sum_3d() without return types