Dear all,

I am proud to announce Cuba.jl <https://github.com/giordano/Cuba.jl> a 
library for multidimensional numerical integration with four independent 
algorithms: Vegas, Suave, Divonne, and Cuhre (this algorithm is the same 
used in Cubature.jl).  This package is just a wrapper around Cuba Library 
<http://www.feynarts.de/cuba/>, written in C by Thomas Hahn.

Cuba.jl is a registered Julia package, so you can install it with the 
package manager:

Pkg.add("Cuba")

The package is usable, but I must admit user interface is not optimal.  One 
has to define a function of this type:

function integrand(ndim::Cint, xx::Ptr{Cdouble}, ncomp::Cint, ff::Ptr{
Cdouble},
                   userdata::Ptr{Void})
    # Take arrays from "xx" and "ff" pointers.
    x = pointer_to_array(xx, (ndim,))
    f = pointer_to_array(ff, (ncomp,))
    # Do calculations on "f" here
    #   ...
    # Store back the results to "ff"
    ff = pointer_from_objref(f)
return Cint(0)::Cint
end

and then call one of the four integrator functions available with this 
syntax:

Vegas(integrand, ndim, ncomp[, keywords...])
Suave(integrand, ndim, ncomp[, keywords...])
Divonne(integrand, ndim, ncomp[, keywords...])
Cuhre(integrand, ndim, ncomp[, keywords...])

Issue #3 <https://github.com/giordano/Cuba.jl/issues/3> tracks this 
problem, if someone wants to help on this is warmly welcome.

Documentation of the package is available at https://cubajl.readthedocs.org/ 
and you can also download the PDF version of the manual from 
https://media.readthedocs.org/pdf/cubajl/latest/cubajl.pdf  In particular, 
there is a section with some useful examples: 
https://cubajl.readthedocs.org/en/latest/#examples

Even though Cuba.jl does not support parallelization (see issue #1 
<https://github.com/giordano/Cuba.jl/issues/1>), its performance is 
comparable with those of equivalent codes written in C or Fortran relying 
on Cuba Library: https://github.com/giordano/Cuba.jl#performance

Cuba.jl is released under the terms of LGPLv3 and is available for 
GNU/Linux and OS X (Windows support is currently missing 
<https://github.com/giordano/Cuba.jl/issues/2>, Cubature.jl is a better 
alternative for that platform).

Feel free to share your comments and suggestions on this package!

Cheers,
Mosè

Reply via email to