code: def _ifft(
      x: np.ndarray, fft_length: int, axis: int, onesided: bool
  ) -> np.ndarray:
      signals = np.fft.ifft(x, fft_length, axis=axis)
      real_signals = np.real(signals)
      imaginary_signals = np.imag(signals)
      merged = np.concatenate(
          (
              real_signals[..., np.newaxis],
              imaginary_signals[..., np.newaxis],
          ),
          axis=-1,
      )
      if onesided:
          slices = [slice(a) for a in merged.shape]
          slices[axis] = slice(0, merged.shape[axis] // 2 + 1)
          return merged[tuple(slices)]
      return merged
  
file_path: onnx/onnx/reference/ops/op_dft.py
imports: from __future__ import annotations
  import numpy
  from onnx.reference.op_run import OpRun
label_desc: Use image node_id 3 for calling a global function with example usage: _ifft(x, fft_length, axis, onesided) and returns: merged, merged