code: def testNormalSurvivalFunction(self):
      batch_size = 50
      mu = self._rng.randn(batch_size)
      sigma = self._rng.rand(batch_size) + 1.0
      x = np.linspace(-8.0, 8.0, batch_size).astype(np.float64)
  
      normal = normal_lib.Normal(loc=mu, scale=sigma)
  
      sf = normal.survival_function(x)
      self.assertAllEqual(
          self.evaluate(normal.batch_shape_tensor()), sf.get_shape()
      )
      self.assertAllEqual(
          self.evaluate(normal.batch_shape_tensor()),
          self.evaluate(sf).shape,
      )
      self.assertAllEqual(normal.batch_shape, sf.get_shape())
      self.assertAllEqual(normal.batch_shape, self.evaluate(sf).shape)
      if not stats:
          return
      expected_sf = stats.norm(mu, sigma).sf(x)
      self.assertAllClose(expected_sf, self.evaluate(sf), atol=0)
  
imports: import importlib
  import math
  import numpy
  from tensorflow.python.eager import backprop
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import tensor_shape
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import gradients_impl
  from tensorflow.python.ops import nn_ops
  from tensorflow.python.ops import variables
  from tensorflow.python.ops.distributions import kullback_leibler
  from tensorflow.python.ops.distributions import normal
  from tensorflow.python.platform import test
  from tensorflow.python.platform import tf_logging
label_desc: Use image node_id 12 for calling the NormalTest obj's underlying member method code with example usage: obj.testNormalSurvivalFunction() without return types