code: def _evaluate(x, y, kernel, epsilon, powers, shift, scale, coeffs):
      """Evaluate the RBF interpolant at `x`.
      Parameters
      ----------
      x : (Q, N) float ndarray
          Interpolation point coordinates.
      y : (P, N) float ndarray
          Data point coordinates.
      kernel : str
          Name of the RBF.
      epsilon : float
          Shape parameter.
      powers : (R, N) int ndarray
          The exponents for each monomial in the polynomial.
      shift : (N,) float ndarray
          Shifts the polynomial domain for numerical stability.
      scale : (N,) float ndarray
          Scales the polynomial domain for numerical stability.
      coeffs : (P + R, S) float ndarray
          Coefficients for each RBF and monomial.
      Returns
      -------
      (Q, S) float ndarray
      """
      q = x.shape[0]
      p = y.shape[0]
      r = powers.shape[0]
      s = coeffs.shape[1]
      kernel_func = NAME_TO_FUNC[kernel]
  
      yeps = y * epsilon
      xeps = x * epsilon
      xhat = (x - shift) / scale
  
      out = np.zeros((q, s), dtype=float)
      vec = np.empty((p + r,), dtype=float)
      for i in range(q):
          kernel_vector(xeps[i], yeps, kernel_func, vec[:p])
          polynomial_vector(xhat[i], powers, vec[p:])
          # Compute the dot product between coeffs and vec. Do not use np.dot
          # because that introduces build complications with BLAS (see
          # https://github.com/serge-sans-paille/pythran/issues/1346)
          for j in range(s):
              for k in range(p + r):
                  out[i, j] += coeffs[k, j] * vec[k]
  
      return out
  
file_path: pythran/pythran/tests/scipy/_rbfinterp.py
imports: import numpy
label_desc: Use image node_id 16 for calling a global function with example usage: _evaluate(x, y, kernel, epsilon, powers, shift, scale, coeffs) and returns: out