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

Safe Haskell None Haskell98

Data.Array.Accelerate.CUFFT.Single

Description

Transformations of single datasets.

Synopsis

# Documentation

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

switch

Instances

 Real Double Real Float

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