accelerate-fourier-1.0: 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, RealFloat a, FromIntegral Int 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, RealFloat a, FromIntegral Int a) => Sign a -> Int -> Transform (sh :. Int) (Complex a) Source #

Decimation in time for power-of-two sizes.

dif2 :: (Slice sh, Shape sh, RealFloat a, FromIntegral Int a) => Sign a -> Int -> Transform (sh :. Int) (Complex a) Source #

Decimation in frequency for power-of-two sizes.

data Sign a Source #

Instances

cst a => IsProduct cst (Sign a) Source # 

Associated Types

type ProdRepr (Sign a) :: *

Methods

fromProd :: proxy cst -> Sign a -> ProdRepr (Sign a)

toProd :: proxy cst -> ProdRepr (Sign a) -> Sign a

prod :: proxy cst -> Sign a -> ProdR cst (ProdRepr (Sign a))

(Lift Exp a, Elt (Plain a)) => Lift Exp (Sign a) Source # 

Associated Types

type Plain (Sign a) :: * #

Methods

lift :: Sign a -> Exp (Plain (Sign a)) #

Elt a => Unlift Exp (Sign (Exp a)) Source # 

Methods

unlift :: Exp (Plain (Sign (Exp a))) -> Sign (Exp a) #

Eq a => Eq (Sign a) Source # 

Methods

(==) :: Sign a -> Sign a -> Bool #

(/=) :: Sign a -> Sign a -> Bool #

Show a => Show (Sign a) Source # 

Methods

showsPrec :: Int -> Sign a -> ShowS #

show :: Sign a -> String #

showList :: [Sign a] -> ShowS #

Num a => Arbitrary (Sign a) Source # 

Methods

arbitrary :: Gen (Sign a) #

shrink :: Sign a -> [Sign a] #

Elt a => Elt (Sign a) Source # 

Methods

eltType :: Sign a -> TupleType (EltRepr (Sign a))

fromElt :: Sign a -> EltRepr (Sign a)

toElt :: EltRepr (Sign a) -> Sign a

type EltRepr (Sign a) Source # 
type EltRepr (Sign a) = EltRepr a
type ProdRepr (Sign a) Source # 
type ProdRepr (Sign a) = ((), a)
type Plain (Sign a) Source # 
type Plain (Sign a) = Sign (Plain a)

forward :: Num a => Sign a Source #

inverse :: Num a => Sign a Source #

transform2d :: (Shape sh, Slice sh, RealFloat 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, RealFloat 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)