extern crate gkquad;

use gkquad::prelude::{integral, integral2, DynamicY};

fn main() {
    println!(
        "2D: {}",
        2.0 * integral(|x: f64| (1.0 - x * x).sqrt(), -1.0..1.0)
            .estimate()
            .unwrap()
    );

    let range = DynamicY::new(-1.0, 1.0, |x| {
        let ymax = (1.0 - x * x).sqrt();
        (-ymax..ymax).into()
    })
    .unwrap();

    println!(
        "3D: {}",
        2.0 * integral2(|x: f64, y: f64| (1.0 - x * x - y * y).sqrt(), range)
            .estimate()
            .unwrap()
    );
}