code: def testHalfNormalLogPDF(self):
      x = np.array(
          [-2.5, 2.5, 4.0, 0.0, -1.0, 2.0, 60.0], dtype=np.float32
      )
      scale = tf.constant([3.0] * len(x))
      halfnorm = half_normal.HalfNormal(
          scale=scale, validate_args=False
      )
  
      log_pdf = halfnorm.log_prob(x)
      self._testBatchShapes(halfnorm, log_pdf)
  
      pdf = halfnorm.prob(x)
      self._testBatchShapes(halfnorm, pdf)
  
      expected_log_pdf = sp_stats.halfnorm(
          scale=self.evaluate(scale)
      ).logpdf(x)
      self.assertAllClose(expected_log_pdf, self.evaluate(log_pdf))
      self.assertAllClose(np.exp(expected_log_pdf), self.evaluate(pdf))
  
imports: from absl.testing import parameterized
  import numpy
  from scipy import stats
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import half_normal
  from tensorflow_probability.python.distributions import kullback_leibler
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import gradient
label_desc: Use image node_id 9 for calling the HalfNormalTest obj's underlying member method code with example usage: obj.testHalfNormalLogPDF() without return types