19 个版本
使用旧的 Rust 2015
0.2.4 | 2020 年 12 月 5 日 |
---|---|
0.2.3 | 2020 年 9 月 8 日 |
0.2.2 | 2020 年 3 月 30 日 |
0.1.14 | 2020 年 3 月 26 日 |
0.1.3 | 2018 年 10 月 30 日 |
1216 in 数学
370KB
708 行
Rust Cuba 接口
该库提供对 Cuba 集成库(版本 4.2.1)的安全访问。
示例
以下我们展示了将测试函数与用户数据(可以是任何类型)集成的示例
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> {
for i in 0..nvec {
f[i * 2] = (x[i * 2] * x[i * 2]).sin() * user_data.f1;
f[i * 2 + 1] = (x[i * 2 + 1] * x[i * 2 + 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_seed(0) // use quasi-random numbers
.set_cores(2, 1000);
let data = UserData { f1: 5., f2: 7. };
let r = ci.vegas(2, 2, 4, CubaVerbosity::Progress, 0, integrand, data);
println!("{:#?}", r);
}