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 #