{-# LANGUAGE RebindableSyntax #-} module BigFloat (module Data.Number.BigFloat, R) 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.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 Prelude as P type R = BigFloat Prec50 instance Epsilon e => Additive.C (BigFloat e) where (+) = (P.+) zero = 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 instance Epsilon e => RealRing.C (BigFloat e) where floor = fromInteger . P.floor instance Epsilon e => RealField.C (BigFloat e)