{-| Module : Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Tests.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.ChebyshevBase.Polynom.Tests.Division where import Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Division import Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Enclosure --import Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Basic import Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Tests.Generate import Data.Number.ER.Real.Approx.Interval import Data.Number.ER.BasicTypes import Test.QuickCheck prop_enclRecip_ThickEncl_consistent reportFileName (Deg20Size20 maxDegree maxSize, (Int20 ixInt, Int20 tauDegr), SmallRatio sepNum sepDenom, (isNegative, PSize30 (n1,p1), PSize30 (n2, p2))) = recip_encl_consistent reportFileName maxDegree maxSize ixInt tauDegr sepNum sepDenom isNegative (n1, n2) preEncl where preEncl = makeThickEncl maxDegree maxSize p1 p2 prop_enclRecip_ParalEncl_consistent reportFileName (Deg20Size20 maxDegree maxSize, (Int20 ixInt, Int20 tauDegr), SmallRatio sepNum sepDenom, (isNegative, SmallRatio wNum wDenom, PSize30 (n, p))) = recip_encl_consistent reportFileName maxDegree maxSize ixInt tauDegr sepNum sepDenom isNegative ((wNum, wDenom), n) preEncl where preEncl = makeParalEncl p wNum wDenom recip_encl_consistent reportFileName maxDegree maxSize ixInt tauDegr sepNum sepDenom isNegative pId preEncl = excludedZero ==> enclAtKeyPointsPointwiseUnaryDownUpConsistent reportFileName ((maxDegree, maxSize), (ixInt, tauDegr), (sepNum, sepDenom), (isNegative, pId)) (intervalDivideInner 1) pEncl resEncl where resEncl = enclRecip maxDegree maxSize ix tauDegr pEncl ix = int2effIx ixInt (excludedZero, pEncl) = enclRestrictRange ix rangeNoZero preEncl rangeNoZero | isNegative = (Nothing, Just (-sepB)) | otherwise = (Just sepB, Nothing) sepB = abs sepNumB / sepDenomB sepNumB = fromInteger $ toInteger sepNum sepDenomB = fromInteger $ toInteger sepDenom