class_docstr: Continuous ODE solution.
  
  It is organized as a collection of `DenseOutput` objects which represent
  local interpolants. It provides an algorithm to select a right interpolant
  for each given point.
  
  The interpolants cover the range between `t_min` and `t_max` (see
  Attributes below). Evaluation outside this interval is not forbidden, but
  the accuracy is not guaranteed.
  
  When evaluating at a breakpoint (one of the values in `ts`) a segment with
  the lower index is selected.
  
  Parameters
  ----------
  ts : array_like, shape (n_segments + 1,)
      Time instants between which local interpolants are defined. Must
      be strictly increasing or decreasing (zero segment with two points is
      also allowed).
  interpolants : list of DenseOutput with n_segments elements
      Local interpolants. An i-th interpolant is assumed to be defined
      between ``ts[i]`` and ``ts[i + 1]``.
  
  Attributes
  ----------
  t_min, t_max : float
      Time range of the interpolation.
class_docstr_tok: ["Continuous","ODE","solution",".","It","is","organized","as","a","collection","of","`","DenseOutput","`","objects","which","represent","local","interpolants",".","It","provides","an","algorithm","to","select","a","right","interpolant","for","each","given","point",".","The","interpolants","cover","the","range","between","`","t_min","`","and","`","t_max","`","(","see","Attributes","below",")",".","Evaluation","outside","this","interval","is","not","forbidden",",","but","the","accuracy","is","not","guaranteed",".","When","evaluating","at","a","breakpoint","(","one","of","the","values","in","`","ts","`",")","a","segment","with","the","lower","index","is","selected",".","Parameters","--","--","--","--","--","ts",":","array_like",",","shape","(","n_segments","+","1",",",")","Time","instants","between","which","local","interpolants","are","defined",".","Must","be","strictly","increasing","or","decreasing","(","zero","segment","with","two","points","is","also","allowed",")",".","interpolants",":","list","of","DenseOutput","with","n_segments","elements","Local","interpolants",".","An","i-th","interpolant","is","assumed","to","be","defined","between","``","ts","[","i","]","``","and","``","ts","[","i","+","1","]","``",".","Attributes","--","--","--","--","--","t_min",",","t_max",":","float","Time","range","of","the","interpolation","."]
code: def _call_single(self, t):
      # Here we preserve a certain symmetry that when t is in self.ts,
      # then we prioritize a segment with a lower index.
      if self.ascending:
          ind = np.searchsorted(self.ts_sorted, t, side="left")
      else:
          ind = np.searchsorted(self.ts_sorted, t, side="right")
  
      segment = min(max(ind - 1, 0), self.n_segments - 1)
      if not self.ascending:
          segment = self.n_segments - 1 - segment
  
      return self.interpolants[segment](t)
  
file_path: catboost/contrib/python/scipy/py3/scipy/integrate/_ivp/common.py
imports: from itertools import groupby
  from warnings import warn
  import numpy
  from scipy.sparse import find, coo_matrix
label_desc: Use image node_id 2 for calling the OdeSolution obj's underlying member method code with example usage: obj._call_single(t) and returns: self