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

Safe HaskellNone
LanguageHaskell98

Data.Array.Accelerate.Fourier.Adhoc

Description

The implementations in this module work entirely in the Acc domain. This means that they can be applied to any array without knowing their extent on the Haskell side. The downside is, that they cannot share any preprocessing.

Synopsis

Documentation

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

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

Automatically choose transformation algorithms according to the size of the array. However, they are not as sophisticated as the algorithms in Data.Array.Accelerate.Fourier.Planned.

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

Split-Radix for power-of-two sizes.

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

Decimation in time for power-of-two sizes.

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

Decimation in time for sizes that are composites of the factors 2, 3 and 5. These sizes are known as 5-smooth numbers or the Hamming sequence. http://oeis.org/A051037.

ceiling5Smooth :: Exp Int -> Exp Int Source

Next greater or equal 5-smooth number as needed by dit235.

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

Transformation of arbitrary length based on Bluestein on a power-of-two size.

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

Transformation of arbitrary length based on Bluestein on a 5-smooth size.

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) 

forward :: (Elt a, IsNum a) => Exp (Sign a) Source

inverse :: (Elt a, IsNum a) => Exp (Sign a) Source

data SubTransform a Source

Constructors

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