{-# LANGUAGE ForeignFunctionInterface #-}
module Numeric.FFTW.FFI.Double where
import qualified Numeric.FFTW.FFI.Function as FFT
import qualified Numeric.FFTW.FFI.Type as Type
import qualified Data.EnumBitSet as EnumSet
import qualified Foreign.C.Types as C
import Foreign.ForeignPtr (FinalizerPtr)
import Foreign.Ptr (Ptr)
import Foreign.C.String (CString)
foreign import ccall unsafe "fftw3.h fftw_export_wisdom_to_string"
exportWisdomString :: IO CString
foreign import ccall unsafe "fftw3.h fftw_import_wisdom_from_string"
importWisdomString :: CString -> IO C.CInt
foreign import ccall unsafe "fftw3.h fftw_import_system_wisdom"
importWisdomSystem :: IO C.CInt
foreign import ccall safe "fftw3.h &fftw_destroy_plan"
ptrDestroyPlan :: FinalizerPtr (Type.Plan Double)
foreign import ccall unsafe "fftw3.h &fftw_free"
ptrFree :: FinalizerPtr (Ptr Double)
foreign import ccall safe "fftw3.h fftw_plan_dft_1d"
planDFT1d :: FFT.PlanDFT1d Double
foreign import ccall safe "fftw3.h fftw_plan_dft_2d"
planDFT2d :: FFT.PlanDFT2d Double
foreign import ccall safe "fftw3.h fftw_plan_dft_3d"
planDFT3d :: FFT.PlanDFT3d Double
foreign import ccall safe "fftw3.h fftw_plan_dft"
planDFT :: FFT.PlanDFT Double
foreign import ccall safe "fftw3.h fftw_plan_dft_r2c_1d"
planDFTr2c1d :: FFT.PlanDFTr2c1d Double
foreign import ccall safe "fftw3.h fftw_plan_dft_r2c_2d"
planDFTr2c2d :: FFT.PlanDFTr2c2d Double
foreign import ccall safe "fftw3.h fftw_plan_dft_r2c_3d"
planDFTr2c3d :: FFT.PlanDFTr2c3d Double
foreign import ccall safe "fftw3.h fftw_plan_dft_r2c"
planDFTr2c :: FFT.PlanDFTr2c Double
foreign import ccall safe "fftw3.h fftw_plan_dft_c2r_1d"
planDFTc2r1d :: FFT.PlanDFTc2r1d Double
foreign import ccall safe "fftw3.h fftw_plan_dft_c2r_2d"
planDFTc2r2d :: FFT.PlanDFTc2r2d Double
foreign import ccall safe "fftw3.h fftw_plan_dft_c2r_3d"
planDFTc2r3d :: FFT.PlanDFTc2r3d Double
foreign import ccall safe "fftw3.h fftw_plan_dft_c2r"
planDFTc2r :: FFT.PlanDFTc2r Double
foreign import ccall safe "fftw3.h fftw_plan_r2r_1d"
planR2r1d :: FFT.PlanR2r1d Double
foreign import ccall safe "fftw3.h fftw_plan_r2r_2d"
planR2r2d :: FFT.PlanR2r2d Double
foreign import ccall safe "fftw3.h fftw_plan_r2r_3d"
planR2r3d :: FFT.PlanR2r3d Double
foreign import ccall safe "fftw3.h fftw_plan_r2r"
planR2r :: FFT.PlanR2r Double
foreign import ccall safe "fftw3.h fftw_plan_many_dft"
planManyDFT :: FFT.PlanManyDFT Double
foreign import ccall safe "fftw3.h fftw_plan_many_dft_r2c"
planManyDFTr2c :: FFT.PlanManyDFTr2c Double
foreign import ccall safe "fftw3.h fftw_plan_many_dft_c2r"
planManyDFTc2r :: FFT.PlanManyDFTc2r Double
foreign import ccall safe "fftw3.h fftw_plan_many_r2r"
planManyR2r :: FFT.PlanManyR2r Double
foreign import ccall safe "fftw3.h fftw_plan_guru_dft"
planGuruDFT :: FFT.PlanGuruDFT Double
foreign import ccall safe "fftw3.h fftw_plan_guru_dft_r2c"
planGuruDFTr2c :: FFT.PlanGuruDFTr2c Double
foreign import ccall safe "fftw3.h fftw_plan_guru_dft_c2r"
planGuruDFTc2r :: FFT.PlanGuruDFTc2r Double
foreign import ccall safe "fftw3.h fftw_plan_guru_r2r"
planGuruR2r :: FFT.PlanGuruR2r Double
foreign import ccall safe "fftw3.h fftw_plan_guru_split_dft"
planGuruSplitDFT :: FFT.PlanGuruSplitDFT Double
foreign import ccall safe "fftw3.h fftw_plan_guru_split_dft_r2c"
planGuruSplitDFTr2c :: FFT.PlanGuruSplitDFTr2c Double
foreign import ccall safe "fftw3.h fftw_plan_guru_split_dft_c2r"
planGuruSplitDFTc2r :: FFT.PlanGuruSplitDFTc2r Double
foreign import ccall safe "fftw3.h fftw_destroy_plan"
destroyPlan :: FFT.DestroyPlan Double
foreign import ccall safe "fftw3.h fftw_execute"
execute :: FFT.Execute Double
foreign import ccall safe "fftw3.h fftw_execute_dft"
executeDFT :: FFT.ExecuteDFT Double
foreign import ccall safe "fftw3.h fftw_execute_dft_r2c"
executeDFTr2c :: FFT.ExecuteDFTr2c Double
foreign import ccall safe "fftw3.h fftw_execute_dft_c2r"
executeDFTc2r :: FFT.ExecuteDFTc2r Double
foreign import ccall safe "fftw3.h fftw_execute_r2r"
executeR2r :: FFT.ExecuteR2r Double
foreign import ccall safe "fftw3.h fftw_execute_split_dft"
executeSplitDFT :: FFT.ExecuteSplitDFT Double
foreign import ccall safe "fftw3.h fftw_execute_split_dft_r2c"
executeSplitDFTr2c :: FFT.ExecuteSplitDFTr2c Double
foreign import ccall safe "fftw3.h fftw_execute_split_dft_c2r"
executeSplitDFTc2r :: FFT.ExecuteSplitDFTc2r Double
foreign import ccall unsafe "fftw3.h fftw_malloc"
malloc :: FFT.Malloc Double
foreign import ccall unsafe "fftw3.h fftw_free"
free :: FFT.Free Double
foreign import ccall unsafe "fftw3.h fftw_alloc_real"
allocReal :: FFT.AllocReal Double
foreign import ccall unsafe "fftw3.h fftw_alloc_complex"
allocComplex :: FFT.AllocComplex Double
foreign import ccall unsafe "fftw3.h fftw_free"
freeComplex :: FFT.FreeComplex Double