AERN-Real-2011.1: src/Numeric/AERN/RealArithmetic/RefinementOrderRounding/OpsDefaultEffort.hs
{-|
Module : Numeric.AERN.RealArithmetic.RefinementOrderRounding.OpsDefaultEffort
Description : convenience operators and functions with default effort
Copyright : (c) Michal Konecny, Jan Duracz
License : BSD3
Maintainer : mikkonecny@gmail.com
Stability : experimental
Portability : portable
Convenience operators and functions with default effort.
-}
module Numeric.AERN.RealArithmetic.RefinementOrderRounding.OpsDefaultEffort where
import Numeric.AERN.RealArithmetic.RefinementOrderRounding
infixl 6 <+>, >+<, <->, >-<
infixl 7 <*>, >*<
infixl 8 <^>, >^<
infixl 7 </>, >/<
infixr 6 |<+>, |>+<
infixl 6 <+>|, >+<|
infixr 7 |<*>, |>*<
infixl 7 <*>|, >*<|
infixl 7 </>|, >/<|
-- | Inward rounded addition
(>+<) :: (RoundedAdd t) => t -> t -> t
(>+<) d = addInEff (addDefaultEffort d) d
-- | Outward rounded addition
(<+>) :: (RoundedAdd t) => t -> t -> t
(<+>) d = addOutEff (addDefaultEffort d) d
-- | Inward rounded subtraction
(>-<) :: (RoundedSubtr t) => t -> t -> t
(>-<) d = subtrInEff (addDefaultEffort d) d
-- | Outward rounded subtraction
(<->) :: (RoundedSubtr t) => t -> t -> t
(<->) d = subtrOutEff (addDefaultEffort d) d
-- | Inward rounded absolute value
absIn :: (RoundedAbs t) => t -> t
absIn d = absInEff (absDefaultEffort d) d
-- | Outward rounded absolute value
absOut :: (RoundedAbs t) => t -> t
absOut d = absOutEff (absDefaultEffort d) d
-- | Inward rounded multiplication
(>*<) :: (RoundedMultiply t) => t -> t -> t
(>*<) d = multInEff (multDefaultEffort d) d
-- | Outward rounded multiplication
(<*>) :: (RoundedMultiply t) => t -> t -> t
(<*>) d = multOutEff (multDefaultEffort d) d
-- | Inward rounded power
(>^<) :: (RoundedPowerToNonnegInt t) => t -> Int -> t
(>^<) d = powerToNonnegIntInEff (powerToNonnegIntDefaultEffort d) d
-- | Outward rounded power
(<^>) :: (RoundedPowerToNonnegInt t) => t -> Int -> t
(<^>) d = powerToNonnegIntOutEff (powerToNonnegIntDefaultEffort d) d
-- | Inward rounded division
(>/<) :: (RoundedDivide t) => t -> t -> t
(>/<) d = divInEff (divDefaultEffort d) d
-- | Outward rounded division
(</>) :: (RoundedDivide t) => t -> t -> t
(</>) d = divOutEff (divDefaultEffort d) d
-- | Inward rounded additive scalar left action
(|>+<) :: (RoundedMixedAdd t tn) => tn -> t -> t
(|>+<) n d = mixedAddInEff (mixedAddDefaultEffort d n) d n
-- | Outward rounded additive scalar left action
(|<+>) :: (RoundedMixedAdd t tn) => tn -> t -> t
(|<+>) n d = mixedAddOutEff (mixedAddDefaultEffort d n) d n
-- | Inward rounded additive scalar right action
(>+<|) :: (RoundedMixedAdd t tn) => t -> tn -> t
(>+<|) d n = mixedAddInEff (mixedAddDefaultEffort d n) d n
-- | Outward rounded additive scalar right action
(<+>|) :: (RoundedMixedAdd t tn) => t -> tn -> t
(<+>|) d n = mixedAddOutEff (mixedAddDefaultEffort d n) d n
-- | Inward rounded multiplicative scalar left action
(|>*<) :: (RoundedMixedMultiply t tn) => tn -> t -> t
(|>*<) n d = mixedMultInEff (mixedMultDefaultEffort d n) d n
-- | Outward rounded multiplicative scalar left action
(|<*>) :: (RoundedMixedMultiply t tn) => tn -> t -> t
(|<*>) n d = mixedMultOutEff (mixedMultDefaultEffort d n) d n
-- | Inward rounded multiplicative scalar right action
(>*<|) :: (RoundedMixedMultiply t tn) => t -> tn -> t
(>*<|) d n = mixedMultInEff (mixedMultDefaultEffort d n) d n
-- | Outward rounded multiplicative scalar right action
(<*>|) :: (RoundedMixedMultiply t tn) => t -> tn -> t
(<*>|) d n = mixedMultOutEff (mixedMultDefaultEffort d n) d n
-- | Inward rounded multiplicative scalar reciprocal right action
(>/<|) :: (RoundedMixedDivide t tn) => t -> tn -> t
(>/<|) d n = mixedDivInEff (mixedDivDefaultEffort d n) d n
-- | Outward rounded multiplicative scalar reciprocal right action
(</>|) :: (RoundedMixedDivide t tn) => t -> tn -> t
(</>|) d n = mixedDivOutEff (mixedDivDefaultEffort d n) d n
-- | Inward rounded pi
piIn :: (RoundedSpecialConst t) => t
piIn = result
where
result =
piInEff (specialConstDefaultEffort result)
-- | Outward rounded pi
piOut :: (RoundedSpecialConst t) => t
piOut = result
where
result =
piOutEff (specialConstDefaultEffort result)
-- | Inward rounded e
eIn :: (RoundedSpecialConst t) => t
eIn = result
where
result =
eInEff (specialConstDefaultEffort result)
-- | Outward rounded e
eOut :: (RoundedSpecialConst t) => t
eOut = result
where
result =
eOutEff (specialConstDefaultEffort result)
-- | Inward rounded exponential
expIn :: (RoundedExponentiation t) => t -> t
expIn d = expInEff (expDefaultEffort d) d
-- | Outward rounded exponential
expOut :: (RoundedExponentiation t) => t -> t
expOut d = expOutEff (expDefaultEffort d) d
-- | Inward rounded square root
sqrtIn :: (RoundedSquareRoot t) => t -> t
sqrtIn d = sqrtInEff (sqrtDefaultEffort d) d
-- | Outward rounded square root
sqrtOut :: (RoundedSquareRoot t) => t -> t
sqrtOut d = sqrtOutEff (sqrtDefaultEffort d) d