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.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