Safe Haskell | None |
---|---|
Language | Haskell98 |
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.
- type Transform sh a = Acc (Array sh a) -> Acc (Array sh a)
- transform :: (Slice sh, Shape sh, RealFloat a, FromIntegral Int a) => Exp (Sign a) -> Transform (sh :. Int) (Complex a)
- ditSplitRadix :: (Slice sh, Shape sh, RealFloat a, FromIntegral Int a) => Exp (Sign a) -> Transform (sh :. Int) (Complex a)
- dit2 :: (Slice sh, Shape sh, RealFloat a, FromIntegral Int a) => Exp (Sign a) -> Transform (sh :. Int) (Complex a)
- dit235 :: (Slice sh, Shape sh, RealFloat a, FromIntegral Int a) => Exp (Sign a) -> Transform (sh :. Int) (Complex a)
- ceiling5Smooth :: Exp Int -> Exp Int
- transformChirp2 :: (Shape sh, Slice sh, RealFloat a, FromIntegral Int a) => Exp (Sign a) -> Transform (sh :. Int) (Complex a)
- transformChirp235 :: (Shape sh, Slice sh, RealFloat a, FromIntegral Int a) => Exp (Sign a) -> Transform (sh :. Int) (Complex a)
- data Sign a
- forward :: Num a => Exp (Sign a)
- inverse :: Num a => Exp (Sign a)
- transform2d :: (Shape sh, Slice sh, RealFloat a) => SubTransform (Complex a) -> Transform ((sh :. Int) :. Int) (Complex a)
- transform3d :: (Shape sh, Slice sh, RealFloat a) => SubTransform (Complex a) -> Transform (((sh :. Int) :. Int) :. Int) (Complex a)
- data SubTransform a = SubTransform (forall sh. (Shape sh, Slice sh) => Transform (sh :. Int) a)
Documentation
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.
cst a => IsProduct cst (Sign a) Source # | |
(Lift Exp a, Elt (Plain a)) => Lift Exp (Sign a) Source # | |
Elt a => Unlift Exp (Sign (Exp a)) Source # | |
Eq a => Eq (Sign a) Source # | |
Show a => Show (Sign a) Source # | |
Num a => Arbitrary (Sign a) Source # | |
Elt a => Elt (Sign a) Source # | |
type EltRepr (Sign a) Source # | |
type ProdRepr (Sign a) Source # | |
type Plain (Sign a) Source # | |
transform2d :: (Shape sh, Slice sh, RealFloat a) => SubTransform (Complex a) -> Transform ((sh :. Int) :. Int) (Complex a) Source #
transform3d :: (Shape sh, Slice sh, RealFloat a) => SubTransform (Complex a) -> Transform (((sh :. Int) :. Int) :. Int) (Complex a) Source #
data SubTransform a Source #