module Test.Sound.Synthesizer.Plain.Filter (tests) where import qualified Synthesizer.Plain.Filter.Recursive.MovingAverage as MA import qualified Synthesizer.Plain.Filter.NonRecursive as FiltNR import qualified Synthesizer.Plain.Signal as Sig import Test.QuickCheck (test, {- Property, (==>) -}) -- import Test.Utility (equalList, approxEqualListAbs, approxEqualListRel, ) -- import qualified Algebra.Module as Module -- import qualified Algebra.RealField as RealField -- import qualified Algebra.Ring as Ring -- import qualified Algebra.Additive as Additive import qualified Number.NonNegative as NonNeg import NumericPrelude import PreludeBase import Prelude () sums :: NonNeg.Int -> Rational -> Sig.T Rational -> Bool sums nn x0 xs0 = let n = min (length xs) (1 + NonNeg.toNumber nn) xs = x0:xs0 naive = FiltNR.sums n xs pyramid = FiltNR.sumsPyramid n xs rec = drop (n-1) $ MA.sumsStaticInt n xs in -- this checks only for equal prefixes and can easily go wrong, -- if one list is empty and $ zipWith3 (\x y z -> x==y && y==z) naive rec pyramid -- equalList $ naive : pyramid : rec : [] tests :: [(String, IO ())] tests = ("sums", test sums) : []