accelerate-cufft-0.0.1: Accelerate frontend to the CUFFT library (Fourier transform)

Safe HaskellNone



Transformations of single datasets.



type Transform sh a b = Acc (Array sh a) -> Acc (Array sh b) Source

transform :: (Shape sh, Slice sh, Elt e, Real e) => Handle (sh :. Int) e a b -> Transform (sh :. Int) a b Source

The implementation works on all arrays of rank less than or equal to 3. The result is un-normalised.

data Handle sh e a b Source

plan1D :: (Elt e, Real e) => Mode DIM1 e a b -> DIM1 -> IO (Handle DIM1 e a b) Source

The plan must be created in the context where the transform is executed. See plan1D for details.

plan2D :: (Elt e, Real e) => Mode DIM2 e a b -> DIM2 -> IO (Handle DIM2 e a b) Source

plan3D :: (Elt e, Real e) => Mode DIM3 e a b -> DIM3 -> IO (Handle DIM3 e a b) Source

class (RealFloat e, IsFloating e) => Real e Source

Minimal complete definition



data Mode sh e a b Source

forwardComplex :: (Shape sh, Slice sh, Real e) => Mode sh e (Complex e) (Complex e) Source

inverseComplex :: (Shape sh, Slice sh, Real e) => Mode sh e (Complex e) (Complex e) Source

forwardReal :: (Shape sh, Slice sh, Real e) => Mode (sh :. Int) e e (Complex e) Source

In contrast to plain CUFFT functions the data is redundant. That is, an array of shape sh is transformed to an array of shape sh. This way, all dimensions of an array are handled the same way. Chances are good, that the internal post processing is fused with following array operations and thus the redundant data will not be stored in a manifest array.

inverseReal :: (Shape sh, Slice sh, Real e) => Mode (sh :. Int) e (Complex e) e Source