]> gitweb.michael.orlitzky.com - numerical-analysis.git/blobdiff - src/BigFloat.hs
Rename Aliases.hs to BigFloat.hs, now containing numeric-prelude instances for BigFloats.
[numerical-analysis.git] / src / BigFloat.hs
diff --git a/src/BigFloat.hs b/src/BigFloat.hs
new file mode 100644 (file)
index 0000000..e23ebe6
--- /dev/null
@@ -0,0 +1,40 @@
+{-# LANGUAGE RebindableSyntax #-}
+
+module BigFloat
+  (module Data.Number.BigFloat)
+where
+
+import Data.Number.BigFloat
+
+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.Ring as Ring
+import qualified Algebra.ToRational as ToRational
+import qualified Algebra.ZeroTestable as ZeroTestable
+import qualified Prelude as P
+
+type R = BigFloat Prec50
+
+instance Epsilon e => Additive.C (BigFloat e) where
+  (+) = (P.+)
+  zero = (P.fromInteger 0)
+  negate = (P.negate)
+
+instance Epsilon e => Ring.C (BigFloat e) where
+  (*) = (P.*)
+  fromInteger = P.fromInteger
+
+instance Epsilon e => Absolute.C (BigFloat e) where
+  abs = P.abs
+  signum = P.signum
+
+instance Epsilon e => Field.C (BigFloat e) where
+  recip = P.recip
+
+instance Epsilon e => ZeroTestable.C (BigFloat e) where
+  isZero = ZeroTestable.defltIsZero
+
+instance Epsilon e => ToRational.C (BigFloat e) where
+  toRational = fromRational . P.toRational