log-domain 0.9.1 → 0.9.2
raw patch · 3 files changed
+25/−6 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Numeric.Log: class Floating a => Precise a where log1pexp a = log1p (exp a) log1mexp a = log1p (negate (exp (negate a)))
+ Numeric.Log: class Floating a => Precise a where log1pexp a = log1p (exp a) log1mexp a = log1p (negate (exp a))
Files
- CHANGELOG.markdown +4/−0
- log-domain.cabal +1/−1
- src/Numeric/Log.hs +20/−5
CHANGELOG.markdown view
@@ -1,3 +1,7 @@+0.9.2+-----+* Fixed subtraction better.+ 0.9.1 ----- * Fixed subtraction.
log-domain.cabal view
@@ -1,6 +1,6 @@ name: log-domain category: Numeric-version: 0.9.1+version: 0.9.2 license: BSD3 cabal-version: >= 1.8 license-file: LICENSE
src/Numeric/Log.hs view
@@ -188,6 +188,21 @@ negInf = -(1/0) {-# INLINE negInf #-} +-- | Handle subtraction.+--+-- >>> 3 - 1 :: Log Double+-- 2.0000000000000004+--+-- >>> 1 - 3 :: Log Double+-- NaN+-- +-- >>> 3 - 2 :: Log Float+-- 1.0+--+-- >>> 1 - 3 :: Log Float+-- NaN+--+ instance (Precise a, RealFloat a) => Num (Log a) where Exp a * Exp b | isInfinite a && isInfinite b && a == -b = Exp negInf@@ -399,7 +414,7 @@ log1pexp a = log1p (exp a) log1mexp :: a -> a- log1mexp a = log1p (negate (exp (negate a)))+ log1mexp a = log1p (negate (exp a)) instance Precise Double where log1p = c_log1p@@ -407,8 +422,8 @@ expm1 = c_expm1 {-# INLINE expm1 #-} log1mexp a- | a <= log 2 = log (negate (expm1 (negate a)))- | otherwise = log1p (negate (exp (negate a)))+ | a <= log 2 = log (negate (expm1 a))+ | otherwise = log1p (negate (exp a)) {-# INLINE log1mexp #-} log1pexp a | a <= 18 = log1p (exp a)@@ -422,8 +437,8 @@ {-# INLINE log1p #-} expm1 = c_expm1f {-# INLINE expm1 #-}- log1mexp a | a <= log 2 = log (negate (expm1 (negate a)))- | otherwise = log1p (negate (exp (negate a)))+ log1mexp a | a <= log 2 = log (negate (expm1 a))+ | otherwise = log1p (negate (exp a)) {-# INLINE log1mexp #-} log1pexp a | a <= 18 = log1p (exp a)