packages feed

accelerate-kullback-liebler 0.1.0.0 → 0.1.1.0

raw patch · 6 files changed

+26/−20 lines, 6 filesdep ~accelerate-kullback-lieblerPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: accelerate-kullback-liebler

API changes (from Hackage documentation)

+ Data.Array.Accelerate.KullbackLiebler: scale :: Floating e => Acc (Vector e) -> Acc (Vector e)

Files

CHANGELOG.md view
@@ -1,5 +1,9 @@ # accelerate-kullback-liebler +## 0.1.1.0++  * Add `scale` function+ ## 0.1.0.0  Initial release
LICENSE view
@@ -1,4 +1,4 @@-Copyright Vanessa McHale (c) 2019+Copyright Vanessa McHale (c) 2019-2020  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 
accelerate-kullback-liebler.cabal view
@@ -1,9 +1,9 @@ cabal-version:   2.0 name:            accelerate-kullback-liebler-version:         0.1.0.0+version:         0.1.1.0 license:         BSD3 license-file:    LICENSE-copyright:       Copyright: (c) 2019 Vanessa McHale+copyright:       Copyright: (c) 2019-2020 Vanessa McHale maintainer:      vamchale@gmail.com author:          Vanessa McHale synopsis:        Kullback-Liebler divergence@@ -15,8 +15,8 @@     CHANGELOG.md  source-repository head-    type:     git-    location: https://github.com/vmchale/accelerate-kullback-liebler+    type:     darcs+    location: https://hub.darcs.net/vmchale/accelerate-kullback-liebler  flag development     description: Enable `-Werror`@@ -55,7 +55,8 @@     build-depends:         base >=4.3 && <5,         mwc-random-accelerate -any,-        accelerate >=1.1.0.0+        accelerate >=1.1.0.0,+        accelerate-kullback-liebler >=0.1.1.0      if flag(development)         ghc-options: -Werror
common/Data/Array/Accelerate/Test.hs view
@@ -2,25 +2,18 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE TypeFamilies     #-} -module Data.Array.Accelerate.Test ( normalize-                                  , randDist+module Data.Array.Accelerate.Test ( randDist                                   , the                                   ) where  import qualified Data.Array.Accelerate                   as A-import           Data.Array.Accelerate.System.Random.MWC (Variate, randomArray,-                                                          uniformR)+import qualified Data.Array.Accelerate.KullbackLiebler   as KL+import           Data.Array.Accelerate.System.Random.MWC (Variate, randomArray, uniformR)  -- | Doesn't actually check the list has one element the :: A.Scalar e -> e the = head . A.toList --- | Doesn't check for negative values-normalize :: A.Floating e => A.Acc (A.Vector e) -> A.Acc (A.Vector e)-normalize xs =-    let tot = A.the $ A.sum xs-    in A.map (/tot) xs- -- | Make a distribution of a given size randDist :: (A.Shape sh, Fractional e, Variate e, A.Floating e, sh ~ A.DIM1) => sh -> IO (A.Acc (A.Vector e))-randDist = fmap (normalize . A.use) . randomArray (uniformR (0.0, 1.0))+randDist = fmap (KL.scale . A.use) . randomArray (uniformR (0.0, 1.0))
src/Data/Array/Accelerate/KullbackLiebler.hs view
@@ -4,6 +4,7 @@ module Data.Array.Accelerate.KullbackLiebler ( kullbackLiebler                                              , entropy                                              , dropZeroes+                                             , scale                                              ) where  import qualified Data.Array.Accelerate as A@@ -16,6 +17,13 @@ entropy :: (A.Floating e) => A.Acc (A.Vector e) -> A.Acc (A.Scalar e) entropy = A.sum . A.map (\p -> p * log p) --- | Drops zero values (for parity with scipy @entropy@ function) dropZeroes :: (A.Eq e, Num (A.Exp e)) => A.Acc (A.Vector e) -> A.Acc (A.Vector e) dropZeroes = A.afst . A.filter (A./= 0)++-- | Doesn't check for negative values+--+-- @since 0.1.1.0+scale :: A.Floating e => A.Acc (A.Vector e) -> A.Acc (A.Vector e)+scale xs =+    let tot = A.the $ A.sum xs+    in A.map (/tot) xs
test/Spec.cpphs view
@@ -5,7 +5,7 @@  import           Control.Composition                   ((.$)) import qualified Data.Array.Accelerate                 as A-import           Data.Array.Accelerate.KullbackLiebler (kullbackLiebler)+import           Data.Array.Accelerate.KullbackLiebler (kullbackLiebler, scale) import qualified Data.Array.Accelerate.LLVM.Native     as CPU #ifdef ACCELERATE_GPU import qualified Data.Array.Accelerate.LLVM.PTX        as GPU@@ -34,7 +34,7 @@ commonData :: IO (A.Acc (A.Scalar Double)) commonData = do     datums <- randDist (A.Z A.:. 1000000)-    pure $ kullbackLiebler .$ datums+    pure $ kullbackLiebler .$ (scale datums)  #ifdef ACCELERATE_GPU selfGPU :: IO Bool