code: def _evaluate_spline(t, c, k, xp, nu, extrapolate, out):
      """
      Evaluate a spline in the B-spline basis.
  
      Parameters
      ----------
      t : ndarray, shape (n+k+1)
          knots
      c : ndarray, shape (n, m)
          B-spline coefficients
      xp : ndarray, shape (s,)
          Points to evaluate the spline at.
      nu : int
          Order of derivative to evaluate.
      extrapolate : int, optional
          Whether to extrapolate to ouf-of-bounds points, or to return NaNs.
      out : ndarray, shape (s, m)
          Computed values of the spline at each of the input points.
          This argument is modified in-place.
      """
      n = t.shape[0] - k - 1
      intervals = cupy.empty_like(xp, dtype=cupy.int64)
  
      # Compute intervals for each value
      interval_kernel = _get_module_func(
          INTERVAL_MODULE, "find_interval"
      )
      interval_kernel(
          ((xp.shape[0] + 128 - 1) // 128,),
          (128,),
          (t, xp, intervals, k, n, extrapolate, xp.shape[0]),
      )
  
      # Compute interpolation
      num_c = int(np.prod(c.shape[1:]))
      temp = cupy.empty(xp.shape[0] * (2 * k + 1))
      d_boor_kernel = _get_module_func(D_BOOR_MODULE, "d_boor", c)
      d_boor_kernel(
          ((xp.shape[0] + 128 - 1) // 128,),
          (128,),
          (
              t,
              c,
              k,
              nu,
              xp,
              intervals,
              out,
              temp,
              num_c,
              1,
              xp.shape[0],
          ),
      )
  
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 4 for calling a global function with example usage: _evaluate_spline(t, c, k, xp, nu, extrapolate, out) without return types