AERN-Real-Interval-2011.1: src/Numeric/AERN/RealArithmetic/Interval/ElementaryFromBasis.hs
{-# LANGUAGE TypeFamilies #-}
--{-# LANGUAGE FlexibleContexts #-}
{-|
Module : Numeric.AERN.RealArithmetic.Interval.ElementaryFromBasis
Description : elementary operations using basis-level operations
Copyright : (c) Michal Konecny
License : BSD3
Maintainer : mikkonecny@gmail.com
Stability : experimental
Portability : portable
Elementary operations using basis-level operations.
-}
module Numeric.AERN.RealArithmetic.Interval.ElementaryFromBasis where
import qualified Numeric.AERN.RealArithmetic.RefinementOrderRounding as ArithInOut
import qualified Numeric.AERN.RealArithmetic.NumericOrderRounding as ArithUpDn
import Numeric.AERN.Basics.Interval
instance (ArithUpDn.RoundedExponentiationEffort e) =>
(ArithInOut.RoundedExponentiationEffort (Interval e))
where
type ArithInOut.ExpEffortIndicator (Interval e) = ArithUpDn.ExpEffortIndicator e
expDefaultEffort (Interval l r) = ArithUpDn.expDefaultEffort l
instance (ArithUpDn.RoundedExponentiation e) =>
(ArithInOut.RoundedExponentiation (Interval e))
where
expInEff effort (Interval l r) =
Interval (ArithUpDn.expUpEff effort l) (ArithUpDn.expDnEff effort r)
expOutEff effort (Interval l r) =
Interval (ArithUpDn.expDnEff effort l) (ArithUpDn.expUpEff effort r)
instance (ArithUpDn.RoundedSquareRootEffort e) =>
(ArithInOut.RoundedSquareRootEffort (Interval e))
where
type ArithInOut.SqrtEffortIndicator (Interval e) = ArithUpDn.SqrtEffortIndicator e
sqrtDefaultEffort (Interval l r) = ArithUpDn.sqrtDefaultEffort l
instance (ArithUpDn.RoundedSquareRoot e) =>
(ArithInOut.RoundedSquareRoot (Interval e))
where
sqrtInEff effort (Interval l r) =
Interval (ArithUpDn.sqrtUpEff effort l) (ArithUpDn.sqrtDnEff effort r)
sqrtOutEff effort (Interval l r) =
Interval (ArithUpDn.sqrtDnEff effort l) (ArithUpDn.sqrtUpEff effort r)