packages feed

AERN-Real-2011.1: src/Numeric/AERN/RealArithmetic/NumericOrderRounding/OpsImplicitEffort.hs

{-# LANGUAGE ImplicitParams #-}
{-|
    Module      :  Numeric.AERN.RealArithmetic.NumericOrderRounding.OpsImplicitEffort
    Description :  convenience binary infix operators with implicit effort parameters  
    Copyright   :  (c) Michal Konecny
    License     :  BSD3

    Maintainer  :  mikkonecny@gmail.com
    Stability   :  experimental
    Portability :  portable
    
    Convenience binary infix operators with implicit effort parameters.
-}

module Numeric.AERN.RealArithmetic.NumericOrderRounding.OpsImplicitEffort where

import Numeric.AERN.RealArithmetic.NumericOrderRounding

infixl 6 +., +^, -., -^
infixl 7 *., *^
infixl 8 ^., ^^
infixl 7 /., /^

infixr 6 |+., |+^
infixl 6 +.|, +^|
infixr 7 |*., |*^
infixl 7 *.|, *^|
infixl 7 /.|, /^|

(+^), (+.) :: 
    (RoundedAdd t, ?addUpDnEffort :: AddEffortIndicator t) => 
    t -> t -> t
(+^) = addUpEff ?addUpDnEffort
(+.) = addDnEff ?addUpDnEffort

(-^), (-.) :: 
    (RoundedSubtr t, ?addUpDnEffort :: AddEffortIndicator t) => 
    t -> t -> t
(-^) = subtrUpEff ?addUpDnEffort
(-.) = subtrDnEff ?addUpDnEffort

absUp, absDn ::
    (RoundedAbs t, ?absUpDnEffort :: AbsEffortIndicator t) => 
    t -> t
absUp = absUpEff ?absUpDnEffort
absDn = absDnEff ?absUpDnEffort

(*^), (*.) :: 
    (RoundedMultiply t, ?multUpDnEffort :: MultEffortIndicator t) => 
    t -> t -> t
(*^) = multUpEff ?multUpDnEffort
(*.) = multDnEff ?multUpDnEffort

(^^), (^.) :: 
    (RoundedPowerToNonnegInt t, ?intPowerUpDnEffort :: PowerToNonnegIntEffortIndicator t) => 
    t -> Int -> t
(^^) = powerToNonnegIntUpEff ?intPowerUpDnEffort
(^.) = powerToNonnegIntDnEff ?intPowerUpDnEffort

(/^), (/.) :: 
    (RoundedDivide t, ?divUpDnEffort :: DivEffortIndicator t) => 
    t -> t -> t
(/^) = divUpEff ?divUpDnEffort
(/.) = divDnEff ?divUpDnEffort

(+^|), (+.|) ::
    (RoundedMixedAdd t tn, 
     ?mixedAddUpDnEffort :: MixedAddEffortIndicator t tn) => 
    t -> tn -> t
(+^|) = mixedAddUpEff ?mixedAddUpDnEffort
(+.|) = mixedAddDnEff ?mixedAddUpDnEffort

(|+^), (|+.) ::
    (RoundedMixedAdd t tn, 
     ?mixedAddUpDnEffort :: MixedAddEffortIndicator t tn) => 
    tn -> t -> t
(|+^) n d = mixedAddUpEff ?mixedAddUpDnEffort d n
(|+.) n d = mixedAddDnEff ?mixedAddUpDnEffort d n

(*^|), (*.|) ::
    (RoundedMixedMultiply t tn, 
     ?mixedMultUpDnEffort :: MixedMultEffortIndicator t tn) => 
    t -> tn -> t
(*^|) = mixedMultUpEff ?mixedMultUpDnEffort
(*.|) = mixedMultDnEff ?mixedMultUpDnEffort

(|*^), (|*.) ::
    (RoundedMixedMultiply t tn, 
     ?mixedMultUpDnEffort :: MixedMultEffortIndicator t tn) => 
    tn -> t -> t
(|*^) n d = mixedMultUpEff ?mixedMultUpDnEffort d n
(|*.) n d = mixedMultDnEff ?mixedMultUpDnEffort d n

(/^|), (/.|) ::
    (RoundedMixedDivide t tn, 
     ?mixedDivUpDnEffort :: MixedDivEffortIndicator t tn) => 
    t -> tn -> t
(/^|) = mixedDivUpEff ?mixedDivUpDnEffort
(/.|) = mixedDivDnEff ?mixedDivUpDnEffort

piUp, piDn ::
    (RoundedSpecialConst t, ?specialConstUpDnEffort :: SpecialConstEffortIndicator t) => 
    t
piUp = piUpEff ?specialConstUpDnEffort
piDn = piDnEff ?specialConstUpDnEffort

eUp, eDn ::
    (RoundedSpecialConst t, ?specialConstUpDnEffort :: SpecialConstEffortIndicator t) => 
    t
eUp = eUpEff ?specialConstUpDnEffort
eDn = eDnEff ?specialConstUpDnEffort

expUp, expDn ::
    (RoundedExponentiation t, ?expUpDnEffort :: ExpEffortIndicator t) => 
    t -> t
expUp = expUpEff ?expUpDnEffort
expDn = expDnEff ?expUpDnEffort

sqrtUp, sqrtDn ::
    (RoundedSquareRoot t, ?sqrtUpDnEffort :: SqrtEffortIndicator t) => 
    t -> t
sqrtUp = sqrtUpEff ?sqrtUpDnEffort
sqrtDn = sqrtDnEff ?sqrtUpDnEffort