cuba 0.2.2

A Rust wrapper for the C Cuba integration library
Documentation
extern crate cuba;
use cuba::{CubaIntegrator, CubaVerbosity};

#[derive(Debug)]
struct UserData {
    f1: f64,
    f2: f64,
}

#[inline(always)]
fn integrand(
    x: &[f64],
    f: &mut [f64],
    user_data: &mut UserData,
    _nvec: usize,
    _core: i32,
    _weight: &[f64],
    _iter: usize,
) -> Result<(), &'static str> {
    f[0] = (x[0] * x[1]).sin() * user_data.f1;
    f[1] = (x[1] * x[1]).cos() * user_data.f2;
    Ok(())
}

fn main() {
    let mut ci = CubaIntegrator::new();
    ci.set_mineval(10)
        .set_maxeval(10000000)
        .set_epsrel(0.0001)
        .set_cores(2, 10000);

    let r = ci.suave(
        2,
        2,
        1,
        1000,
        1000,
        10.,
        CubaVerbosity::Progress,
        integrand,
        UserData { f1: 5., f2: 7. },
    );
    println!("{:#?}", r);
}