code: def _test_kronrod_accuracy(
      self, integrate_function, args, test_case, max_rel_error
  ):
      func = test_case.func
      lower = tf.constant(test_case.lower, dtype=tf.float64)
      upper = tf.constant(test_case.upper, dtype=tf.float64)
      tolerance = test_case.tolerance
      exact = np.array(
          test_case.antiderivative(np.array(test_case.upper))
      ) - np.array(test_case.antiderivative(np.array(test_case.lower)))
      approx = integrate_function(func, lower, upper, tolerance, **args)
      approx = np.array(self.evaluate(approx))
      assert np.all(
          np.abs(approx - exact) <= np.abs(exact) * max_rel_error
      )
  
imports: import collections
  import math
  import numpy
  import tensorflow.compat.v2
  import tf_quant_finance
  from tensorflow.python.framework import test_util
  from tf_quant_finance.math.integration import adaptive_update
label_desc: Use image node_id 4 for calling the IntegrationTest obj's underlying member method code with example usage: obj._test_kronrod_accuracy(integrate_function, args, test_case, max_rel_error) without return types