code: def test_complex_fft(self, xp, scp, dtype):
      x = testing.shaped_random(self.shape, xp, dtype)
      if x.ndim == 1 and scipy_version < "1.5.3":
          # 1D case gives an incorrect result in SciPy < 1.5.3
          pytest.skip("scipy version to old")
      a = scp.fftpack.fftn(x)
      a = scp.ndimage.fourier_ellipsoid(a, self.size)
      a = scp.fftpack.ifftn(a)
      if not x.dtype.kind == "c":
          a = a.real
      return xp.ascontiguousarray(a)
  
imports: import cupy
  import numpy
  import pytest
  from cupy import testing
  import cupyx.scipy.fft
  import cupyx.scipy.fftpack
  import cupyx.scipy.ndimage
label_desc: Use image node_id 4 for calling the TestFourierEllipsoid obj's underlying member method code with example usage: obj.test_complex_fft(xp, scp, dtype) and returns: xp