aurelio-amerio / MultiQuad.jl

A convenient interface to perform 1D, 2D and 3D numerical integrations. Uses QuadGK.jl, Cuba.jl, HCubature.jl and FastGaussQuadrature.jl as back-ends.
MIT License
8 stars 2 forks source link

support for bigfloat #10

Open liushang0322 opened 1 year ago

liushang0322 commented 1 year ago

Thank you very much for the contribution of the MultiQuad library, which saves me the need to write numerical integrals by myself. Can I add support for bigfloat?

aurelio-amerio commented 1 year ago

MultiQuad is a unified wrapper around QuadGK, HCubature and Cuba. While the wrapper is written in a way that it can handle any datatype, there are limitations due to what the actual quadrature libraries can handle. In particular, as far as I know QuadGK supports 1D integration with BigFloat, while HCubature and Cuba only support Float numbers.

If you are interested in 1D integrals I would suggest you to use QuadGK (or the quad function). At the same time, numerical estimation of 2D-3D integrals is very hard and computationally expensive. As such you can't expect a very high accuracy on the result for complex integrals. For these kind of integrals floating point precision in the results is already very hard if not impossible to obtain, making it "pointless" to use BigFloat. Also remember that there are no specialized hardware support for BigFloat, so any integral performed with BigFloat numbers will be extremely slow.