code: def _eval(self, v, in_bounds, der):
          
          result = np.zeros_like(v, dtype='float')
          x_indices = np.searchsorted(self._x, v, side='rigth')
          ids = x_indices[in_bounds] - 1
          u = v[in_bounds] - self._x[ids]
          result[in_bounds] = self._poly_eval(u, ids, der)
          return result
docs: Eval polynomial inside bounds.