use rint::quadrature::AdaptiveSingularity;
use rint::{Limits, Tolerance};
mod util;
singularity_test! {
name: singularity_gauss_kronrod_smooth_function_relative_tolerance,
function: util::Function1,
alpha: f64 => 2.6,
lower: 0.0,
upper: 1.0,
exp_result: 7.716049382715789440E-02,
exp_error: 2.216394961010438404E-12,
exp_iterations: 5,
exp_evaluations: 189,
tolerance_rel: 1e-10,
test_abs_tolerance: 1e-15,
test_rel_tolerance: 1e-6,
"Function1 AdaptiveSingularity::general relative bound"
}
singularity_test! {
name: singularity_gauss_kronrod_function11_absolute_tolerance,
function: util::Function11,
alpha: f64 => 2.0,
lower: 1.0,
upper: 1000.0,
exp_result: -5.908755278982136588E+03,
exp_error: 1.299646281053874554E-10,
exp_iterations: 9,
exp_evaluations: 357,
tolerance_abs: 1e-7,
test_abs_tolerance: 1e-15,
test_rel_tolerance: 1e-3,
"Function11 AdaptiveSingularity::general absolute bound"
}
singularity_test! {
name: singularity_gauss_kronrod_function455_relative_tolerance_semi_infinite_positive,
function: util::Function455,
lower: 0.0,
exp_result: -3.616892186127022568E-01,
exp_error: 3.016716913328831851E-06,
exp_iterations: 10,
exp_evaluations: 570,
tolerance_rel: 1e-3,
test_abs_tolerance: 1e-14,
test_rel_tolerance: 1e-5,
"Function455 AdaptiveSingularity::semi_infinite_positive relative bound"
}
singularity_test! {
name: singularity_gauss_kronrod_function15_relative_tolerance,
function: util::Function15,
alpha: i32 => 5,
lower: 0.0,
exp_result: 6.553600000000024738E+04,
exp_error: 7.121667111456009280E-04,
exp_iterations: 10,
exp_evaluations: 570,
tolerance_rel: 1e-7,
test_abs_tolerance: 1e-14,
test_rel_tolerance: 1e-5,
"Function15 AdaptiveSingularity::semi_infinite_positive relative bound"
}
singularity_test! {
name: singularity_gauss_kronrod_function16_absolute_tolerance,
function: util::Function16,
alpha: i32 => 1,
lower: 99.9,
exp_result: 1.000000000006713292E-04,
exp_error: 3.084062020905636316E-09,
exp_iterations: 6,
exp_evaluations: 330,
tolerance_abs: 1e-7,
test_abs_tolerance: 1e-14,
test_rel_tolerance: 1e-5,
"Function16 AdaptiveSingularity::semi_infinite_positive absolute bound"
}
singularity_test! {
name: singularity_gauss_kronrod_myfunction1_absolute_tolerance_semi_infinite_positive,
function: util::MyFunciton1,
exp_result: 2.275875794468747770E+00,
exp_error: 7.436490118267390744E-09,
exp_iterations: 5,
exp_evaluations: 270,
tolerance_abs: 1e-7,
test_abs_tolerance: 1e-14,
test_rel_tolerance: 1e-5,
"MyFunction1 AdaptiveSingularity::infinite absolute bound"
}
singularity_test! {
name: singularity_gauss_kronrod_myfunction2_absolute_tolerance_semi_infinite_positive,
function: util::MyFunciton2,
alpha: f64 => 1.0,
upper: 1.0,
exp_result: 2.718281828459044647E+00,
exp_error: 1.588185109253204805E-10,
exp_iterations: 5,
exp_evaluations: 270,
tolerance_abs: 1e-7,
test_abs_tolerance: 1e-14,
test_rel_tolerance: 1e-5,
"MyFunction2 AdaptiveSingularity::semi_infinite_negative absolute bound"
}