brush-strokes-0.1.0.0: src/lib/Math/Epsilon.hs
{-# LANGUAGE ScopedTypeVariables #-}
module Math.Epsilon
( epsilon, nearZero )
where
--------------------------------------------------------------------------------
{-# SPECIALISE INLINE epsilon @Float #-}
{-# SPECIALISE INLINE epsilon @Double #-}
epsilon :: forall r. RealFloat r => r
epsilon = encodeFloat 1 ( 1 - floatDigits ( 0 :: r ) )
nearZero :: RealFloat r => r -> Bool
nearZero x = abs x < epsilon