{-| Module : Data.Number.ER.RnToRm.UnitDom.Base.Tests.Properties.Division Description : (testing) properties of polynomial enclosure division Copyright : (c) 2007-2008 Michal Konecny License : BSD3 Maintainer : mik@konecny.aow.cz Stability : experimental Portability : portable Quickcheck properties of polynomial enclosure division. -} module Data.Number.ER.RnToRm.UnitDom.Base.Tests.Properties.Division where import Data.Number.ER.RnToRm.UnitDom.Base.Tests.Properties.Common import qualified Data.Number.ER.RnToRm.UnitDom.Base as UFB import Data.Number.ER.RnToRm.UnitDom.Base.Tests.Generate import qualified Data.Number.ER.Real.Approx as RA import Data.Number.ER.Real.Approx.Interval import Data.Number.ER.BasicTypes import Data.Number.ER.BasicTypes.Tests.Generate import Test.QuickCheck prop_enclRecip_ThickEncl_consistent sampleE reportFileName (Deg5Size10 maxDegree maxSize, Ix10 ix, SmallRatio sepNum sepDenom, (isNegative, FBEnclThickSize10Small (n,preEncl))) = recip_encl_consistent sampleE reportFileName maxDegree maxSize ix sepNum sepDenom isNegative n preEncl prop_enclRecip_ParalEncl_consistent sampleE reportFileName (Deg5Size10 maxDegree maxSize, Ix10 ix, SmallRatio sepNum sepDenom, (isNegative, FBEnclParalSize10Small (n,preEncl))) = recip_encl_consistent sampleE reportFileName maxDegree maxSize ix sepNum sepDenom isNegative n preEncl prop_enclRecip_ThinEncl_consistent sampleE reportFileName (Deg5Size10 maxDegree maxSize, Ix10 ix, SmallRatio sepNum sepDenom, (isNegative, FBEnclThinSize10Small (n,preEncl))) = recip_encl_consistent sampleE reportFileName maxDegree maxSize ix sepNum sepDenom isNegative n preEncl recip_encl_consistent sampleE reportFileName maxDegree maxSize ix sepNum sepDenom isNegative pId preEncl = excludedZero ==> enclAtKeyPointsPointwiseUnaryInnerInOuter reportFileName ((maxDegree, maxSize), ix, (sepNum, sepDenom), (isNegative, pId)) ((RA./:) 1) pEncl resEncl where _ = [sampleE, pEncl] resEncl = UFB.recipEncl maxDegree maxSize ix pEncl (excludedZero, pEncl) = enclRestrictRange ix maxDegree maxSize rangeNoZero preEncl rangeNoZero | isNegative = (Nothing, Just (-sepB)) | otherwise = (Just sepB, Nothing) sepB = abs sepNumB / sepDenomB sepNumB = fromInteger $ toInteger sepNum sepDenomB = fromInteger $ toInteger sepDenom