packages feed

AERN-Real-2011.1: src/Numeric/AERN/RealArithmetic/RefinementOrderRounding/InPlace/OpsDefaultEffort.hs

{-|
    Module      :  Numeric.AERN.RealArithmetic.RefinementOrderRounding.InPlace.OpsDefaultEffort
    Description :  convenience in-place operators and functions with default effort  
    Copyright   :  (c) Michal Konecny, Jan Duracz
    License     :  BSD3

    Maintainer  :  mikkonecny@gmail.com
    Stability   :  experimental
    Portability :  portable
    
    Convenience in-place operators and functions with default effort.
-}

module Numeric.AERN.RealArithmetic.RefinementOrderRounding.InPlace.OpsDefaultEffort where

import Numeric.AERN.Basics.Mutable
import Numeric.AERN.RealArithmetic.RefinementOrderRounding

infixl 6 <+>=, >+<=, <->=, >-<=
infixl 7 <*>=, >*<=
infixl 8 <^>=, >^<=
infixl 7 </>=, >/<=

infixl 6 <+>|=, >+<|=
infixl 7 <*>|=, >*<|=
infixl 7 </>|=, >/<|=

-- | Inward rounded in-place addition
addInInPlace :: (RoundedAddInPlace t) => OpMutable2 t s
addInInPlace = mutable2EffToMutable2 addInInPlaceEff addDefaultEffort

-- | Inward rounded addition assignment
(>+<=) :: (RoundedAddInPlace t) => OpMutable1 t s
(>+<=) = mutable2ToMutable1 addInInPlace

-- | Outward rounded in-place addition
addOutInPlace :: (RoundedAddInPlace t) => OpMutable2 t s
addOutInPlace = mutable2EffToMutable2 addOutInPlaceEff addDefaultEffort 

-- | Outward rounded addition assignment
(<+>=) :: (RoundedAddInPlace t) => OpMutable1 t s
(<+>=) = mutable2ToMutable1 addOutInPlace

-- | Inward rounded in-place subtraction
subtrInInPlace :: (RoundedSubtrInPlace t) => OpMutable2 t s
subtrInInPlace = mutable2EffToMutable2 subtrInInPlaceEff addDefaultEffort

-- | Inward rounded subtraction assignment
(>-<=) :: (RoundedSubtrInPlace t) => OpMutable1 t s
(>-<=) = mutable2ToMutable1 subtrInInPlace

-- | Outward rounded in-place subtraction
subtrOutInPlace :: (RoundedSubtrInPlace t) => OpMutable2 t s
subtrOutInPlace = mutable2EffToMutable2 subtrOutInPlaceEff addDefaultEffort

-- | Outward rounded subtraction assignment
(<->=) :: (RoundedSubtrInPlace t) => OpMutable1 t s
(<->=) = mutable2ToMutable1 subtrOutInPlace

-- | Inward rounded in-place absolute value
absInInPlace :: (RoundedAbsInPlace t) => OpMutable1 t s
absInInPlace = mutable1EffToMutable1 absInInPlaceEff absDefaultEffort 

-- | Outward rounded in-place absolute value
absOutInPlace :: (RoundedAbsInPlace t) => OpMutable1 t s
absOutInPlace = mutable1EffToMutable1 absOutInPlaceEff absDefaultEffort 

-- | Inward rounded in-place multiplication
multInInPlace :: (RoundedMultiplyInPlace t) => OpMutable2 t s
multInInPlace = mutable2EffToMutable2 multInInPlaceEff multDefaultEffort

-- | Inward rounded multiplication assignment
(>*<=) :: (RoundedMultiplyInPlace t) => OpMutable1 t s
(>*<=) = mutable2ToMutable1 multInInPlace

-- | Outward rounded in-place multiplication
multOutInPlace :: (RoundedMultiplyInPlace t) => OpMutable2 t s
multOutInPlace = mutable2EffToMutable2 multOutInPlaceEff multDefaultEffort

-- | Outward rounded multiplication assignment
(<*>=) :: (RoundedMultiplyInPlace t) => OpMutable1 t s
(<*>=) = mutable2ToMutable1 multOutInPlace

-- | Inward rounded in-place power
powerToNonnegIntInInPlace :: (RoundedPowerToNonnegIntInPlace t) => 
    OpMutableNonmut t Int s
powerToNonnegIntInInPlace = 
    mutableNonmutEffToMutableNonmut powerToNonnegIntInInPlaceEff powerToNonnegIntDefaultEffort

-- | Inward rounded in-place power assignment
(>^<=) :: (RoundedPowerToNonnegIntInPlace t) => OpNonmut t Int s
(>^<=) = mutableNonmutToNonmut powerToNonnegIntInInPlace

-- | Outward rounded in-place power
powerToNonnegIntOutInPlace :: (RoundedPowerToNonnegIntInPlace t) => 
    OpMutableNonmut t Int s
powerToNonnegIntOutInPlace = 
    mutableNonmutEffToMutableNonmut powerToNonnegIntOutInPlaceEff powerToNonnegIntDefaultEffort

-- | Inward rounded in-place power assignment
(<^>=) :: (RoundedPowerToNonnegIntInPlace t) => OpNonmut t Int s
(<^>=) = mutableNonmutToNonmut powerToNonnegIntOutInPlace

-- | Inward rounded in-place division
divInInPlace :: (RoundedDivideInPlace t) => OpMutable2 t s
divInInPlace = mutable2EffToMutable2 divInInPlaceEff divDefaultEffort

-- | Inward rounded division assignment
(>/<=) :: (RoundedDivideInPlace t) => OpMutable1 t s
(>/<=) = mutable2ToMutable1 divInInPlace

-- | Outward rounded in-place division
divOutInPlace :: (RoundedDivideInPlace t) => OpMutable2 t s
divOutInPlace = mutable2EffToMutable2 divOutInPlaceEff divDefaultEffort

-- | Outward rounded division assignment
(</>=) :: (RoundedDivideInPlace t) => OpMutable1 t s
(</>=) = mutable2ToMutable1 divOutInPlace

-- | Inward rounded in-place mixed addition
mixedAddInInPlace :: (RoundedMixedAddInPlace t tn) => 
    OpMutableNonmut t tn s
mixedAddInInPlace =
    mixedEffToMutableNonmut mixedAddInInPlaceEff mixedAddDefaultEffort

-- | Inward rounded additive scalar action assignment
(>+<|=) :: (RoundedMixedAddInPlace t tn) => OpNonmut t tn s
(>+<|=) = mutableNonmutToNonmut mixedAddInInPlace

-- | Outward rounded in-place mixed addition
mixedAddOutInPlace :: (RoundedMixedAddInPlace t tn) =>
    OpMutableNonmut t tn s
mixedAddOutInPlace =
    mixedEffToMutableNonmut mixedAddOutInPlaceEff mixedAddDefaultEffort

-- | Outward rounded additive scalar action assignment
(<+>|=) :: (RoundedMixedAddInPlace t tn) => OpNonmut t tn s
(<+>|=) = mutableNonmutToNonmut mixedAddOutInPlace

-- | Inward rounded in-place mixed multiplication
mixedMultInInPlace :: (RoundedMixedMultiplyInPlace t tn) => 
    OpMutableNonmut t tn s
mixedMultInInPlace =
    mixedEffToMutableNonmut mixedMultInInPlaceEff mixedMultDefaultEffort

-- | Inward rounded multiplicative scalar action assignment
(>*<|=) :: (RoundedMixedMultiplyInPlace t tn) => OpNonmut t tn s
(>*<|=) = mutableNonmutToNonmut mixedMultInInPlace

-- | Outward rounded in-place mixed multiplication
mixedMultOutInPlace :: (RoundedMixedMultiplyInPlace t tn) => 
    OpMutableNonmut t tn s
mixedMultOutInPlace =
    mixedEffToMutableNonmut mixedMultOutInPlaceEff mixedMultDefaultEffort

-- | Outward rounded multiplicative scalar action assignment
(<*>|=) :: (RoundedMixedMultiplyInPlace t tn) => OpNonmut t tn s
(<*>|=) = mutableNonmutToNonmut mixedMultOutInPlace

-- | Inward rounded in-place mixed reciprocal action
mixedDivInInPlace :: (RoundedMixedDivideInPlace t tn) => 
    OpMutableNonmut t tn s
mixedDivInInPlace =
    mixedEffToMutableNonmut mixedDivInInPlaceEff mixedDivDefaultEffort

-- | Inward rounded multiplicative scalar reciprocal action assignment
(>/<|=) :: (RoundedMixedDivideInPlace t tn) => OpNonmut t tn s
(>/<|=) = mutableNonmutToNonmut mixedDivOutInPlace

-- | Outward rounded in-place mixed reciprocal action
mixedDivOutInPlace :: (RoundedMixedDivideInPlace t tn) => 
    OpMutableNonmut t tn s
mixedDivOutInPlace =
    mixedEffToMutableNonmut mixedDivOutInPlaceEff mixedDivDefaultEffort

-- | Outward rounded multiplicative scalar reciprocal action assignment
(</>|=) :: (RoundedMixedDivideInPlace t tn) => OpNonmut t tn s
(</>|=) = mutableNonmutToNonmut mixedDivOutInPlace

-- | Inward rounded in-place exponential
expInInPlace :: (RoundedExponentiationInPlace t) => OpMutable1 t s
expInInPlace = mutable1EffToMutable1 expInInPlaceEff expDefaultEffort 

-- | Outward rounded in-place exponential
expOutInPlace :: (RoundedExponentiationInPlace t) => OpMutable1 t s
expOutInPlace = mutable1EffToMutable1 expOutInPlaceEff expDefaultEffort 

-- | Inward rounded in-place square root
sqrtInInPlace :: (RoundedSquareRootInPlace t) => OpMutable1 t s
sqrtInInPlace = mutable1EffToMutable1 sqrtInInPlaceEff sqrtDefaultEffort 

-- | Outward rounded in-place square root
sqrtOutInPlace :: (RoundedSquareRootInPlace t) => OpMutable1 t s
sqrtOutInPlace = mutable1EffToMutable1 sqrtOutInPlaceEff sqrtDefaultEffort