class_docstr: Univariate spline in the B-spline basis.
  
  .. math::
      S(x) = \sum_{j=0}^{n-1} c_j  B_{j, k; t}(x)
  
  where :math:`B_{j, k; t}` are B-spline basis functions of degree `k`
  and knots `t`.
  
  Parameters
  ----------
  t : ndarray, shape (n+k+1,)
      knots
  c : ndarray, shape (>=n, ...)
      spline coefficients
  k : int
      B-spline degree
  extrapolate : bool or 'periodic', optional
      whether to extrapolate beyond the base interval, ``t[k] .. t[n]``,
      or to return nans.
      If True, extrapolates the first and last polynomial pieces of b-spline
      functions active on the base interval.
      If 'periodic', periodic extrapolation is used.
      Default is True.
  axis : int, optional
      Interpolation axis. Default is zero.
  
  Attributes
  ----------
  t : ndarray
      knot vector
  c : ndarray
      spline coefficients
  k : int
      spline degree
  extrapolate : bool
      If True, extrapolates the first and last polynomial pieces of b-spline
      functions active on the base interval.
  axis : int
      Interpolation axis.
  tck : tuple
      A read-only equivalent of ``(self.t, self.c, self.k)``
  
  Notes
  -----
  B-spline basis elements are defined via
  
  .. math::
      B_{i, 0}(x) = 1, \textrm{if $t_i \le x < t_{i+1}$, otherwise $0$,}
  
      B_{i, k}(x) = \frac{x - t_i}{t_{i+k} - t_i} B_{i, k-1}(x)
               + \frac{t_{i+k+1} - x}{t_{i+k+1} - t_{i+1}} B_{i+1, k-1}(x)
  
  **Implementation details**
  
  - At least ``k+1`` coefficients are required for a spline of degree `k`,
    so that ``n >= k+1``. Additional coefficients, ``c[j]`` with
    ``j > n``, are ignored.
  
  - B-spline basis elements of degree `k` form a partition of unity on the
    *base interval*, ``t[k] <= x <= t[n]``.
  
  - Based on [1]_ and [2]_
  
  .. seealso:: :class:`scipy.interpolate.BSpline`
  
  References
  ----------
  .. [1] Tom Lyche and Knut Morken, Spline methods,
      http://www.uio.no/studier/emner/matnat/ifi/INF-MAT5340/v05/undervisningsmateriale/
  .. [2] Carl de Boor, A practical guide to splines, Springer, 2001.
docstr: Construct a spline without making checks.
  Accepts same parameters as the regular constructor. Input arrays
  `t` and `c` must of correct shape and dtype.
docstr_tok: ["Construct","a","spline","without","making","checks",".","Accepts","same","parameters","as","the","regular","constructor",".","Input","arrays","`","t","`","and","`","c","`","must","of","correct","shape","and","dtype","."]
code: def construct_fast(cls, t, c, k, extrapolate=True, axis=0):
      """Construct a spline without making checks.
      Accepts same parameters as the regular constructor. Input arrays
      `t` and `c` must of correct shape and dtype.
      """
      self = object.__new__(cls)
      self.t, self.c, self.k = t, c, k
      self.extrapolate = extrapolate
      self.axis = axis
      return self
  
imports: import operator
  import cupy
  from cupy._core import internal
  from cupy._core._scalar import get_typename
  from cupyx.scipy.sparse import csr_matrix
  import numpy
label_desc: Use image node_id 2 for calling the BSpline obj's underlying member method code with example usage: obj.construct_fast(cls, t, c, k, extrapolate, axis) and returns: self