While working on a project that analyze some signals in Haskell I found that I need a simple function polyVal that evaluates a polynomial at specific values.

After a failed search for this function ( I thought that I can find a library or an implementation) I decided to write it on my own, anyway, it’s a simple function.

So, let’s suppose we have a polynomial p of degree N, this function returns the value:

The Haskell implementation of this function is:

evalPoly::Double->[Double]->Double
evalPoly n xs=sum $map (\e->e*n**fromIntegral ((length xs)-1-(fromJust$ elemIndex e xs))) xs


Example of ussage:

>evalPoly 3 [-19,7,-4,6]
-456.0
>evalPoly 5 [3,0,1]
76.0