Function rv::misc::try_quad [−][src]
pub fn try_quad<F, E>(func: F, a: f64, b: f64) -> Result<f64, E> where
F: Fn(f64) -> Result<f64, E>,
Adaptive Simpson’s quadrature on functions that can fail.
Example
Integrate f: x2 over the interval [0, 1].
use rv::misc::try_quad; let func = |x: f64| { if x > 2.0 { Err(String::from("> 2.0")) } else { Ok(x.powi(2)) } }; let q = try_quad(func, 0.0, 1.0).unwrap(); assert!((q - 1.0/3.0).abs() < 1E-8);
Errors if the function to evaluate returns an error
use rv::misc::try_quad; let func = |x: f64| { if x > 0.5 { Err(String::from("whoops")) } else { Ok(x.powi(2)) } }; let q = try_quad(func, 0.0, 1.0); assert!(q.is_err());