code: def cressman_point(sq_dist, values, radius):
      r
      weights = tools.cressman_weights(sq_dist, radius)
      total_weights = np.sum(weights)
  
      return sum(v * (w / total_weights) for (w, v) in zip(weights, values))
docs: r"""Generate a Cressman interpolation value for a point.
  
      The calculated value is based on the given distances and search radius.
  
      Parameters
      ----------
      sq_dist: (N, ) ndarray
          Squared distance between observations and grid point
      values: (N, ) ndarray
          Observation values in same order as sq_dist
      radius: float
          Maximum distance to search for observations to use for
          interpolation.
  
      Returns
      -------
      value: float
          Interpolation value for grid point.