code: def brownian_bridge_single(
      *, x_start, x_end, variance, barrier, dtype=None, name=None
  ):
      """Computes proba of not touching the barrier for a 1D Brownian Bridge.
  
      The Brownian bridge starts at `x_start`, ends at `x_end` and has a variance
      `variance`. The no-touch probabilities are calculated assuming that `x_start`
      and `x_end` are the same side of the barrier (either both above or both
      below).
      This can be used in Monte Carlo pricing for adjusting probability of
      touching the barrier from discrete case to continuous case.
      Typically in practise, the tensors `x_start`, `x_end` and `variance` should be
      bi-dimensional (with time steps and paths being the 2 dimensions).
  
      #### Example
  
      ```python
      x_start = np.asarray([[4.5, 4.5, 4.5], [4.5, 4.6, 4.7]])
      x_end = np.asarray([[5.0, 4.9, 4.8], [4.8, 4.9, 5.0]])
      variance = np.asarray([[0.1, 0.2, 0.1], [0.3, 0.1, 0.2]])
      barrier = 5.1
  
      no_touch_proba = brownian_bridge_single(
        x_start=x_start,
        x_end=x_end,
        variance=variance,
        barrier=barrier)
      # Expected print output of no_touch_proba:
      # [[0.69880579 0.69880579 0.97267628]
      #  [0.69880579 0.86466472 0.32967995]]
      ```
  
      #### References
  
      [1] Emmanuel Gobet. Advanced Monte Carlo methods for barrier and related
      exotic options.
      https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1265669
  
      Args:
        x_start: A real `Tensor` of any shape and dtype.
        x_end: A real `Tensor` of the same dtype and compatible shape as
          `x_start`.
        variance: A real `Tensor` of the same dtype and compatible shape as
          `x_start`.
        barrier: A scalar `Tensor` of the same dtype as `x_start`. Stands for the
          boundary for the Brownian Bridge.
        dtype: Optional `tf.DType`. If supplied, the dtype to be used for conversion
          of any supplied non-`Tensor` arguments to `Tensor`.
          Default value: None which maps to the default dtype inferred by
          TensorFlow.
        name: str. The name for the ops created by this function.
          Default value: None which is mapped to the default name
          `brownian_bridge_single`.
  
      Returns:
          A `Tensor` of the same shape as the input data which is the probability
          of not touching the barrier.
      """
      with tf.name_scope(name or "brownian_bridge_single"):
          x_start = tf.convert_to_tensor(
              x_start, dtype=dtype, name="x_start"
          )
          dtype = x_start.dtype
          variance = tf.convert_to_tensor(
              variance, dtype=dtype, name="variance"
          )
          x_end = tf.convert_to_tensor(x_end, dtype=dtype, name="x_end")
  
          a = (x_start - barrier) * (x_end - barrier)
          return 1 - tf.math.exp(-2 * a / variance)
  
label_desc: Use image node_id 2 for calling a global function with example usage: brownian_bridge_single() and returns: unknown