code: def _call_numpy(self, x):
          
          # Pre-processing before calculating the DFT
          preproc = self._preprocess(x)
  
          # The actual call to the FFT library
          # Normalization by 1 / prod(shape[axes]) is done by Numpy's FFT if
          # one of the "i" functions is used. For sign='-' we need to do it
          # ourselves.
          if self.halfcomplex:
              s = np.asarray(self.range.shape)[list(self.axes)]
              out = np.fft.irfftn(preproc, axes=self.axes, s=s)
          else:
              if self.sign == '-':
                  out = np.fft.fftn(preproc, axes=self.axes)
                  out /= np.prod(np.take(self.domain.shape, self.axes))
              else:
                  out = np.fft.ifftn(preproc, axes=self.axes)
  
          # Post-processing in IFT = pre-processing in FT (in-place)
          self._postprocess(out, out=out)
          if self.halfcomplex:
              assert is_real_dtype(out.dtype)
  
          if self.range.field == RealNumbers():
              return out.real
          else:
              return out
docs: Return ``self(x)`` for numpy back-end.
  
          Parameters
          ----------
          x : `numpy.ndarray`
              Array representing the function to be transformed
  
          Returns
          -------
          out : `numpy.ndarray`
              Result of the transform