module Data.Number.ER.RnToRm.UnitDom.Base.Tests.Properties.Enclosure
where
import Data.Number.ER.RnToRm.UnitDom.Base.Tests.Generate
import Data.Number.ER.RnToRm.UnitDom.Base.Tests.Properties.Common
import qualified Data.Number.ER.RnToRm.UnitDom.Base as UFB
import Data.Number.ER.BasicTypes.Tests.Generate
import qualified Data.Number.ER.Real.Approx as RA
prop_enclAdd_ThickEncls_consistent ::
(UFB.ERUnitFnBaseEncl boxb boxra varid b ra t, Show boxra, RA.ERInnerOuterApprox ra) =>
(t,t) -> String -> (Deg5Size10, (FBEnclThickSize10 t, FBEnclThickSize10 t)) ->
Bool
prop_enclAdd_ThickEncls_consistent =
prop_binary_ThickEncls_consistent (RA.+:) UFB.addEncl
prop_enclAdd_ParalEncls_consistent ::
(UFB.ERUnitFnBaseEncl boxb boxra varid b ra t, Show boxra, RA.ERInnerOuterApprox ra) =>
(t,t) -> String -> (Deg5Size10, (FBEnclParalSize10 t, FBEnclParalSize10 t)) ->
Bool
prop_enclAdd_ParalEncls_consistent =
prop_binary_ParalEncls_consistent (RA.+:) UFB.addEncl
prop_enclAdd_ThinEncls_consistent ::
(UFB.ERUnitFnBaseEncl boxb boxra varid b ra t, Show boxra, RA.ERInnerOuterApprox ra) =>
(t,t) -> String -> (Deg5Size10, (FBEnclThinSize10 t, FBEnclThinSize10 t)) ->
Bool
prop_enclAdd_ThinEncls_consistent =
prop_binary_ThinEncls_consistent (RA.+:) UFB.addEncl
prop_enclMult_ThickEncls_consistent ::
(UFB.ERUnitFnBaseEncl boxb boxra varid b ra t, Show boxra, RA.ERInnerOuterApprox ra) =>
(t,t) -> String -> (Deg5Size10, (FBEnclThickSize10 t, FBEnclThickSize10 t)) ->
Bool
prop_enclMult_ThickEncls_consistent =
prop_binary_ThickEncls_consistent (RA.*:) UFB.multiplyEncl
prop_enclMult_ParalEncls_consistent ::
(UFB.ERUnitFnBaseEncl boxb boxra varid b ra t, Show boxra, RA.ERInnerOuterApprox ra) =>
(t,t) -> String -> (Deg5Size10, (FBEnclParalSize10 t, FBEnclParalSize10 t)) ->
Bool
prop_enclMult_ParalEncls_consistent =
prop_binary_ParalEncls_consistent (RA.*:) UFB.multiplyEncl
prop_enclMult_ThinEncls_consistent ::
(UFB.ERUnitFnBaseEncl boxb boxra varid b ra t, Show boxra, RA.ERInnerOuterApprox ra) =>
(t,t) -> String -> (Deg5Size10, (FBEnclThinSize10 t, FBEnclThinSize10 t)) ->
Bool
prop_enclMult_ThinEncls_consistent =
prop_binary_ThinEncls_consistent (RA.*:) UFB.multiplyEncl
prop_enclScale_ThickEncl_consistent
sampleE reportFileName
(Deg10Size10 maxDegree maxSize,
SmallRatio num denom,
FBEnclThickSize10 (n, e)) =
enclAtKeyPointsPointwiseBinaryInnerInOuter
reportFileName
((maxDegree, maxSize), (num, denom), n)
(RA.*:)
cEncl e scaledEncl
where
_ = [e,sampleE]
scaledEncl = UFB.scaleEncl maxDegree maxSize cB e
cEncl = UFB.constEncl (cB,cB)
cB = numB / denomB
numB = fromInteger $ toInteger num
denomB = fromInteger $ toInteger denom
prop_enclScale_ParalEncl_consistent
sampleE reportFileName
(Deg10Size10 maxDegree maxSize,
SmallRatio num denom,
FBEnclParalSize10 (n, e)) =
enclAtKeyPointsPointwiseBinaryInnerInOuter
reportFileName
((maxDegree, maxSize), (num, denom), n)
(RA.*:)
cEncl e scaledEncl
where
_ = [e,sampleE]
scaledEncl = UFB.scaleEncl maxDegree maxSize cB e
cEncl = UFB.constEncl (cB,cB)
cB = numB / denomB
numB = fromInteger $ toInteger num
denomB = fromInteger $ toInteger denom
prop_enclScale_ThinEncl_consistent
sampleE reportFileName
(Deg10Size10 maxDegree maxSize,
SmallRatio num denom,
FBEnclThinSize10 (n, e)) =
enclAtKeyPointsPointwiseBinaryInnerInOuter
reportFileName
((maxDegree, maxSize), (num, denom), n)
(RA.*:)
cEncl e scaledEncl
where
_ = [e,sampleE]
scaledEncl = UFB.scaleEncl maxDegree maxSize cB e
cEncl = UFB.constEncl (cB,cB)
cB = numB / denomB
numB = fromInteger $ toInteger num
denomB = fromInteger $ toInteger denom
prop_binary_ThickEncls_consistent
opInner opEncl
sampleE reportFileName
(Deg5Size10 maxDegree maxSize,
(FBEnclThickSize10 (n1,e1),
FBEnclThickSize10 (n2,e2))) =
enclAtKeyPointsPointwiseBinaryInnerInOuter
reportFileName
((maxDegree, maxSize), (n1, n2))
opInner
e1 e2 resE
where
_ = [sampleE, e1]
resE = opEncl maxDegree maxSize e1 e2
prop_binary_ParalEncls_consistent
opInner opEncl
sampleE reportFileName
(Deg5Size10 maxDegree maxSize,
(FBEnclParalSize10 (n1,e1),
FBEnclParalSize10 (n2,e2))) =
enclAtKeyPointsPointwiseBinaryInnerInOuter
reportFileName
((maxDegree, maxSize), (n1, n2))
opInner
e1 e2 sumE
where
_ = [sampleE, e1]
sumE = opEncl maxDegree maxSize e1 e2
prop_binary_ThinEncls_consistent
opInner opEncl
sampleE reportFileName
(Deg5Size10 maxDegree maxSize,
(FBEnclThinSize10 (n1,e1),
FBEnclThinSize10 (n2,e2))) =
enclAtKeyPointsPointwiseBinaryInnerInOuter
reportFileName
((maxDegree, maxSize), (n1, n2))
opInner
e1 e2 sumE
where
_ = [sampleE, e1]
sumE = opEncl maxDegree maxSize e1 e2