packages feed

accelerate-fourier 1.0.0.5 → 1.0.0.6

raw patch · 5 files changed

+40/−65 lines, 5 filesdep +non-emptydep ~acceleratedep ~accelerate-utilitydep ~containersPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: non-empty

Dependency ranges changed: accelerate, accelerate-utility, containers, criterion, transformers

API changes (from Hackage documentation)

- Data.Array.Accelerate.Fourier.Planned: instance Data.Array.Accelerate.Array.Sugar.Elt a => GHC.Show.Show (Data.Array.Accelerate.Fourier.Planned.Cache a)
- Data.Array.Accelerate.Fourier.Planned: instance Data.Array.Accelerate.Array.Sugar.Elt a => GHC.Show.Show (Data.Array.Accelerate.Fourier.Planned.CacheSplitRadixChain a)
- Data.Array.Accelerate.Fourier.Planned: instance Data.Array.Accelerate.Array.Sugar.Elt a => GHC.Show.Show (Data.Array.Accelerate.Fourier.Planned.LevelCacheChirp a)
- Data.Array.Accelerate.Fourier.Planned: instance Data.Array.Accelerate.Array.Sugar.Elt a => GHC.Show.Show (Data.Array.Accelerate.Fourier.Planned.LevelCacheComposite a)
- Data.Array.Accelerate.Fourier.Planned: instance Data.Array.Accelerate.Array.Sugar.Elt a => GHC.Show.Show (Data.Array.Accelerate.Fourier.Planned.LevelCachePrime a)
- Data.Array.Accelerate.Fourier.Planned: instance Data.Array.Accelerate.Array.Sugar.Elt a => GHC.Show.Show (Data.Array.Accelerate.Fourier.Planned.LevelCacheRadix2 a)
- Data.Array.Accelerate.Fourier.Planned: instance Data.Array.Accelerate.Array.Sugar.Elt a => GHC.Show.Show (Data.Array.Accelerate.Fourier.Planned.LevelCacheSplitRadix a)
+ Data.Array.Accelerate.Fourier.Planned: instance (Data.Array.Accelerate.Sugar.Elt.Elt a, GHC.Show.Show a) => GHC.Show.Show (Data.Array.Accelerate.Fourier.Planned.Cache a)
+ Data.Array.Accelerate.Fourier.Planned: instance (GHC.Show.Show a, Data.Array.Accelerate.Sugar.Elt.Elt a) => GHC.Show.Show (Data.Array.Accelerate.Fourier.Planned.CacheSplitRadixChain a)
+ Data.Array.Accelerate.Fourier.Planned: instance (GHC.Show.Show a, Data.Array.Accelerate.Sugar.Elt.Elt a) => GHC.Show.Show (Data.Array.Accelerate.Fourier.Planned.LevelCacheSplitRadix a)
+ Data.Array.Accelerate.Fourier.Planned: instance Data.Array.Accelerate.Sugar.Elt.Elt a => GHC.Show.Show (Data.Array.Accelerate.Fourier.Planned.LevelCacheChirp a)
+ Data.Array.Accelerate.Fourier.Planned: instance Data.Array.Accelerate.Sugar.Elt.Elt a => GHC.Show.Show (Data.Array.Accelerate.Fourier.Planned.LevelCacheComposite a)
+ Data.Array.Accelerate.Fourier.Planned: instance Data.Array.Accelerate.Sugar.Elt.Elt a => GHC.Show.Show (Data.Array.Accelerate.Fourier.Planned.LevelCachePrime a)
+ Data.Array.Accelerate.Fourier.Planned: instance Data.Array.Accelerate.Sugar.Elt.Elt a => GHC.Show.Show (Data.Array.Accelerate.Fourier.Planned.LevelCacheRadix2 a)
- Data.Array.Accelerate.Fourier.Adhoc: forward :: (Num a) => Exp (Sign a)
+ Data.Array.Accelerate.Fourier.Adhoc: forward :: Num a => Exp (Sign a)
- Data.Array.Accelerate.Fourier.Adhoc: inverse :: (Num a) => Exp (Sign a)
+ Data.Array.Accelerate.Fourier.Adhoc: inverse :: Num a => Exp (Sign a)
- Data.Array.Accelerate.Fourier.Planned: directionModes :: (Num a) => Int -> ((Direction, Sign a), (Direction, Sign a))
+ Data.Array.Accelerate.Fourier.Planned: directionModes :: Num a => Int -> ((Direction, Sign a), (Direction, Sign a))
- Data.Array.Accelerate.Fourier.Real: entangleCoefficient :: (RealFloat a) => Exp (Complex a) -> Exp (Complex a) -> Exp (Complex a, Complex a)
+ Data.Array.Accelerate.Fourier.Real: entangleCoefficient :: RealFloat a => Exp (Complex a) -> Exp (Complex a) -> Exp (Complex a, Complex a)
- Data.Array.Accelerate.Fourier.Real: untangleCoefficient :: (RealFloat a) => Exp (Complex a) -> Exp (Complex a) -> Exp (Complex a, Complex a)
+ Data.Array.Accelerate.Fourier.Real: untangleCoefficient :: RealFloat a => Exp (Complex a) -> Exp (Complex a) -> Exp (Complex a, Complex a)

Files

accelerate-fourier.cabal view
@@ -1,10 +1,10 @@ Name:             accelerate-fourier-Version:          1.0.0.5+Version:          1.0.0.6 License:          BSD3 License-File:     LICENSE Author:           Henning Thielemann <haskell@henning-thielemann.de> Maintainer:       Henning Thielemann <haskell@henning-thielemann.de>-Homepage:         http://hub.darcs.net/thielema/accelerate-fourier/+Homepage:         https://hub.darcs.net/thielema/accelerate-fourier/ Category:         Math Synopsis:         Fast Fourier transform and convolution using the Accelerate framework Description:@@ -22,21 +22,22 @@ Build-Type:       Simple  Source-Repository this-  Tag:         1.0.0.5+  Tag:         1.0.0.6   Type:        darcs-  Location:    http://hub.darcs.net/thielema/accelerate-fourier/+  Location:    https://hub.darcs.net/thielema/accelerate-fourier/  Source-Repository head   Type:        darcs-  Location:    http://hub.darcs.net/thielema/accelerate-fourier/+  Location:    https://hub.darcs.net/thielema/accelerate-fourier/  Library   Build-Depends:     accelerate-arithmetic >=1.0 && <1.1,-    accelerate-utility >=1.0 && <1.1,-    accelerate >=1.0 && <1.2,-    containers >=0.5 && <0.6,-    transformers >=0.3 && <0.6,+    accelerate-utility >=1.1 && <1.2,+    accelerate >=1.3 && <1.5,+    containers >=0.5 && <0.9,+    transformers >=0.3 && <0.7,+    non-empty >=0.3.3 && <0.4,     utility-ht >=0.0.8 && <0.1,     QuickCheck >=2.4 && <3,     base >=4.5 && <5@@ -86,7 +87,7 @@   Hs-Source-Dirs:   benchmark   Default-Language: Haskell98   Build-Depends:-    criterion >=1.0 && <1.5,+    criterion >=1.0 && <1.7,     accelerate-fourier,     accelerate-arithmetic,     accelerate-utility,
src/Data/Array/Accelerate/Fourier/Adhoc.hs view
@@ -187,15 +187,8 @@       (\x -> A.unit $ (Sliced.length $ A.afst x) A.> 1)       (Acc.modify (acc,acc) $        \(arr,factors) ->-         let divides k n = mod n k A.== 0-             caseFactor k = (divides k, k)-             len = Sliced.length arr-             factor =-                flip (A.caseof len) 2 $-                   caseFactor 3 :-                   caseFactor 4 :-                   caseFactor 5 :-                   []+         let len = Sliced.length arr+             factor = foldr (\k -> A.ifThenElse (mod len k A.== 0) k) 2 [3,4,5]          in  (twist factor arr, Sliced.consExp factor factors))    .    A.lift . flip (,) (A.fill (A.index1 0) 0)@@ -239,7 +232,7 @@    let d3 = ceilingLogBase 3 n        d5 = ceilingLogBase 5 n    in  A.the $ argminimum $-       A.generate (A.lift $ Z:.d5:.d3) $+       A.generate (A.lift $ Z:.(d5+1):.(d3+1)) $        Exp.modify (expr:.expr:.expr) $        \(_z:.e5:.e3) ->           let p53 = 5 ** A.fromIntegral e5 * 3 ** A.fromIntegral e3
src/Data/Array/Accelerate/Fourier/Private.hs view
@@ -10,12 +10,13 @@  import qualified Data.Array.Accelerate.Utility.Sliced as Sliced import qualified Data.Array.Accelerate.Utility.Sliced1 as Sliced1+import qualified Data.Array.Accelerate.Utility.Lift.Exp as AExp  import qualified Data.Array.Accelerate.LinearAlgebra as LinAlg import Data.Array.Accelerate.LinearAlgebra (zipExtrudedVectorWith, )  import qualified Data.Array.Accelerate.Utility.Lift.Exp as Exp-import Data.Array.Accelerate.Utility.Lift.Exp (expr)+import Data.Array.Accelerate.Utility.Lift.Exp (expr, accessElement)  import qualified Data.Array.Accelerate as A import Data.Array.Accelerate@@ -23,7 +24,9 @@            Z(Z), (:.)((:.)), Slice, Shape, (!), (?), ) import Data.Complex (Complex((:+)), ) +import Data.NonEmpty ((!:)) + type Transform sh a = Acc (Array sh a) -> Acc (Array sh a)  data SubTransform a =@@ -109,11 +112,8 @@       (Exp.indexCons (A.shape x) (A.constant (3::Int)))       (Exp.modify (expr :. expr) $        \(ix :. k)  ->-          let (x0,x1,x2) = A.unlift $ x ! ix-          in  flip (A.caseof k) x0 $-                 ((A.==1), x1) :-                 ((A.==2), x2) :-                 [])+         let (x0,x1,x2) = AExp.unliftTriple $ x ! ix+         in accessElement (x0 !: x1 : x2 : []) k)  transform3 ::    (Shape sh, Slice sh, a ~ Complex b, A.RealFloat b) =>@@ -138,12 +138,8 @@       (Exp.indexCons (A.shape x) (A.constant (4::Int)))       (Exp.modify (expr :. expr) $        \(ix :. k)  ->-          let (x0,x1,x2,x3) = A.unlift $ x ! ix-          in  flip (A.caseof k) x0 $-                 ((A.==1), x1) :-                 ((A.==2), x2) :-                 ((A.==3), x3) :-                 [])+         let (x0,x1,x2,x3) = AExp.unliftQuadruple $ x ! ix+         in accessElement (x0 !: x1 : x2 : x3 : []) k)  transform4 ::    (Shape sh, Slice sh, a ~ Complex b, A.RealFloat b) =>@@ -171,13 +167,8 @@       (Exp.indexCons (A.shape x) (A.constant (5::Int)))       (Exp.modify (expr :. expr) $        \(ix :. k)  ->-          let (x0,x1,x2,x3,x4) = A.unlift $ x ! ix-          in  flip (A.caseof k) x0 $-                 ((A.==1), x1) :-                 ((A.==2), x2) :-                 ((A.==3), x3) :-                 ((A.==4), x4) :-                 [])+         let (x0,x1,x2,x3,x4) = AExp.unliftQuintuple $ x ! ix+         in accessElement (x0 !: x1 : x2 : x3 : x4 : []) k)   {-
src/Data/Array/Accelerate/Fourier/Sign.hs view
@@ -2,50 +2,40 @@ {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE ConstraintKinds #-}-{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE ViewPatterns #-} module Data.Array.Accelerate.Fourier.Sign where  import Data.Array.Accelerate.Data.Complex (Complex((:+)), )  import qualified Data.Array.Accelerate as A-import Data.Array.Accelerate (Lift(lift), Unlift(unlift), Plain, )-import Data.Array.Accelerate.Product-         (IsProduct(ProdRepr, fromProd, toProd, prod),-          ProdR(ProdRsnoc, ProdRunit),-          TupleIdx(ZeroTupIdx), )-import Data.Array.Accelerate.Array.Sugar-         (Tuple(NilTup, SnocTup),-          EltRepr, Elt(eltType, toElt, fromElt), )-import Data.Array.Accelerate.Smart (Exp(Exp), PreExp(Tuple, Prj), )+import Data.Array.Accelerate (Lift(lift), Unlift(unlift), Plain, Exp)+import Data.Array.Accelerate.Sugar.Elt (Elt)  import Data.Typeable (Typeable, )  import qualified Test.QuickCheck as QC  +-- cf. colour-accelerate-0.4.0.0 newtype Sign a = Sign {getSign :: a}-   deriving (Eq, Show, Typeable)--type instance EltRepr (Sign a) = EltRepr a+   deriving (Eq, Show, Typeable, A.Generic) -instance Elt a => Elt (Sign a) where-   eltType = eltType . getSign-   toElt   = Sign . toElt-   fromElt = fromElt . getSign+{-# COMPLETE Sign_ #-}+pattern Sign_ :: Elt a => Exp a -> Exp (Sign a)+pattern Sign_ x = A.Pattern x -instance (cst a) => IsProduct cst (Sign a) where-   type ProdRepr (Sign a) = ((), a)-   fromProd _ (Sign a) = ((), a)-   toProd _ ((), a) = Sign a-   prod _ (Sign _) = ProdRsnoc ProdRunit+instance Elt a => Elt (Sign a)  instance (Lift Exp a, Elt (Plain a)) => Lift Exp (Sign a) where    type Plain (Sign a) = Sign (Plain a)-   lift (Sign a) = Exp $ Tuple (NilTup `SnocTup` lift a)+   lift (Sign a) = Sign_ (lift a)  instance Elt a => Unlift Exp (Sign (Exp a)) where-   unlift e = Sign $ Exp $ ZeroTupIdx `Prj` e+   unlift (Sign_ a) = Sign a   forward, inverse :: Num a => Sign a
src/Data/Array/Accelerate/Permutation.hs view
@@ -69,7 +69,7 @@ inverse perm =    A.permute (+)       (A.fill (A.shape perm) 0)-      (A.index1 . (perm!))+      (A.Just_ . A.index1 . (perm!))       (A.generate (A.shape perm) A.unindex1)  reverse :: T -> T