code: def _quadratic_interpolation_step(x1, x2, x3, y1, y2, y3):
      """Returns the step size to use when using quadratic interpolation.
  
      This function is meant for exclusive use by the `_brent_loop_body` function.
      It does not guard against divisions by zero, and instead assumes that `y1` is
      distinct from `y2` and `y3`. The `_brent_loop_body` function guarantees this
      property.
  
      Args:
        x1: `Tensor` of any shape and real dtype containing the first position used
          for extrapolation.
        x2: `Tensor` of the same shape and dtype as `x1` containing the second
          position used for extrapolation.
        x3: `Tensor` of the same shape and dtype as `x1` containing the third
          position used for extrapolation.
        y1: `Tensor` containing the value of the interpolated function at `x1`.
        y2: `Tensor` containing the value of interpolated function at `x2`.
        y3: `Tensor` containing the value of interpolated function at `x3`.
  
      Returns:
        A `Tensor` with the same shape and dtype as `x1`.
      """
      r2 = (x2 - x1) / (y2 - y1)
      r3 = (x3 - x1) / (y3 - y1)
      return -x1 * tf.math.divide_no_nan(
          x3 * r3 - x2 * r2, r3 * r2 * (x3 - x2)
      )
  
file_path: tf-quant-finance/tf_quant_finance/math/root_search/brent.py
imports: from typing import Callable
  import tensorflow.compat.v2
  from tf_quant_finance import types
  from tf_quant_finance import utils
  from tf_quant_finance.math.root_search import utils
label_desc: Use image node_id 3 for calling a global function with example usage: _quadratic_interpolation_step(x1, x2, x3, y1, y2, y3) and returns: unknown