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

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 Typestype ProdRepr (Sign a) :: * MethodsfromProd :: proxy cst -> Sign a -> ProdRepr (Sign a)toProd :: proxy cst -> ProdRepr (Sign a) -> Sign aprod :: proxy cst -> Sign a -> ProdR cst (ProdRepr (Sign a)) (Lift Exp a, Elt (Plain a)) => Lift Exp (Sign a) Source # Associated Typestype Plain (Sign a) :: * # Methodslift :: Sign a -> Exp (Plain (Sign a)) # Elt a => Unlift Exp (Sign (Exp a)) Source # Methodsunlift :: 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 # MethodsshowsPrec :: Int -> Sign a -> ShowS #show :: Sign a -> String #showList :: [Sign a] -> ShowS # Num a => Arbitrary (Sign a) Source # Methodsarbitrary :: Gen (Sign a) #shrink :: Sign a -> [Sign a] # Elt a => Elt (Sign a) Source # MethodseltType :: 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.

Constructors

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

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)