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