rayon-test/src/main.rs

28 lines
522 B
Rust

extern crate rayon;
use rayon::prelude::*;
fn semicircle(x: f64) -> f64 {
(1.0 - x * x).sqrt()
}
fn parallel_integrate<F>(f: F, points: usize) -> f64
where
F: Fn(f64) -> f64 + Sync,
{
let delta = 1f64 / points as f64;
(0..points)
.into_par_iter()
.map(|i| {
let a = i as f64 * delta;
delta * (f(a) + f(a + delta)) / 2f64
})
.sum()
}
fn main() {
let pi = 4.0 * parallel_integrate(semicircle, 1_000_000_000_000);
println!("Pi: {}", pi);
}