code: def testNormConst3D(self, dtype):
      expected = np.pi**2 / 2.0
      # 3x3 correlation matrices are determined by the three
      # lower-triangular entries.  In addition to being between -1 and
      # 1, they must also obey the constraint that the determinant of
      # the resulting symmetric matrix is non-negative.  The post
      # https://psychometroscar.com/the-volume-of-a-3-x-3-correlation-matrix/
      # derives (with elementary calculus) that the volume of this set
      # (with respect to Lebesgue^3 measure) is pi^2/2.  The same result
      # is also obtained by Rousseeuw, P. J., & Molenberghs,
      # G. (1994). "The shape of correlation matrices." The American
      # Statistician, 48(4), 276-279.
      answer = self.evaluate(
          lkj.LKJ(
              3, dtype([1.0]), validate_args=True
          )._log_normalization()
      )
      self.assertAllClose(answer, np.log([expected]))
  
imports: from absl.testing import parameterized
  import numpy
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import lkj
  from tensorflow_probability.python.distributions.internal import statistical_testing
  from tensorflow_probability.python.internal import assert_util
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import test_util
label_desc: Use image node_id 2 for calling the LKJTest obj's underlying member method code with example usage: obj.testNormConst3D(dtype) without return types