class_docstr: Piecewise tensor product polynomial
  
  The value at point ``xp = (x', y', z', ...)`` is evaluated by first
  computing the interval indices `i` such that::
  
      x[0][i[0]] <= x' < x[0][i[0]+1]
      x[1][i[1]] <= y' < x[1][i[1]+1]
      ...
  
  and then computing::
  
      S = sum(c[k0-m0-1,...,kn-mn-1,i[0],...,i[n]]
              * (xp[0] - x[0][i[0]])**m0
              * ...
              * (xp[n] - x[n][i[n]])**mn
              for m0 in range(k[0]+1)
              ...
              for mn in range(k[n]+1))
  
  where ``k[j]`` is the degree of the polynomial in dimension j. This
  representation is the piecewise multivariate power basis.
  
  Parameters
  ----------
  c : ndarray, shape (k0, ..., kn, m0, ..., mn, ...)
      Polynomial coefficients, with polynomial order `kj` and
      `mj+1` intervals for each dimension `j`.
  x : ndim-tuple of ndarrays, shapes (mj+1,)
      Polynomial breakpoints for each dimension. These must be
      sorted in increasing order.
  extrapolate : bool, optional
      Whether to extrapolate to out-of-bounds points based on first
      and last intervals, or to return NaNs. Default: True.
  
  Attributes
  ----------
  x : tuple of ndarrays
      Breakpoints.
  c : ndarray
      Coefficients of the polynomials.
  
  See also
  --------
  PPoly : piecewise polynomials in 1D
  
  Notes
  -----
  High-order polynomials in the power basis can be numerically
  unstable.
class_docstr_tok: ["Piecewise","tensor","product","polynomial","The","value","at","point","``","xp","=","(","x","'",",","y","'",",","z","'",",","...",")","``","is","evaluated","by","first","computing","the","interval","indices","`","i","`","such","that",":",":","x","[","0","]","[","i","[","0","]","]","<","=","x","'","<","x","[","0","]","[","i","[","0","]","+1","]","x","[","1","]","[","i","[","1","]","]","<","=","y","'","<","x","[","1","]","[","i","[","1","]","+1","]","...","and","then","computing",":",":","S","=","sum","(","c","[","k0-m0-1",",","...",",","kn-mn-1",",","i","[","0","]",",","...",",","i","[","n","]","]","*","(","xp","[","0","]","-","x","[","0","]","[","i","[","0","]","]",")","*","*","m0","*","...","*","(","xp","[","n","]","-","x","[","n","]","[","i","[","n","]","]",")","*","*","mn","for","m0","in","range","(","k","[","0","]","+1",")","...","for","mn","in","range","(","k","[","n","]","+1",")",")","where","``","k","[","j","]","``","is","the","degree","of","the","polynomial","in","dimension","j",".","This","representation","is","the","piecewise","multivariate","power","basis",".","Parameters","--","--","--","--","--","c",":","ndarray",",","shape","(","k0",",","...",",","kn",",","m0",",","...",",","mn",",","...",")","Polynomial","coefficients",",","with","polynomial","order","`","kj","`","and","`","mj+1","`","intervals","for","each","dimension","`","j","`",".","x",":","ndim-tuple","of","ndarrays",",","shapes","(","mj+1",",",")","Polynomial","breakpoints","for","each","dimension",".","These","must","be","sorted","in","increasing","order",".","extrapolate",":","bool",",","optional","Whether","to","extrapolate","to","out-of-bounds","points","based","on","first","and","last","intervals",",","or","to","return","NaNs",".","Default",":","True",".","Attributes","--","--","--","--","--","x",":","tuple","of","ndarrays","Breakpoints",".","c",":","ndarray","Coefficients","of","the","polynomials",".","See","also","--","--","--","--","PPoly",":","piecewise","polynomials","in","1D","Notes","--","--","-","High-order","polynomials","in","the","power","basis","can","be","numerically","unstable","."]
docstr: Construct a new piecewise polynomial representing the antiderivative.
  Antiderivative is also the indefinite integral of the function,
  and derivative is its inverse operation.
  
  Parameters
  ----------
  nu : ndim-tuple of int
      Order of derivatives to evaluate for each dimension.
      If negative, the derivative is returned.
  
  Returns
  -------
  pp : PPoly
      Piecewise polynomial of order k2 = k + n representing
      the antiderivative of this polynomial.
  
  Notes
  -----
  The antiderivative returned by this function is continuous and
  continuously differentiable to order n-1, up to floating point
  rounding error.
code: def antiderivative(self, nu):
      """
      Construct a new piecewise polynomial representing the antiderivative.
      Antiderivative is also the indefinite integral of the function,
      and derivative is its inverse operation.
  
      Parameters
      ----------
      nu : ndim-tuple of int
          Order of derivatives to evaluate for each dimension.
          If negative, the derivative is returned.
  
      Returns
      -------
      pp : PPoly
          Piecewise polynomial of order k2 = k + n representing
          the antiderivative of this polynomial.
  
      Notes
      -----
      The antiderivative returned by this function is continuous and
      continuously differentiable to order n-1, up to floating point
      rounding error.
      """
      p = self.construct_fast(self.c.copy(), self.x, self.extrapolate)
  
      for axis, n in enumerate(nu):
          p._antiderivative_inplace(n, axis)
  
      p._ensure_c_contiguous()
      return p
  
imports: import math
  import cupy
  from cupy._core import internal
  from cupy._core._scalar import get_typename
  from cupy_backends.cuda.api import runtime
  from cupyx.scipy import special
  from cupyx.scipy.interpolate._bspline import BSpline, _get_dtype
  import numpy
label_desc: Use image node_id 9 for calling the NdPPoly obj's underlying member method code with example usage: obj.antiderivative(nu) and returns: p