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

Split-Radix for power-of-two sizes.

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

Decimation in time for power-of-two sizes.

dit235 :: (Slice sh, Shape sh, RealFloat a, FromIntegral Int 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, RealFloat a, FromIntegral Int 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, RealFloat a, FromIntegral Int 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

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 => Exp (Sign a) Source #

inverse :: Num a => Exp (Sign a) Source #

data SubTransform a Source #

Constructors

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