module Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Tests.Ring
where
import Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Ring
import Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Basic
import Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Tests.Generate
prop_chplAdd_consistent (PSize30 (_,p1), PSize30 (_, p2)) =
chplAtKeyPointsPointwiseBinaryDownUpConsistent (+) p1 p2 (sumLow, sumHigh)
where
(sumLow, sumHigh, _) = chplAdd p1 p2
prop_chplAddConst_consistent (SmallRatio num denom, PSize30 (_, p)) =
chplAtKeyPointsPointwiseBinaryDownUpConsistent (+) cP p (sumLow, sumHigh)
where
(sumLow, sumHigh, _) = chplAddConst cB p
cP = chplConst cB
cB = numB / denomB
numB = fromInteger $ toInteger num
denomB = fromInteger $ toInteger denom
prop_chplMult_consistent (PSize30 (_,p1), PSize30 (_, p2)) =
chplAtKeyPointsPointwiseBinaryDownUpConsistent (*) p1 p2 (prodLow, prodHigh)
where
(prodLow, prodHigh, _) = chplMultiply p1 p2
prop_chplScale_consistent (SmallRatio num denom, PSize30 (_, p)) =
chplAtKeyPointsPointwiseBinaryDownUpConsistent (*) cP p (prodLow, prodHigh)
where
(prodLow, prodHigh, _) = chplScale cB p
cP = chplConst cB
cB = numB / denomB
numB = fromInteger $ toInteger num
denomB = fromInteger $ toInteger denom