code: def _test_grid_no_log(self, dtype, grid_spec, error_spec):
      grid = _make_grid(dtype, grid_spec)
      actual = self.evaluate(special_math.ndtr(grid))
  
      # Basic tests.
      # isfinite checks for NaN and Inf.
      self.assertTrue(np.isfinite(actual).all())
      # On the grid, 0 < cdf(x) < 1.  The grid cannot contain everything due
      # to numerical limitations of cdf.
      self.assertTrue((actual > 0).all())
      self.assertTrue((actual < 1).all())
      _check_strictly_increasing(actual)
  
      # Versus scipy.
      expected = sp_special.ndtr(grid)
      # Scipy prematurely goes to zero at some places that we don't.  So don't
      # include these in the comparison.
      self.assertAllClose(
          expected.astype(np.float64)[expected < 0],
          actual.astype(np.float64)[expected < 0],
          rtol=error_spec.rtol,
          atol=error_spec.atol,
      )
  
imports: import collections
  import numpy
  from scipy import special
  from scipy import stats
  import tensorflow.compat.v2
  from tensorflow_probability.python.internal import special_math
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math.gradient import value_and_gradient
label_desc: Use image node_id 3 for calling the NdtrTest obj's underlying member method code with example usage: obj._test_grid_no_log(dtype, grid_spec, error_spec) without return types