AERN-RnToRm-0.4.9: src/Data/Number/ER/RnToRm/TestingDefs.hs
{-|
Module : Data.Number.ER.Real.TestingDefs
Description : definitions useful for testing in ghci
Copyright : (c) 2007-2008 Michal Konecny
License : BSD3
Maintainer : mik@konecny.aow.cz
Stability : experimental
Portability : non-portable (requires fenv.h)
A few definitions useful for testing the enclosures code, eg in ghci.
-}
module Data.Number.ER.RnToRm.TestingDefs where
import Data.Number.ER.RnToRm.DefaultRepr
import Data.Number.ER.Real.DefaultRepr
import qualified Data.Number.ER.RnToRm.Approx as FA
import qualified Data.Number.ER.RnToRm.UnitDom.Approx as UFA
import qualified Data.Number.ER.Real.Approx as RA
import qualified Data.Number.ER.Real.Approx.Elementary as RAEL
import qualified Data.Number.ER.Real.DomainBox as DBox
import qualified Data.Map as Map
fapuConst1 = (UFA.const [1]) :: (FAPU B)
fapdConst1 = (FA.const DBox.noinfo [1]) :: (FAPD B)
fapdConstU = (FA.const DBox.noinfo [(-1) RA.\/ 1]) :: (FAPD B)
fapdConst01 = (FA.const DBox.noinfo [0 RA.\/ 1]) :: (FAPD B)
fapd04X0 = (FA.proj (DBox.fromAscList [(0,0 RA.\/ 4)]) 0) :: (FAPD B)
fapd13X0 = (FA.proj (DBox.fromAscList [(0,1 RA.\/ 3)]) 0) :: (FAPD B)
fapd12X1 = (FA.proj (DBox.fromAscList [(1,1 RA.\/ 2)]) 1) :: (FAPD B)
fapdUX0 = FA.setMaxDegree 2 (FA.proj (DBox.fromAscList [(0,(-1) RA.\/ 1)]) 0) :: (FAPD B)
fapdUX1 = FA.setMaxDegree 2 (FA.proj (DBox.fromAscList [(1,(-1) RA.\/ 1)]) 1) :: (FAPD B)
fapdUX2 = FA.setMaxDegree 2 (FA.proj (DBox.fromAscList [(2,(-1) RA.\/ 1)]) 2) :: (FAPD B)
fapdT1 = (1 + fapdUX2) * (1 + fapdUX2)
fapdT2 = fapdUX0 * fapdUX1
fapdT3 = FA.composeNonDecreasing fapdT1 2 fapdT2
fapeConst1 = (FA.const DBox.noinfo [1]) :: (FAPE B)
fapeConstU = (FA.const DBox.noinfo [(-1) RA.\/ 1]) :: (FAPE B)
fapeConst01 = (FA.const DBox.noinfo [0 RA.\/ 1]) :: (FAPE B)
fape13X0 = (FA.proj (DBox.fromAscList [(0,1 RA.\/ 3)]) 0) :: (FAPE B)
fape12X1 = (FA.proj (DBox.fromAscList [(1,1 RA.\/ 2)]) 1) :: (FAPE B)
fapeUX0 = (FA.proj (DBox.fromAscList [(0,(-1) RA.\/ 1)]) 0) :: (FAPE B)
fapeUX1 = (FA.proj (DBox.fromAscList [(1,(-1) RA.\/ 1)]) 1) :: (FAPE B)
fapeTestMult = (fapeUX0 + (FA.setMaxDegree 3 fapeConst01)) * (fapeConstU)
fapeMultiVar = (fapeUX0 + fapeUX1 * fapeUX0 + fapeUX1 * fapeUX1)
fapeTestPEval = FA.partialEval (DBox.fromList [(1,2 RA.\/ 3)]) fapeMultiVar
fapeUConst1 = (FA.const (DBox.unary $ (0)RA.\/1) [1]) :: (FAPE B)
fapeUConst13 = (FA.const (DBox.unary $ (0)RA.\/1) [1 RA.\/ 3]) :: (FAPE B)
fapeUConst13InitPt = FA.partialIntersect 1 (DBox.unary 0) fapeUConst1 fapeUConst13
fapwUUX0 = (FA.proj (DBox.fromAscList [(0,(-1) RA.\/ 1)]) 0) :: (FAPWP B)
fapwUUX1 = (FA.proj (DBox.fromAscList [(1,(-1) RA.\/ 1)]) 1) :: (FAPWP B)
fapwUPX0 = (FA.proj (DBox.fromAscList [(0,(0) RA.\/ 1)]) 0) :: (FAPWP B)
fapwUPX1 = (FA.proj (DBox.fromAscList [(1,(0) RA.\/ 1)]) 1) :: (FAPWP B)
fapwUMX0 = (FA.proj (DBox.fromAscList [(0,(-1) RA.\/ 0)]) 0) :: (FAPWP B)
fapwUMX1 = (FA.proj (DBox.fromAscList [(1,(-1) RA.\/ 0)]) 1) :: (FAPWP B)
fapwUConst1 = (FA.const (DBox.noinfo) [1]) :: (FAPWP B)
fapwUConst13 = (FA.const (DBox.unary $ (0)RA.\/1) [1 RA.\/ 3]) :: (FAPWP B)
fapwUConst13InitPt = FA.partialIntersect 1 (DBox.unary 0) fapwUConst1 fapwUConst13
testIntegrE =
FA.integrateMeasureImprovement 1 (FA.setMaxDegree 0 fapeUConst13InitPt) 0 (DBox.noinfo) 0 fapeUConst13InitPt
testIntegrP =
FA.integrateMeasureImprovement 1 (FA.setMaxDegree 0 fapwUConst13InitPt) 0 (DBox.unary $ 0 RA.\/ 0.5) 0 fapwUConst13InitPt
jas1 =
FA.integrate
0
f
0
DBox.noinfo
1
0
f =
RAEL.exp 100 x
x =
-- FA.bisectUnbisectDepth 1 $
FA.setMaxDegree 10
-- fapwUUX10
fapd13X0
y =
-- FA.bisectUnbisectDepth 1 $
FA.setMaxDegree 4
-- fapwUUX1
fapd12X1
xLR =
snd $ FA.bisect 0 Nothing $ fst $ FA.bisect 0 Nothing $ x
fn1 = (1 + x) RA.\/ (1 + 3*x)
fn2 = FA.integrateUnary 0 fn1 0 (0 RA.\/ 1) [1]
fn3 = FA.integrateUnary 0 fn2 0 (0 RA.\/ 1) [1] -- this seems wrong!