]> gitweb.michael.orlitzky.com - numerical-analysis.git/blob - src/BigFloat.hs
Use RealField/RealRing where possible instead of their constituents.
[numerical-analysis.git] / src / BigFloat.hs
1 {-# LANGUAGE RebindableSyntax #-}
2
3 module BigFloat
4 (module Data.Number.BigFloat)
5 where
6
7 import Data.Number.BigFloat
8
9 import NumericPrelude hiding (abs)
10 import qualified Algebra.Absolute as Absolute
11 import qualified Algebra.Additive as Additive
12 import qualified Algebra.Field as Field
13 import qualified Algebra.RealField as RealField
14 import qualified Algebra.RealRing as RealRing
15 import qualified Algebra.Ring as Ring
16 import qualified Algebra.ToRational as ToRational
17 import qualified Algebra.ZeroTestable as ZeroTestable
18 import qualified Prelude as P
19
20 type R = BigFloat Prec50
21
22 instance Epsilon e => Additive.C (BigFloat e) where
23 (+) = (P.+)
24 zero = (P.fromInteger 0)
25 negate = (P.negate)
26
27 instance Epsilon e => Ring.C (BigFloat e) where
28 (*) = (P.*)
29 fromInteger = P.fromInteger
30
31 instance Epsilon e => Absolute.C (BigFloat e) where
32 abs = P.abs
33 signum = P.signum
34
35 instance Epsilon e => Field.C (BigFloat e) where
36 recip = P.recip
37
38 instance Epsilon e => ZeroTestable.C (BigFloat e) where
39 isZero = ZeroTestable.defltIsZero
40
41 instance Epsilon e => ToRational.C (BigFloat e) where
42 toRational = fromRational . P.toRational
43
44 instance Epsilon e => RealRing.C (BigFloat e) where
45 floor = fromInteger . P.floor
46
47 instance Epsilon e => RealField.C (BigFloat e)