code: def testJitGradBcastLogBesselIve(self, dtype):
      self.skip_if_no_xla()
  
      @tf.function(jit_compile=True)
      def f(v, z):
          dy = tf.random.normal(
              z.shape, seed=test_util.test_seed(), dtype=dtype
          )
          return tf.nest.map_structure(
              lambda t: ()
              if t is None
              else t,  # session.run doesn't like `None`.
              gradient.value_and_gradient(
                  lambda v, z: bessel.log_bessel_ive(v, z) ** 2,
                  (v, z),
                  output_gradients=dy,
              ),
          )
  
      v = tf.constant(0.5, dtype=dtype)
      z = tf.constant([[0.3, 0.5, 0.9], [1.0, 12.0, 22.0]], dtype=dtype)
  
      self.evaluate(f(v, z))
  
imports: import functools
  from absl.testing import parameterized
  import numpy
  from scipy import constants
  from scipy import special
  import tensorflow.compat.v2
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import bessel
  from tensorflow_probability.python.math import gradient
  from tensorflow_probability.python.math.bessel import _compute_general_continued_fraction
label_desc: Use image node_id 21 for calling the BesselIveTest obj's underlying member method code with example usage: obj.testJitGradBcastLogBesselIve(dtype) and returns: tf