]> gitweb.michael.orlitzky.com - numerical-analysis.git/blobdiff - src/BigFloat.hs
Fix a bug in the relative error.
[numerical-analysis.git] / src / BigFloat.hs
index e23ebe6833bd674be0d5ea1f65dbfe540ec72baf..cc228bead187898a255eae3d3200a4edad546d10 100644 (file)
@@ -1,7 +1,8 @@
 {-# LANGUAGE RebindableSyntax #-}
 
 module BigFloat
 {-# LANGUAGE RebindableSyntax #-}
 
 module BigFloat
-  (module Data.Number.BigFloat)
+  (module Data.Number.BigFloat,
+   R)
 where
 
 import Data.Number.BigFloat
 where
 
 import Data.Number.BigFloat
@@ -10,6 +11,8 @@ import NumericPrelude hiding (abs)
 import qualified Algebra.Absolute as Absolute
 import qualified Algebra.Additive as Additive
 import qualified Algebra.Field as Field
 import qualified Algebra.Absolute as Absolute
 import qualified Algebra.Additive as Additive
 import qualified Algebra.Field as Field
+import qualified Algebra.RealField as RealField
+import qualified Algebra.RealRing as RealRing
 import qualified Algebra.Ring as Ring
 import qualified Algebra.ToRational as ToRational
 import qualified Algebra.ZeroTestable as ZeroTestable
 import qualified Algebra.Ring as Ring
 import qualified Algebra.ToRational as ToRational
 import qualified Algebra.ZeroTestable as ZeroTestable
@@ -19,7 +22,7 @@ type R = BigFloat Prec50
 
 instance Epsilon e => Additive.C (BigFloat e) where
   (+) = (P.+)
 
 instance Epsilon e => Additive.C (BigFloat e) where
   (+) = (P.+)
-  zero = (P.fromInteger 0)
+  zero = 0
   negate = (P.negate)
 
 instance Epsilon e => Ring.C (BigFloat e) where
   negate = (P.negate)
 
 instance Epsilon e => Ring.C (BigFloat e) where
@@ -38,3 +41,8 @@ instance Epsilon e => ZeroTestable.C (BigFloat e) where
 
 instance Epsilon e => ToRational.C (BigFloat e) where
   toRational = fromRational . P.toRational
 
 instance Epsilon e => ToRational.C (BigFloat e) where
   toRational = fromRational . P.toRational
+
+instance Epsilon e => RealRing.C (BigFloat e) where
+  floor = fromInteger . P.floor
+
+instance Epsilon e => RealField.C (BigFloat e)