code: def interpolation_matrix(dtype, order, step_size_ratio):
      """Creates the matrix used to interpolate backward differences."""
      orders = tf.cast(tf.range(1, MAX_ORDER + 1), dtype=dtype)
      i = orders[:, tf.newaxis]
      j = orders[tf.newaxis, :]
      # Matrix whose (i, j)-th entry (`1 <= i, j <= order`) is
      # `1/j! (0 - i * step_size_ratio) * ... * ((j-1) - i * step_size_ratio)`.
      step_size_ratio_cast = tf.cast(step_size_ratio, dtype)
      full_interpolation_matrix = tf.math.cumprod(
          ((j - 1) - i * step_size_ratio_cast) / j, axis=1
      )
      zeros_matrix = tf.zeros_like(full_interpolation_matrix)
      interpolation_matrix_ = tf1.where(
          tf.range(1, MAX_ORDER + 1) <= order,
          tf.transpose(
              tf1.where(
                  tf.range(1, MAX_ORDER + 1) <= order,
                  tf.transpose(full_interpolation_matrix),
                  zeros_matrix,
              )
          ),
          zeros_matrix,
      )
      return interpolation_matrix_
  
file_path: probability/tensorflow_probability/python/math/ode/bdf_util.py
imports: import collections
  import numpy
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import tensorshape_util
label_desc: Use image node_id 4 for calling a global function with example usage: interpolation_matrix(dtype, order, step_size_ratio) and returns: interpolation_matrix_