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 +4/−0
- LICENSE +1/−1
- accelerate-kullback-liebler.cabal +6/−5
- common/Data/Array/Accelerate/Test.hs +4/−11
- src/Data/Array/Accelerate/KullbackLiebler.hs +9/−1
- test/Spec.cpphs +2/−2
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