code: def testHyp2F1ShapeBroadcast(
      self, a_shape, b_shape, c_shape, z_shape
  ):
      a = tf.zeros(a_shape, dtype=tf.float32)
      b = tf.zeros(b_shape, dtype=tf.float32)
      c = 10.5 * tf.ones(c_shape, dtype=tf.float32)
      z = tf.zeros(z_shape, dtype=tf.float32)
      broadcast_shape = functools.reduce(
          tf.broadcast_dynamic_shape,
          [a_shape, b_shape, c_shape, z_shape],
      )
      hyp2f1 = hypergeometric.hyp2f1_small_argument(a, b, c, z)
      broadcast_shape = self.evaluate(broadcast_shape)
      self.assertAllEqual(hyp2f1.shape, broadcast_shape)
  
imports: import functools
  from absl.testing import parameterized
  import mpmath
  import numpy
  from scipy import special
  import tensorflow.compat.v2
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import hypergeometric
label_desc: Use image node_id 4 for calling the Hyp2F1Test obj's underlying member method code with example usage: obj.testHyp2F1ShapeBroadcast(a_shape, b_shape, c_shape, z_shape) without return types