hbayes-0.3: Bayes/Tools.hs
{- | Miscellaneous tools
-}
module Bayes.Tools (
nearlyEqual
) where
-- | Floating point number comparisons which should take into account
-- all the subtleties of that kind of comparison
nearlyEqual :: Double -> Double -> Bool
nearlyEqual a b =
let absA = abs a
absB = abs b
diff = abs (a-b)
epsilon = 2e-5
in
case (a,b) of
(x,y) | x == y -> True -- handle infinities
| x*y == 0 -> diff < (epsilon * epsilon)
| otherwise -> diff / (absA + absB) < epsilon