use simsam::{BuildOptions, Interval, SymbolicContinuous};
use simsym::prelude::*;
fn main() {
let x = symbol("x");
let pdf = exp(-(Expr::from(x).pow(2)));
let support = Interval::new(0.0, 3.0).expect("support");
let sym = SymbolicContinuous::with_defaults(pdf, x, support).expect("symbolic dist");
println!("symbolic CDF available: {}", sym.has_symbolic_cdf());
println!("mean (numeric) = {:.6}", sym.sampler(BuildOptions::default()).unwrap().mean().unwrap());
let dist = sym.sampler(BuildOptions::default()).expect("sampler");
let n = 20_000;
let mut sum = 0.0;
for _ in 0..n {
sum += dist.sample().expect("sample");
}
println!("sample mean ≈ {:.6}", sum / n as f64);
}