def METHOD_NAME( self, array_in, array_out ):
    """
    Perform the inverse Fourier transform of array_in,
    and store the result in array_out
    Parameters
    ----------
    array_in, array_out: cuda device arrays or numpy arrays
        When using the GPU, these should be cuda device array.
        When using the CPU, array_in should be one of the
        two buffers that are returned by `get_buffers`
    """
    if self.use_cuda :
        # Copy 2D arrays to 1D array for optimized 1D batch FFT
        cuda_copy_2d_to_1d[self.dim_grid, self.dim_block](
            array_in, self.buffer1d_in)
        # Perform forward FFT
        self.fft.fft(self.buffer1d_in,
                     self.buffer1d_out,
                     cufft.CUFFT_INVERSE)
        # Normalize inverse FFT
        cupy.multiply(self.buffer1d_out, self.inv_Nz, out=self.buffer1d_out)
        # Copy 1D arrays back to 2D array
        cuda_copy_1d_to_2d[self.dim_grid, self.dim_block](
            self.buffer1d_out, array_out)
    elif self.use_mkl:
        # Perform the inverse FFT on the CPU using MKL
        self.mklfft.METHOD_NAME( array_in, array_out )
    else :
        # Perform the inverse FFT on the CPU using FFTW
        self.ifft.update_arrays( new_input_array=array_in,
                                new_output_array=array_out )
        self.ifft()