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","."]
docstr: Evaluate the solution.
  
  Parameters
  ----------
  t : float or array_like with shape (n_points,)
      Points to evaluate at.
  
  Returns
  -------
  y : ndarray, shape (n_states,) or (n_states, n_points)
      Computed values. Shape depends on whether `t` is a scalar or a
      1-d array.
docstr_tok: ["Evaluate","the","solution",".","Parameters","--","--","--","--","--","t",":","float","or","array_like","with","shape","(","n_points",",",")","Points","to","evaluate","at",".","Returns","--","--","--","-","y",":","ndarray",",","shape","(","n_states",",",")","or","(","n_states",",","n_points",")","Computed","values",".","Shape","depends","on","whether","`","t","`","is","a","scalar","or","a","1-d","array","."]
code: def __call__(self, t):
      """Evaluate the solution.
  
      Parameters
      ----------
      t : float or array_like with shape (n_points,)
          Points to evaluate at.
  
      Returns
      -------
      y : ndarray, shape (n_states,) or (n_states, n_points)
          Computed values. Shape depends on whether `t` is a scalar or a
          1-d array.
      """
      t = np.asarray(t)
  
      if t.ndim == 0:
          return self._call_single(t)
  
      order = np.argsort(t)
      reverse = np.empty_like(order)
      reverse[order] = np.arange(order.shape[0])
      t_sorted = t[order]
  
      # See comment in self._call_single.
      if self.ascending:
          segments = np.searchsorted(
              self.ts_sorted, t_sorted, side="left"
          )
      else:
          segments = np.searchsorted(
              self.ts_sorted, t_sorted, side="right"
          )
      segments -= 1
      segments[segments < 0] = 0
      segments[segments > self.n_segments - 1] = self.n_segments - 1
      if not self.ascending:
          segments = self.n_segments - 1 - segments
  
      ys = []
      group_start = 0
      for segment, group in groupby(segments):
          group_end = group_start + len(list(group))
          y = self.interpolants[segment](
              t_sorted[group_start:group_end]
          )
          ys.append(y)
          group_start = group_end
  
      ys = np.hstack(ys)
      ys = ys[:, reverse]
  
      return ys
  
file_path: catboost/contrib/python/scipy/py2/scipy/integrate/_ivp/common.py
imports: from __future__ import division, print_function, absolute_import
  from itertools import groupby
  from warnings import warn
  import numpy
  from scipy.sparse import find, coo_matrix
label_desc: Use image node_id 3 for calling the OdeSolution obj's underlying member method code with example usage: obj.__call__(t) and returns: ys, self