code: def _test_real_nd(self, xp, scp, x, real_axis):
      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.fft.rfft(x, axis=real_axis)
      # complex-valued FFTs on all other axes
      complex_axes = tuple(
          [ax for ax in range(x.ndim) if ax != real_axis]
      )
      if complex_axes:
          a = scp.fft.fftn(a, axes=complex_axes)
  
      a = scp.ndimage.fourier_ellipsoid(
          a, self.size, n=x.shape[real_axis], axis=real_axis
      )
  
      if complex_axes:
          a = scp.fft.ifftn(a, axes=complex_axes)
      a = scp.fft.irfft(a, axis=real_axis)
      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 1 for calling the TestFourierEllipsoid obj's underlying member method code with example usage: obj._test_real_nd(xp, scp, x, real_axis) and returns: xp