Very nice, Mose! I thought I might have to write a Julia wrapper for Cuba 
at some point, but you beat me to it (which I'm grateful for!). :-)

I noticed that you're maintaining a modified version of Cuba for this - I 
guess because the upstream Cuba doesn't support "make shared"? Are you in 
contact with Thomas? He may be willing to add that - if you like, I can 
ask, his office is two floors up from mine. ;-)

On Sunday, April 10, 2016 at 10:34:53 PM UTC+2, Mosè Giordano wrote:
>
> 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