{-| 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.BasicTypes.DomainBox as DBox import Data.Number.ER.Real.Approx.Interval import Data.Number.ER.Misc 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!