code: def gpu_c2r_ifft(in1, is_gpuarray=False, store_on_gpu=False):
      
  
      if is_gpuarray:
          gpu_in1 = in1
      else:
          gpu_in1 = gpuarray.to_gpu_async(in1.astype(np.complex64))
  
      output_size = np.array(in1.shape)
      output_size[1] = 2*(output_size[1]-1)
  
      gpu_out1 = gpuarray.empty([output_size[0],output_size[1]], np.float32)
      gpu_plan = Plan(output_size, np.complex64, np.float32)
      ifft(gpu_in1, gpu_out1, gpu_plan)
      scale_fft(gpu_out1)
  
      if store_on_gpu:
          return gpu_out1
      else:
          return gpu_out1.get()
docs: This function makes use of the scikits implementation of the FFT for GPUs to take the complex to real IFFT.
  
      INPUTS:
      in1             (no default):       The array on which the IFFT is to be performed.
      is_gpuarray     (default=True):     Boolean specifier for whether or not input is on the gpu.
      store_on_gpu    (default=False):    Boolean specifier for whether the result is to be left on the gpu or not.
  
      OUTPUTS:
      gpu_out1                            The gpu array containing the result.
      OR
      gpu_out1.get()                      The result from the gpu array.