code: def _randomized_roundoff_to_bfloat16(x, noise, cand1, cand2):
    
    cand1_f = tf.to_float(cand1)
    cand2_f = tf.to_float(cand2)
    step_size = cand2_f - cand1_f
    fpart = (x - cand1_f) / step_size
    ret = tf.where(tf.greater(fpart, noise), cand2, cand1)
    return ret
docs: Round-off x to cand1 or to cand2 in an unbiased way.
  
    Cand1 and cand2 are the same shape as x.
    For every element of x, the corresponding elements of cand1 and cand2 should
    be the two closest bfloat16 values to x.  Order does not matter.
    cand1 and cand2 must differ from each other.
  
    Args:
      x: A float32 Tensor.
      noise: A Tensor broadcastable to the shape of x containing
      random uniform values in [0.0, 1.0].
      cand1: A bfloat16 Tensor the same shape as x.
      cand2: A bfloat16 Tensor the same shape as x.
  
    Returns:
      A bfloat16 Tensor.