mod problems;
use integrate::gauss_kronrod::gauss_kronrod_rule;
use problems::{
problem01, problem04, problem05, problem08, problem10, problem11, problem18, problem20,
problem22, problem26, Problem,
};
const N: usize = 7;
pub fn kronrod_problems_f64() -> Vec<Problem<f64>> {
vec![
problem01(), problem04(), problem05(), problem08(), problem10(), problem11(), problem18(), problem20(), problem22(), problem26(), ]
}
fn test_problem_f64(problem: Problem<f64>) {
let f = problem.function;
let (a, b) = problem.limits;
let (integral, _error) = gauss_kronrod_rule(f, a, b, N).unwrap();
let test_passed = problem.check_result(integral);
let test_result = if test_passed { "passed" } else { "failed" };
println!(
"Method:GaussKronrod -- Problem number:{} -- test:{}",
problem.id, test_result
);
assert!(
test_passed,
"Problem {}: got {integral}, expected {}",
problem.id, problem.exact
);
}
#[test]
fn test_f64_problems() {
for problem in kronrod_problems_f64() {
test_problem_f64(problem);
}
}