code: def test_extreme_domains(self, xp, scp, kernel):
      # Make sure the interpolant remains numerically stable for very
      # large/small domains.
      seq = Halton(2, scramble=False, seed=_np.random.RandomState())
      scale = 1e50
      shift = 1e55
  
      x = xp.asarray(seq.random(100))
      y = _2d_test_function(x, xp)
      xitp = xp.asarray(seq.random(100))
  
      if kernel in _SCALE_INVARIANT:
          yitp1 = self.build(scp, x, y, kernel=kernel)(xitp)
          yitp2 = self.build(scp, x * scale + shift, y, kernel=kernel)(
              xitp * scale + shift
          )
      else:
          yitp1 = self.build(scp, x, y, epsilon=5.0, kernel=kernel)(
              xitp
          )
          yitp2 = self.build(
              scp,
              x * scale + shift,
              y,
              epsilon=5.0 / scale,
              kernel=kernel,
          )(xitp * scale + shift)
  
      return yitp1, yitp2
  
imports: import pickle
  import pytest
  import warnings
  import numpy
  from numpy.linalg import LinAlgError
  import cupy
  import cupyx
  from cupy import testing
  import cupyx.scipy.interpolate
  from cupyx.scipy.interpolate._rbfinterp import _AVAILABLE, _SCALE_INVARIANT, _NAME_TO_MIN_DEGREE, NAME_TO_FUNC, _monomial_powers, polynomial_matrix, kernel_matrix
label_desc: Use image node_id 3 for calling the _TestRBFInterpolator obj's underlying member method code with example usage: obj.test_extreme_domains(xp, scp, kernel) and returns: yitp1,  yitp2