code: def sproot(tck, mest=10):
      """
      Find the roots of a cubic B-spline.
  
      Given the knots (>=8) and coefficients of a cubic B-spline return the
      roots of the spline.
  
      Parameters
      ----------
      tck : tuple
          A tuple (t,c,k) containing the vector of knots,
          the B-spline coefficients, and the degree of the spline.
          The number of knots must be >= 8, and the degree must be 3.
          The knots must be a montonically increasing sequence.
      mest : int, optional
          An estimate of the number of zeros (Default is 10).
  
      Returns
      -------
      zeros : ndarray
          An array giving the roots of the spline.
  
      See also
      --------
      splprep, splrep, splint, spalde, splev
      bisplrep, bisplev
      UnivariateSpline, BivariateSpline
  
  
      References
      ----------
      .. [1] C. de Boor, "On calculating with b-splines", J. Approximation
          Theory, 6, p.50-62, 1972.
      .. [2] M.G. Cox, "The numerical evaluation of b-splines", J. Inst. Maths
          Applics, 10, p.134-149, 1972.
      .. [3] P. Dierckx, "Curve and surface fitting with splines", Monographs
          on Numerical Analysis, Oxford University Press, 1993.
  
      """
      t, c, k = tck
      if k != 3:
          raise ValueError("sproot works only for cubic (k=3) splines")
      try:
          c[0][0]
          parametric = True
      except Exception:
          parametric = False
      if parametric:
          return list(
              map(
                  lambda c, t=t, k=k, mest=mest: sproot(
                      [t, c, k], mest
                  ),
                  c,
              )
          )
      else:
          if len(t) < 8:
              raise TypeError("The number of knots %d>=8" % len(t))
          z, ier = _fitpack._sproot(t, c, k, mest)
          if ier == 10:
              raise TypeError(
                  "Invalid input data. "
                  "t1<=..<=t4<t5<..<tn-3<=..<=tn must hold."
              )
          if ier == 0:
              return z
          if ier == 1:
              warnings.warn(
                  RuntimeWarning("The number of zeros exceeds mest")
              )
              return z
          raise TypeError("Unknown error")
  
file_path: catboost/contrib/python/scipy/py2/scipy/interpolate/_fitpack_impl.py
imports: from __future__ import division, print_function, absolute_import
  import warnings
  import numpy
  from .None import _fitpack
  from numpy import atleast_1d, array, ones, zeros, sqrt, ravel, transpose, empty, iinfo, intc, asarray
  from .None import dfitpack
label_desc: Use image node_id 6 for calling a global function with example usage: sproot(tck, mest) and returns: list, z, z