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

Safe HaskellNone
LanguageHaskell98

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, 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) => PTX -> Mode DIM1 e a b -> DIM1 -> IO (Handle DIM1 e a b) Source #

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

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

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

class (RealFloat e, RealFloat e, FromIntegral Int e) => Real e Source #

Minimal complete definition

switch

Instances

Real Double Source # 

Methods

switch :: f Float -> f Double -> f Double

Real Float Source # 

Methods

switch :: f Float -> f Double -> f 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 #