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)))