code: def verify_samples(
      self,
      process,
      samples,
      theta,
      mean_reversion,
      initial_state,
      num_samples,
      times,
      dtype,
      batch_shape=None,
      compare_long_term=False,
      compare_with_euler=True,
      long_term_atol=5e-2,
      long_term_rtol=5e-2,
      euler_time_step=0.02,
      euler_atol=1e-2,
      euler_rtol=1e-2,
  ):
      if batch_shape is None:
          batch_shape = []
      dim = 1
      with self.subTest("Mean"):
          if compare_long_term:
              with self.subTest("LongTermMean"):
                  long_term_mean, _ = self.get_mean_and_var(
                      samples, axis=-1
                  )
                  expected_long_term_mean = np.ones(
                      batch_shape + [num_samples]
                  ) * (theta / mean_reversion)
                  # In the infinite limit, the mean must converge
                  # to 'theta / mean_reversion'
                  self.assertAllClose(
                      expected_long_term_mean,
                      long_term_mean,
                      atol=long_term_atol,
                      rtol=long_term_rtol,
                  )
  
          if compare_with_euler:
              euler_samples = tff.models.euler_sampling.sample(
                  dim=dim,
                  drift_fn=process.drift_fn(),
                  volatility_fn=process.volatility_fn(),
                  times=times,
                  time_step=euler_time_step,
                  num_samples=num_samples,
                  initial_state=initial_state,
                  dtype=dtype,
                  random_type=random.RandomType.STATELESS,
                  seed=[1, 5],
              )
              mean, var = self.get_mean_and_var(samples, axis=-2)
              euler_mean, euler_var = self.get_mean_and_var(
                  euler_samples, axis=-2
              )
              with self.subTest("EulerMean"):
                  self.assertAllClose(
                      euler_mean, mean, atol=euler_atol, rtol=euler_rtol
                  )
              with self.subTest("EulerVar"):
                  self.assertAllClose(
                      euler_var, var, atol=euler_atol, rtol=euler_rtol
                  )
              with self.subTest("EulerShape"):
                  self.assertEqual(euler_samples.shape, samples.shape)
      with self.subTest("dType"):
          self.assertDTypeEqual(samples, dtype)
      with self.subTest("GreaterEqualThanZero"):
          self.assertAllGreaterEqual(samples, 0.0)
      with self.subTest("Shape"):
          self.assertEqual(
              batch_shape + [num_samples, times.shape[0], dim],
              samples.shape,
          )
  
imports: from absl.testing import parameterized
  import numpy
  import tensorflow.compat.v2
  import tf_quant_finance
  from tensorflow.python.framework import test_util
  from tf_quant_finance.math import random_ops
label_desc: Use image node_id 15 for calling the CirTest obj's underlying member method code with example usage: obj.verify_samples(process, samples, theta, mean_reversion, initial_state, num_samples, times, dtype, batch_shape, compare_long_term, compare_with_euler, long_term_atol, long_term_rtol, euler_time_step, euler_atol, euler_rtol) without return types