Sinc function
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
The sinc function, , is a useful function that is a little tricky to implement because it becomes as x approaches . Here is an implementation taken from the Boost library.
epsilon :: RealFloat a => a
epsilon = encodeFloat 1 (fromIntegral $ 1-floatDigits epsilon)
{- Boosted from Boost http://www.boost.org/boost/math/special_functions/sinc.hpp -}
sinc :: (RealFloat a) => a -> a
sinc x =
if abs x >= taylor_n_bound
then sin x / x
else 1 - x^2/6 + x^4/120
where
taylor_n_bound = sqrt $ sqrt epsilon