packages feed

AERN-Real-Double-2011.1: src/Numeric/AERN/RealArithmetic/Basis/Double/MixedFieldOps.hs

{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeSynonymInstances #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-|
    Module      :  Numeric.AERN.RealArithmetic.Basis.Double.MixedFieldOps
    Description :  rounded basic arithmetic operations mixing Double and another type
    Copyright   :  (c) Michal Konecny
    License     :  BSD3

    Maintainer  :  mikkonecny@gmail.com
    Stability   :  experimental
    Portability :  portable
    
    Rounded basic arithmetical operations mixing Double and another type.
    
    This module is hidden and reexported via its parent Double. 
-}

module Numeric.AERN.RealArithmetic.Basis.Double.MixedFieldOps where

import Numeric.AERN.RealArithmetic.Basis.Double.Conversion
import Numeric.AERN.RealArithmetic.Basis.Double.NumericOrder
import Numeric.AERN.RealArithmetic.Basis.Double.FieldOps

import Numeric.AERN.RealArithmetic.NumericOrderRounding

instance RoundedMixedAddEffort Double Int
    where
    type MixedAddEffortIndicator Double Int =
        MixedAddEffortIndicatorByConversion Double Int 
    mixedAddDefaultEffort = mixedAddDefaultEffortByConversion 
instance RoundedMixedAdd Double Int
    where
    mixedAddUpEff = mixedAddUpEffByConversion
    mixedAddDnEff = mixedAddDnEffByConversion

instance RoundedMixedMultiplyEffort Double Int
    where
    type MixedMultEffortIndicator Double Int =
        MixedMultEffortIndicatorByConversion Double Int 
    mixedMultDefaultEffort = mixedMultDefaultEffortByConversion 
instance RoundedMixedMultiply Double Int
    where
    mixedMultUpEff = mixedMultUpEffByConversion
    mixedMultDnEff = mixedMultDnEffByConversion

instance RoundedMixedDivideEffort Double Int
    where
    type MixedDivEffortIndicator Double Int =
        MixedDivEffortIndicatorByConversion Double Int 
    mixedDivDefaultEffort = mixedDivDefaultEffortByConversion 
instance RoundedMixedDivide Double Int
    where
    mixedDivUpEff = mixedDivUpEffByConversion
    mixedDivDnEff = mixedDivDnEffByConversion

instance RoundedMixedRingEffort Double Int
    where
    type MixedRingOpsEffortIndicator Double Int = ()
    mixedRingOpsDefaultEffort _ _ = ()
    mxringEffortAdd _ _ _ = ((),())
    mxringEffortMult _ _ _ = ((),(),())

instance RoundedMixedRing Double Int

instance RoundedMixedFieldEffort Double Int
    where
    type MixedFieldOpsEffortIndicator Double Int = ()
    mixedFieldOpsDefaultEffort _ _ = ()
    mxfldEffortAdd _ _ _ = ((),())
    mxfldEffortMult _ _ _ = ((),(),())
    mxfldEffortDiv _ _ _ = ((),(),((),()))

instance RoundedMixedField Double Int



instance RoundedMixedAddEffort Double Integer
    where
    type MixedAddEffortIndicator Double Integer =
        MixedAddEffortIndicatorByConversion Double Integer 
    mixedAddDefaultEffort = mixedAddDefaultEffortByConversion 
instance RoundedMixedAdd Double Integer
    where
    mixedAddUpEff = mixedAddUpEffByConversion
    mixedAddDnEff = mixedAddDnEffByConversion

instance RoundedMixedMultiplyEffort Double Integer
    where
    type MixedMultEffortIndicator Double Integer =
        MixedMultEffortIndicatorByConversion Double Integer 
    mixedMultDefaultEffort = mixedMultDefaultEffortByConversion 
instance RoundedMixedMultiply Double Integer
    where
    mixedMultUpEff = mixedMultUpEffByConversion
    mixedMultDnEff = mixedMultDnEffByConversion

instance RoundedMixedDivideEffort Double Integer
    where
    type MixedDivEffortIndicator Double Integer =
        MixedDivEffortIndicatorByConversion Double Integer 
    mixedDivDefaultEffort = mixedDivDefaultEffortByConversion 
instance RoundedMixedDivide Double Integer
    where
    mixedDivUpEff = mixedDivUpEffByConversion
    mixedDivDnEff = mixedDivDnEffByConversion

instance RoundedMixedRingEffort Double Integer
    where
    type MixedRingOpsEffortIndicator Double Integer = ()
    mixedRingOpsDefaultEffort _ _ = ()
    mxringEffortAdd _ _ _ = ((),())
    mxringEffortMult _ _ _ = ((),(),())

instance RoundedMixedRing Double Integer

instance RoundedMixedFieldEffort Double Integer
    where
    type MixedFieldOpsEffortIndicator Double Integer = ()
    mixedFieldOpsDefaultEffort _ _ = ()
    mxfldEffortAdd _ _ _ = ((),())
    mxfldEffortMult _ _ _ = ((),(),())
    mxfldEffortDiv _ _ _ = ((),(),((),()))

instance RoundedMixedField Double Integer



instance RoundedMixedAddEffort Double Rational
    where
    type MixedAddEffortIndicator Double Rational =
        MixedAddEffortIndicatorByConversion Double Rational 
    mixedAddDefaultEffort = mixedAddDefaultEffortByConversion 
instance RoundedMixedAdd Double Rational
    where
    mixedAddUpEff = mixedAddUpEffByConversion
    mixedAddDnEff = mixedAddDnEffByConversion

instance RoundedMixedMultiplyEffort Double Rational
    where
    type MixedMultEffortIndicator Double Rational =
        MixedMultEffortIndicatorByConversion Double Rational 
    mixedMultDefaultEffort = mixedMultDefaultEffortByConversion 
instance RoundedMixedMultiply Double Rational
    where
    mixedMultUpEff = mixedMultUpEffByConversion
    mixedMultDnEff = mixedMultDnEffByConversion

instance RoundedMixedDivideEffort Double Rational
    where
    type MixedDivEffortIndicator Double Rational =
        MixedDivEffortIndicatorByConversion Double Rational 
    mixedDivDefaultEffort = mixedDivDefaultEffortByConversion 
instance RoundedMixedDivide Double Rational
    where
    mixedDivUpEff = mixedDivUpEffByConversion
    mixedDivDnEff = mixedDivDnEffByConversion

instance RoundedMixedRingEffort Double Rational
    where
    type MixedRingOpsEffortIndicator Double Rational = ()
    mixedRingOpsDefaultEffort _ _ = ()
    mxringEffortAdd _ _ _ = ((),())
    mxringEffortMult _ _ _ = ((),(),())

instance RoundedMixedRing Double Rational

instance RoundedMixedFieldEffort Double Rational
    where
    type MixedFieldOpsEffortIndicator Double Rational = ()
    mixedFieldOpsDefaultEffort _ _ = ()
    mxfldEffortAdd _ _ _ = ((),())
    mxfldEffortMult _ _ _ = ((),(),())
    mxfldEffortDiv _ _ _ = ((),(),((),()))

instance RoundedMixedField Double Rational



instance RoundedMixedAddEffort Double Double
    where
    type MixedAddEffortIndicator Double Double = () 
    mixedAddDefaultEffort _ _ = () 
instance RoundedMixedAdd Double Double
    where
    mixedAddUpEff _ a b = addUpEff () a b 
    mixedAddDnEff _ a b = addDnEff () a b

instance RoundedMixedMultiplyEffort Double Double
    where
    type MixedMultEffortIndicator Double Double = () 
    mixedMultDefaultEffort _ _ = () 
instance RoundedMixedMultiply Double Double
    where
    mixedMultUpEff _ a b = multUpEff () a b 
    mixedMultDnEff _ a b = multDnEff () a b

instance RoundedMixedDivideEffort Double Double
    where
    type MixedDivEffortIndicator Double Double = () 
    mixedDivDefaultEffort _ _ = () 
instance RoundedMixedDivide Double Double
    where
    mixedDivUpEff _ a b = divUpEff () a b 
    mixedDivDnEff _ a b = divDnEff () a b

instance RoundedMixedRingEffort Double Double
    where
    type MixedRingOpsEffortIndicator Double Double = ()
    mixedRingOpsDefaultEffort _ _ = ()
    mxringEffortAdd _ _ _ = ()
    mxringEffortMult _ _ _ = ()

instance RoundedMixedRing Double Double

instance RoundedMixedFieldEffort Double Double
    where
    type MixedFieldOpsEffortIndicator Double Double = ()
    mixedFieldOpsDefaultEffort _ _ = ()
    mxfldEffortAdd _ _ _ = ()
    mxfldEffortMult _ _ _ = ()
    mxfldEffortDiv _ _ _ = ()

instance RoundedMixedField Double Double