accelerate-fourier-0.0.1: Fast Fourier transform and convolution using the Accelerate framework

Safe HaskellNone
LanguageHaskell98

Data.Array.Accelerate.Fourier.Preprocessed

Description

The implementations in this module require that you know the transformation data set size on the Haskell side. This knowledge is baked into the Accelerate code. The advantage is, that you can share preprocessing between calls to the Fourier transforms, like in:

let transform = dit2 1024
in  transform x ... transform y

Synopsis

Documentation

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

ditSplitRadix :: (Slice sh, Shape sh, IsFloating a, Elt a) => Sign a -> Int -> Transform (sh :. Int) (Complex a) Source

Decimation in time for power-of-two using the split-radix algorithm. Should be faster than dit2.

dit2 :: (Slice sh, Shape sh, IsFloating a, Elt a) => Sign a -> Int -> Transform (sh :. Int) (Complex a) Source

Decimation in time for power-of-two sizes.

dif2 :: (Slice sh, Shape sh, IsFloating a, Elt a) => Sign a -> Int -> Transform (sh :. Int) (Complex a) Source

Decimation in frequency for power-of-two sizes.

data Sign a Source

Instances

(Lift Exp a, Elt (Plain a)) => Lift Exp (Sign a) 
Elt a => Unlift Exp (Sign (Exp a)) 
Eq a => Eq (Sign a) 
Show a => Show (Sign a) 
Num a => Arbitrary (Sign a) 
IsTuple (Sign a) 
Elt a => Elt (Sign a) 
Typeable (* -> *) Sign 
type TupleRepr (Sign a) = ((), a) 
type EltRepr' (Sign a) = EltRepr' a 
type EltRepr (Sign a) = EltRepr a 
type Plain (Sign a) = Sign (Plain a) 

transform2d :: (Shape sh, Slice sh, IsFloating a, Elt a) => SubTransformPair (Complex a) -> Transform ((sh :. Int) :. Int) (Complex a) Source

Transforms in SubTransformPair are ordered from least-significant to most-significant dimension.

transform3d :: (Shape sh, Slice sh, IsFloating a, Elt a) => SubTransformTriple (Complex a) -> Transform (((sh :. Int) :. Int) :. Int) (Complex a) Source

Transforms in SubTransformTriple are ordered from least-significant to most-significant dimension.

data SubTransformPair a Source

Constructors

SubTransformPair (forall sh. (Shape sh, Slice sh) => Transform (sh :. Int) a) (forall sh. (Shape sh, Slice sh) => Transform (sh :. Int) a) 

data SubTransformTriple a Source

Constructors

SubTransformTriple (forall sh. (Shape sh, Slice sh) => Transform (sh :. Int) a) (forall sh. (Shape sh, Slice sh) => Transform (sh :. Int) a) (forall sh. (Shape sh, Slice sh) => Transform (sh :. Int) a)