 # [ANN] Packages for integration

Hello,

I have uploaded two new packages to Hackage:

Let me also mention another package of mine, older, for integration on a simplex: scubature (pure Haskell implementation).

4 Likes

I wonder how it compares to the integration package. I assume it has better performance and/or precision?

Ah this is “tanh-sinh”. Yes, numerical-integration is probably better. I experimented it in R (package RcppNumerical) and it gives good results even for highly oscillatory functions.

You gave my an idea: it would be interesting to compare the two packages on a couple of functions. Maybe I’ll do it.

1 Like

Here are two functions whose integral is hard to compute, because the functions are highly oscillatory. The exact values of the integrals are given in the code.

``````import Numerical.Integration

example :: IO (Double, Double, Int) -- value, error estimate, error code
example = integration (\t -> 8 * cos(2*t/(1-t)) / (64*(1-t)**2 + t**2)) 0 1 1e-4 100000

value :: Double -- approx 1.7677e-7
value = exp (-6) * pi / (2 * exp 10)

example' :: IO (Double, Double, Int) -- value, error estimate, error code
example' = integration (\t -> 6 * cos(2*t/(1-t)) / (36*(1-t)**2 + t**2)) 0 1 1e-4 50000

value' :: Double -- approx 9.6513e-6
value' = exp (-6) * pi / (2 * exp 6)
``````

For the first one, using 100000 subdivisions of the interval (0, 1), the result (after a while) is approximately `1.756e-7`

For the second one, using 50000 subdivisions of the interval (0, 1), the result is approximately `9.649e-6`.

So the results are not bad.

I didn’t try “tanh-sinh” but I would bet it provides bad results.

A note: the error code (which should be 0) is totally crazy, a huge number, I don’t know why.