packages feed

approximate 0.2.2.1 → 0.2.2.2

raw patch · 5 files changed

+26/−4 lines, 5 filesdep +HerbiePlugindep ~vectorPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: HerbiePlugin

Dependency ranges changed: vector

API changes (from Hackage documentation)

- Data.Approximate.Mass: instance Applicative Mass
- Data.Approximate.Mass: instance Apply Mass
- Data.Approximate.Mass: instance Binary a => Binary (Mass a)
- Data.Approximate.Mass: instance Bind Mass
- Data.Approximate.Mass: instance Comonad Mass
- Data.Approximate.Mass: instance ComonadApply Mass
- Data.Approximate.Mass: instance Constructor C1_0Mass
- Data.Approximate.Mass: instance Copointed Mass
- Data.Approximate.Mass: instance Data a => Data (Mass a)
- Data.Approximate.Mass: instance Datatype D1Mass
- Data.Approximate.Mass: instance Eq a => Eq (Mass a)
- Data.Approximate.Mass: instance Extend Mass
- Data.Approximate.Mass: instance Foldable Mass
- Data.Approximate.Mass: instance Functor Mass
- Data.Approximate.Mass: instance Generic (Mass a)
- Data.Approximate.Mass: instance Hashable a => Hashable (Mass a)
- Data.Approximate.Mass: instance Hashable1 Mass
- Data.Approximate.Mass: instance Monad Mass
- Data.Approximate.Mass: instance Monoid a => Monoid (Mass a)
- Data.Approximate.Mass: instance NFData a => NFData (Mass a)
- Data.Approximate.Mass: instance Ord a => Ord (Mass a)
- Data.Approximate.Mass: instance Pointed Mass
- Data.Approximate.Mass: instance Read a => Read (Mass a)
- Data.Approximate.Mass: instance Semigroup a => Semigroup (Mass a)
- Data.Approximate.Mass: instance Serial a => Serial (Mass a)
- Data.Approximate.Mass: instance Serial1 Mass
- Data.Approximate.Mass: instance Serialize a => SafeCopy (Mass a)
- Data.Approximate.Mass: instance Serialize a => Serialize (Mass a)
- Data.Approximate.Mass: instance Show a => Show (Mass a)
- Data.Approximate.Mass: instance Traversable Mass
- Data.Approximate.Mass: instance Typeable Mass
- Data.Approximate.Mass: instance Unbox a => MVector MVector (Mass a)
- Data.Approximate.Mass: instance Unbox a => Vector Vector (Mass a)
- Data.Approximate.Numerics: instance Fast Double
- Data.Approximate.Numerics: instance Fast Float
- Data.Approximate.Type: instance (Ord a, Num a) => Num (Approximate a)
- Data.Approximate.Type: instance Applicative Approximate
- Data.Approximate.Type: instance Apply Approximate
- Data.Approximate.Type: instance Binary a => Binary (Approximate a)
- Data.Approximate.Type: instance Constructor C1_0Approximate
- Data.Approximate.Type: instance Copointed Approximate
- Data.Approximate.Type: instance Data a => Data (Approximate a)
- Data.Approximate.Type: instance Datatype D1Approximate
- Data.Approximate.Type: instance Eq a => Eq (Approximate a)
- Data.Approximate.Type: instance Foldable Approximate
- Data.Approximate.Type: instance Functor Approximate
- Data.Approximate.Type: instance Generic (Approximate a)
- Data.Approximate.Type: instance HasApproximate (Approximate a0) a0
- Data.Approximate.Type: instance Hashable a => Hashable (Approximate a)
- Data.Approximate.Type: instance Hashable1 Approximate
- Data.Approximate.Type: instance NFData a => NFData (Approximate a)
- Data.Approximate.Type: instance Pointed Approximate
- Data.Approximate.Type: instance Read a => Read (Approximate a)
- Data.Approximate.Type: instance Selector S1_0_0Approximate
- Data.Approximate.Type: instance Selector S1_0_1Approximate
- Data.Approximate.Type: instance Selector S1_0_2Approximate
- Data.Approximate.Type: instance Selector S1_0_3Approximate
- Data.Approximate.Type: instance Serial a => Serial (Approximate a)
- Data.Approximate.Type: instance Serial1 Approximate
- Data.Approximate.Type: instance Serialize a => SafeCopy (Approximate a)
- Data.Approximate.Type: instance Serialize a => Serialize (Approximate a)
- Data.Approximate.Type: instance Show a => Show (Approximate a)
- Data.Approximate.Type: instance Traversable Approximate
- Data.Approximate.Type: instance Typeable Approximate
- Data.Approximate.Type: instance Unbox a => MVector MVector (Approximate a)
- Data.Approximate.Type: instance Unbox a => Unbox (Approximate a)
- Data.Approximate.Type: instance Unbox a => Vector Vector (Approximate a)
+ Data.Approximate.Mass: instance Control.Comonad.Comonad Data.Approximate.Mass.Mass
+ Data.Approximate.Mass: instance Control.Comonad.ComonadApply Data.Approximate.Mass.Mass
+ Data.Approximate.Mass: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Data.Approximate.Mass.Mass a)
+ Data.Approximate.Mass: instance Data.Binary.Class.Binary a => Data.Binary.Class.Binary (Data.Approximate.Mass.Mass a)
+ Data.Approximate.Mass: instance Data.Bytes.Serial.Serial a => Data.Bytes.Serial.Serial (Data.Approximate.Mass.Mass a)
+ Data.Approximate.Mass: instance Data.Bytes.Serial.Serial1 Data.Approximate.Mass.Mass
+ Data.Approximate.Mass: instance Data.Copointed.Copointed Data.Approximate.Mass.Mass
+ Data.Approximate.Mass: instance Data.Data.Data a => Data.Data.Data (Data.Approximate.Mass.Mass a)
+ Data.Approximate.Mass: instance Data.Foldable.Foldable Data.Approximate.Mass.Mass
+ Data.Approximate.Mass: instance Data.Functor.Bind.Class.Apply Data.Approximate.Mass.Mass
+ Data.Approximate.Mass: instance Data.Functor.Bind.Class.Bind Data.Approximate.Mass.Mass
+ Data.Approximate.Mass: instance Data.Functor.Extend.Extend Data.Approximate.Mass.Mass
+ Data.Approximate.Mass: instance Data.Hashable.Class.Hashable a => Data.Hashable.Class.Hashable (Data.Approximate.Mass.Mass a)
+ Data.Approximate.Mass: instance Data.Hashable.Extras.Hashable1 Data.Approximate.Mass.Mass
+ Data.Approximate.Mass: instance Data.Pointed.Pointed Data.Approximate.Mass.Mass
+ Data.Approximate.Mass: instance Data.Semigroup.Semigroup a => Data.Semigroup.Semigroup (Data.Approximate.Mass.Mass a)
+ Data.Approximate.Mass: instance Data.Serialize.Serialize a => Data.SafeCopy.SafeCopy.SafeCopy (Data.Approximate.Mass.Mass a)
+ Data.Approximate.Mass: instance Data.Serialize.Serialize a => Data.Serialize.Serialize (Data.Approximate.Mass.Mass a)
+ Data.Approximate.Mass: instance Data.Traversable.Traversable Data.Approximate.Mass.Mass
+ Data.Approximate.Mass: instance Data.Vector.Unboxed.Base.Unbox a => Data.Vector.Generic.Base.Vector Data.Vector.Unboxed.Base.Vector (Data.Approximate.Mass.Mass a)
+ Data.Approximate.Mass: instance Data.Vector.Unboxed.Base.Unbox a => Data.Vector.Generic.Mutable.Base.MVector Data.Vector.Unboxed.Base.MVector (Data.Approximate.Mass.Mass a)
+ Data.Approximate.Mass: instance GHC.Base.Applicative Data.Approximate.Mass.Mass
+ Data.Approximate.Mass: instance GHC.Base.Functor Data.Approximate.Mass.Mass
+ Data.Approximate.Mass: instance GHC.Base.Monad Data.Approximate.Mass.Mass
+ Data.Approximate.Mass: instance GHC.Base.Monoid a => GHC.Base.Monoid (Data.Approximate.Mass.Mass a)
+ Data.Approximate.Mass: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Approximate.Mass.Mass a)
+ Data.Approximate.Mass: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Approximate.Mass.Mass a)
+ Data.Approximate.Mass: instance GHC.Generics.Constructor Data.Approximate.Mass.C1_0Mass
+ Data.Approximate.Mass: instance GHC.Generics.Datatype Data.Approximate.Mass.D1Mass
+ Data.Approximate.Mass: instance GHC.Generics.Generic (Data.Approximate.Mass.Mass a)
+ Data.Approximate.Mass: instance GHC.Read.Read a => GHC.Read.Read (Data.Approximate.Mass.Mass a)
+ Data.Approximate.Mass: instance GHC.Show.Show a => GHC.Show.Show (Data.Approximate.Mass.Mass a)
+ Data.Approximate.Numerics: instance Data.Approximate.Numerics.Fast GHC.Types.Double
+ Data.Approximate.Numerics: instance Data.Approximate.Numerics.Fast GHC.Types.Float
+ Data.Approximate.Type: instance (GHC.Classes.Ord a, GHC.Num.Num a) => GHC.Num.Num (Data.Approximate.Type.Approximate a)
+ Data.Approximate.Type: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Data.Approximate.Type.Approximate a)
+ Data.Approximate.Type: instance Data.Approximate.Type.HasApproximate (Data.Approximate.Type.Approximate a0) a0
+ Data.Approximate.Type: instance Data.Binary.Class.Binary a => Data.Binary.Class.Binary (Data.Approximate.Type.Approximate a)
+ Data.Approximate.Type: instance Data.Bytes.Serial.Serial a => Data.Bytes.Serial.Serial (Data.Approximate.Type.Approximate a)
+ Data.Approximate.Type: instance Data.Bytes.Serial.Serial1 Data.Approximate.Type.Approximate
+ Data.Approximate.Type: instance Data.Copointed.Copointed Data.Approximate.Type.Approximate
+ Data.Approximate.Type: instance Data.Data.Data a => Data.Data.Data (Data.Approximate.Type.Approximate a)
+ Data.Approximate.Type: instance Data.Foldable.Foldable Data.Approximate.Type.Approximate
+ Data.Approximate.Type: instance Data.Functor.Bind.Class.Apply Data.Approximate.Type.Approximate
+ Data.Approximate.Type: instance Data.Hashable.Class.Hashable a => Data.Hashable.Class.Hashable (Data.Approximate.Type.Approximate a)
+ Data.Approximate.Type: instance Data.Hashable.Extras.Hashable1 Data.Approximate.Type.Approximate
+ Data.Approximate.Type: instance Data.Pointed.Pointed Data.Approximate.Type.Approximate
+ Data.Approximate.Type: instance Data.Serialize.Serialize a => Data.SafeCopy.SafeCopy.SafeCopy (Data.Approximate.Type.Approximate a)
+ Data.Approximate.Type: instance Data.Serialize.Serialize a => Data.Serialize.Serialize (Data.Approximate.Type.Approximate a)
+ Data.Approximate.Type: instance Data.Traversable.Traversable Data.Approximate.Type.Approximate
+ Data.Approximate.Type: instance Data.Vector.Unboxed.Base.Unbox a => Data.Vector.Generic.Base.Vector Data.Vector.Unboxed.Base.Vector (Data.Approximate.Type.Approximate a)
+ Data.Approximate.Type: instance Data.Vector.Unboxed.Base.Unbox a => Data.Vector.Generic.Mutable.Base.MVector Data.Vector.Unboxed.Base.MVector (Data.Approximate.Type.Approximate a)
+ Data.Approximate.Type: instance Data.Vector.Unboxed.Base.Unbox a => Data.Vector.Unboxed.Base.Unbox (Data.Approximate.Type.Approximate a)
+ Data.Approximate.Type: instance GHC.Base.Applicative Data.Approximate.Type.Approximate
+ Data.Approximate.Type: instance GHC.Base.Functor Data.Approximate.Type.Approximate
+ Data.Approximate.Type: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Approximate.Type.Approximate a)
+ Data.Approximate.Type: instance GHC.Generics.Constructor Data.Approximate.Type.C1_0Approximate
+ Data.Approximate.Type: instance GHC.Generics.Datatype Data.Approximate.Type.D1Approximate
+ Data.Approximate.Type: instance GHC.Generics.Generic (Data.Approximate.Type.Approximate a)
+ Data.Approximate.Type: instance GHC.Generics.Selector Data.Approximate.Type.S1_0_0Approximate
+ Data.Approximate.Type: instance GHC.Generics.Selector Data.Approximate.Type.S1_0_1Approximate
+ Data.Approximate.Type: instance GHC.Generics.Selector Data.Approximate.Type.S1_0_2Approximate
+ Data.Approximate.Type: instance GHC.Generics.Selector Data.Approximate.Type.S1_0_3Approximate
+ Data.Approximate.Type: instance GHC.Read.Read a => GHC.Read.Read (Data.Approximate.Type.Approximate a)
+ Data.Approximate.Type: instance GHC.Show.Show a => GHC.Show.Show (Data.Approximate.Type.Approximate a)
- Data.Approximate.Type: Approximate :: {-# UNPACK #-} !(Log Double) -> a -> a -> a -> Approximate a
+ Data.Approximate.Type: Approximate :: {-# UNPACK #-} !(Log Double) -> a -> Approximate a
- Data.Approximate.Type: approximate :: HasApproximate c_aiOH a_acyA => Lens' c_aiOH (Approximate a_acyA)
+ Data.Approximate.Type: approximate :: HasApproximate c_aiYl a_afOF => Lens' c_aiYl (Approximate a_afOF)
- Data.Approximate.Type: class HasApproximate c_aiOH a_acyA | c_aiOH -> a_acyA where confidence = (.) approximate confidence estimate = (.) approximate estimate hi = (.) approximate hi lo = (.) approximate lo
+ Data.Approximate.Type: class HasApproximate c_aiYl a_afOF | c_aiYl -> a_afOF where confidence = (.) approximate confidence estimate = (.) approximate estimate hi = (.) approximate hi lo = (.) approximate lo
- Data.Approximate.Type: confidence :: HasApproximate c_aiOH a_acyA => Lens' c_aiOH (Log Double)
+ Data.Approximate.Type: confidence :: HasApproximate c_aiYl a_afOF => Lens' c_aiYl (Log Double)
- Data.Approximate.Type: estimate :: HasApproximate c_aiOH a_acyA => Lens' c_aiOH a_acyA
+ Data.Approximate.Type: estimate :: HasApproximate c_aiYl a_afOF => Lens' c_aiYl a_afOF
- Data.Approximate.Type: hi :: HasApproximate c_aiOH a_acyA => Lens' c_aiOH a_acyA
+ Data.Approximate.Type: hi :: HasApproximate c_aiYl a_afOF => Lens' c_aiYl a_afOF
- Data.Approximate.Type: lo :: HasApproximate c_aiOH a_acyA => Lens' c_aiOH a_acyA
+ Data.Approximate.Type: lo :: HasApproximate c_aiYl a_afOF => Lens' c_aiYl a_afOF

Files

README.markdown view
@@ -1,7 +1,7 @@ approximate =========== -[![Build Status](https://secure.travis-ci.org/ekmett/approximate.png?branch=master)](http://travis-ci.org/ekmett/approximate)+[![Hackage](https://img.shields.io/hackage/v/approximate.svg)](https://hackage.haskell.org/package/approximate) [![Build Status](https://secure.travis-ci.org/ekmett/approximate.png?branch=master)](http://travis-ci.org/ekmett/approximate)  This package provides approximate numbers and discrete values with lower bounds on their probability of correctness. 
approximate.cabal view
@@ -1,6 +1,6 @@ name:          approximate category:      Numeric-version:       0.2.2.1+version:       0.2.2.2 license:       BSD3 cabal-version: >= 1.8 license-file:  LICENSE@@ -40,6 +40,10 @@   default: False   manual: True +flag herbie+  default: False+  manual: True+ library   build-depends:     base                      >= 4.3      && < 5,@@ -57,7 +61,12 @@     semigroupoids             >= 3.0.2    && < 6,     semigroups                >= 0.8.4    && < 1,     safecopy                  >= 0.8.1    && < 0.9,-    vector                    >= 0.9      && < 0.11+    vector                    >= 0.9      && < 0.12++  if flag(herbie)+    build-depends: HerbiePlugin >= 0.1 && < 0.2+    cpp-options: -DHERBIE+    ghc-options: -fplugin=Herbie    exposed-modules:     Data.Approximate
src/Data/Approximate/Mass.hs view
@@ -123,6 +123,10 @@   {-# INLINE basicUnsafeMove #-}   basicUnsafeGrow (MV_Mass v) n = MV_Mass `liftM` M.basicUnsafeGrow v n   {-# INLINE basicUnsafeGrow #-}+#if MIN_VERSION_vector(0,11,0)+  basicInitialize (MV_Mass v) = M.basicInitialize v+  {-# INLINE basicInitialize #-}+#endif  instance Unbox a => G.Vector U.Vector (Mass a) where   basicUnsafeFreeze (MV_Mass v) = V_Mass `liftM` G.basicUnsafeFreeze v
src/Data/Approximate/Numerics.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE ForeignFunctionInterface #-} -------------------------------------------------------------------- -- |@@ -62,7 +63,11 @@ -- -- 'flog' had better outperform it! It is provided merely for comparison. blog :: Floating a => a -> a-blog x = 6 * (x - 1) / (x + 1 + 4 * sqrt x);+blog x = 6 * (x - 1) / (x + 1 + 4 * sqrt x)+      -- 6 / (x + 1 + 4 * sqrt x) / (x-1) -- herbie's suggested replacement.+#ifdef HERBIE+{-# ANN blog "NoHerbie" #-}+#endif  foreign import ccall unsafe pow_fast_lb       :: Double -> Double -> Double foreign import ccall unsafe pow_fast_ub       :: Double -> Double -> Double
src/Data/Approximate/Type.hs view
@@ -110,6 +110,10 @@   {-# INLINE basicUnsafeMove #-}   basicUnsafeGrow (MV_Approximate v) n = MV_Approximate `liftM` M.basicUnsafeGrow v n   {-# INLINE basicUnsafeGrow #-}+#if MIN_VERSION_vector(0,11,0)+  basicInitialize (MV_Approximate v) = M.basicInitialize v+  {-# INLINE basicInitialize #-}+#endif  instance Unbox a => G.Vector U.Vector (Approximate a) where   basicUnsafeFreeze (MV_Approximate v) = V_Approximate `liftM` G.basicUnsafeFreeze v