code: def testEntropy(self):
      df_v = np.array([[2.0, 3.0, 7.0]])  # 1x3
      loc_v = np.array([[1.0, -1, 0]])  # 1x3
      sigma_v = np.array([[1.0, 2.0, 3.0]]).T  # transposed => 3x1
      half_student = half_student_t.HalfStudentT(
          df=df_v, loc=loc_v, scale=sigma_v, validate_args=True
      )
      ent = half_student.entropy()
      ent_values = self.evaluate(ent)
  
      # Help scipy broadcast to 3x3
      ones = np.array([[1, 1, 1]])
      sigma_bc = np.abs(sigma_v) * ones
      loc_bc = ones.T * loc_v
      df_bc = ones.T * df_v
      expected_entropy = sp_stats.t.entropy(
          np.reshape(df_bc, [-1]),
          loc=np.reshape(loc_bc, [-1]),
          scale=np.reshape(sigma_bc, [-1]),
      ) - np.log(2)
      expected_entropy = np.reshape(expected_entropy, df_bc.shape)
      self.assertAllClose(expected_entropy, ent_values)
  
imports: import math
  import numpy
  from scipy import stats
  from scipy.special import gamma
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import half_student_t
  from tensorflow_probability.python.distributions.internal import statistical_testing
  from tensorflow_probability.python.internal import assert_util
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import gradient
label_desc: Use image node_id 4 for calling the HalfStudentTTest obj's underlying member method code with example usage: obj.testEntropy() without return types