pub fn adaptive_newton_cotes( a: f64, b: f64, f: impl Fn(f64) -> f64 + Send + Sync + Copy, n: usize, point_type: PointType, error: f64, ) -> f64