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, _phase: 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, 1000); let data = UserData { f1: 5., f2: 7. }; let peaks = vec![0.5, 0.5, 0.25, 0.57]; let r = ci.divonne(2, 2, 1, &peaks, CubaVerbosity::Progress, integrand, data); println!("{:#?}", r); }