{-| Module : Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Tests.Ring Description : (testing) properties of ring operations Copyright : (c) 2007-2008 Michal Konecny License : BSD3 Maintainer : mik@konecny.aow.cz Stability : experimental Portability : portable Quickcheck properties of ring operations, ie addition and multiplication. -} 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