packages feed

srtree 1.0.0.0 → 1.0.0.1

raw patch · 3 files changed

+32/−14 lines, 3 filesdep ~addep ~criteriondep ~vectorPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: ad, criterion, vector

API changes (from Hackage documentation)

Files

ChangeLog.md view
@@ -1,5 +1,10 @@ # Changelog for srtree +## 1.0.0.1++- Fix `vector` version bounds+- Included benchmarking of `ad` package+ ## 1.0.0.0  - Complete refactoring of source
app/Main.hs view
@@ -4,18 +4,25 @@ import Data.SRTree.Print import Data.SRTree.Random import Data.SRTree.Recursion hiding (fromList)-import Data.Vector (fromList)+import Data.Vector (fromList, toList) import System.Random import Control.Monad.Reader import Control.Monad.State import Criterion.Main+import Numeric.AD.Double ( grad ) -t = 1 + var 0 * (3.1 + param 0 * var 1 + var 0 * param 1) - var 0+autograd t = grad (cata alg t)+  where+      alg (Var ix) = const 0+      alg (Param ix) = \xs -> xs !! ix+      alg (Const v) = const 1.0+      alg (Bin op l r) = \xs -> evalOp op (l xs) (r xs)+      alg (Uni f t) = \xs -> evalFun f (t xs)  xs = fromList [1.0, 2.0]-ps = fromList [0.5, 0.3]+ps = fromList [0.1, 0.2 .. 30.0] -params = P [0,1] (-1.0, 1.0) (-2, 2) [Id ..]  +params = P [0,1] (-1.0, 1.0) (-2, 2) [Id ..]  runRnd g ns p = flip evalStateT g $ traverse (\n -> runReaderT (randomTree n) p) ns runRndBalance g ns p = flip evalStateT g $ traverse (\n -> runReaderT (randomTreeBalanced n) p) ns@@ -26,16 +33,21 @@ g = mkStdGen 42  benchTree f h = do ts <- f g lens params-                   pure $ map (h xs ps id) ts+                   pure $ map (h xs ps id . relabelParams . fst . constsToParam) ts +benchAutodiff f = do ts <- f g lens params+                     let ps' = Data.Vector.toList ps+                     pure $ map ((`autograd` ps') . relabelParams . fst . constsToParam) ts main :: IO () main = defaultMain [-       bgroup "unbalanced" +       bgroup "unbalanced"          [ bench "forwardMode" $ nfIO (benchTree runRnd forwardMode)          , bench "grad" $ nfIO (benchTree runRnd gradParams)+         , bench "autodiff" $ nfIO (benchAutodiff runRnd)          ] ,-       bgroup "balanced" +       bgroup "balanced"          [ bench "forwardMode" $ nfIO (benchTree runRndBalance forwardMode)          , bench "grad" $ nfIO (benchTree runRndBalance gradParams)-         ] +         , bench "autodiff" $ nfIO (benchAutodiff runRndBalance)+         ]                    ]
srtree.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           srtree-version:        1.0.0.0+version:        1.0.0.1 synopsis:       A general framework to work with Symbolic Regression expression trees. description:    A Symbolic Regression Tree data structure to work with mathematical expressions with support to first order derivative and simplification; category:       Math, Data, Data Structures@@ -41,7 +41,7 @@     , containers ==0.6.*     , mtl ==2.2.*     , random ==1.2.*-    , vector >=0.12 && <=0.13+    , vector >=0.12 && <0.14   default-language: Haskell2010  executable bench-srtree@@ -52,13 +52,14 @@       app   ghc-options: -threaded -rtsopts -with-rtsopts=-N -O2 -optc-O3   build-depends:-      base >=4.16 && <4.18+      ad >=4.5.0 && <4.6+    , base >=4.16 && <4.18     , containers ==0.6.*-    , criterion >=1.6.0 && <1.7+    , criterion >=1.5.0 && <1.7     , mtl ==2.2.*     , random ==1.2.*     , srtree-    , vector >=0.12 && <=0.13+    , vector >=0.12 && <0.14   default-language: Haskell2010  test-suite srtree-test@@ -77,5 +78,5 @@     , mtl ==2.2.*     , random ==1.2.*     , srtree-    , vector >=0.12 && <=0.13+    , vector >=0.12 && <0.14   default-language: Haskell2010