docs: def fft(arr_obj, res_g=None,
          inplace=False,
          inverse=False,
          axes=None,
          plan=None,
          fast_math=True):
      """ (inverse) fourier trafo of 1-3D arrays
  
      creates a new plan or uses the given plan
      
      the transformed arr_obj should be either a
  
      - numpy array:
  
          returns the fft as numpy array (inplace is ignored)
      
      - OCLArray of type complex64:
  
          writes transform into res_g if given, to arr_obj if inplace
          or returns a new OCLArray with the transform otherwise
      
      """
  
      if plan is None:
          plan = fft_plan(arr_obj.shape, arr_obj.dtype,
                          axes=axes,
                          fast_math=fast_math)
  
      if isinstance(arr_obj, np.ndarray):
          return _ocl_fft_numpy(plan, arr_obj, inverse=inverse)
      elif isinstance(arr_obj, OCLArray):
          if not arr_obj.dtype.type is np.complex64:
              raise TypeError("OCLArray arr_obj has to be of complex64 type")
  
          if inplace:
              _ocl_fft_gpu_inplace(plan, arr_obj, inverse=inverse,
                                   )
          else:
              #FIXME
              raise NotImplementedError("currently only inplace fft is supported (FIXME)")
  
              return _ocl_fft_gpu(plan, arr_obj,
                                  res_arr=res_g,
                                  inverse=inverse,
                                  )
  
      else:
          raise TypeError("array argument (1) has bad type: %s" % type(arr_obj))