code: def test_chandrupatla_batch_high_degree_polynomial(self):
      seed = test_util.test_seed(sampler_type="stateless")
      expected_roots = self.evaluate(samplers.normal([4, 3], seed=seed))
      roots, value_at_roots, _ = root_search.find_root_chandrupatla(
          objective_fn=lambda x: (x - expected_roots) ** 15,
          low=-20.0,
          high=20.0,
          position_tolerance=1e-8,
      )
      self.assertAllClose(value_at_roots, tf.zeros_like(value_at_roots))
      # The function is not precise enough to be inverted to a
      # position tolerance of 1e-8, (the objective goes to zero relatively
      # far from the expected point), so check it at a lower tolerance.
      self.assertAllClose(roots, expected_roots, atol=1e-2)
  
imports: import numpy
  import scipy.optimize
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.internal import samplers
  from tensorflow_probability.python.internal import special_math
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import root_search
label_desc: Use image node_id 2 for calling the ChandrupatlaRootSearchTest obj's underlying member method code with example usage: obj.test_chandrupatla_batch_high_degree_polynomial() without return types