synthesizer-0.0.3: src/FourierSeries.hs
module FourierSeries where
evalL :: Floating a => [(a,a)] -> a -> a
evalL [] _ = 0
evalL ((c,_):cs) t =
c/2 + sum (zipWith (\(r,i) tk -> r * cos tk + i * sin tk)
cs (iterate (t+) t))
evalSineL, evalCosineL :: Floating a => [a] -> a -> a
evalSineL [] _ = 0
evalSineL (_:cs) t =
sum (zipWith (*) cs (map sin (iterate (t+) t)))
evalCosineL [] _ = 0
evalCosineL (c:cs) t =
c/2 + sum (zipWith (*) cs (map cos (iterate (t+) t)))