floating: Add epsilon to the RealFloat class.
authorNick Bowler <nbowler@draconx.ca>
Sun, 21 Feb 2010 04:42:02 +0000 (20 23:42 -0500)
committerNick Bowler <nbowler@draconx.ca>
Mon, 22 Feb 2010 15:02:26 +0000 (22 10:02 -0500)
Data/Floating/Classes.hs

index b72a795..fc1561b 100644 (file)
@@ -67,7 +67,8 @@ class Fractional a => Floating a where
 
 -- | Class for real-valued floating point types.
 --
--- Minimal complete definition: all except 'pi', 'infinity' and 'nan'.
+-- Minimal complete definition: all except 'pi', 'infinity', 'epsilon' and
+-- 'nan'.
 class Floating a => RealFloat a where
     -- | Fused multiply-add.
     fma       :: a -> a -> a -> a
@@ -118,10 +119,12 @@ class Floating a => RealFloat a where
     nearbyint :: a -> a
     infinity  :: a
     nan       :: a
+    epsilon   :: a
     pi        :: a
 
     infinity = 1/0
     nan      = 0/0
+    epsilon  = nextafter 1 infinity - 1
     pi       = 4 * atan 1
 
 -- | Class for the basic floating point types.