code: def rdp_iter(M, epsilon, dist=pldist, return_mask=False):
      
      mask = _rdp_iter(M, 0, len(M) - 1, epsilon, dist)
  
      if return_mask:
          return mask
  
      return M[mask]
docs: Simplifies a given array of points.
  
      Iterative version.
  
      :param M: an array
      :type M: numpy array
      :param epsilon: epsilon in the rdp algorithm
      :type epsilon: float
      :param dist: distance function
      :type dist: function with signature ``f(point, start, end)`` -- see :func:`rdp.pldist`
      :param return_mask: return the mask of points to keep instead
      :type return_mask: bool