Don't ignore exceptions thrown by numerical integration routine.
In general, the code like this
try {
// blah-blah
} catch (std::exception& err) { }
is just plain evil. Case in the point:
fsolve((1/(sqrt(2*Pi)))*integral(t,0,x,exp(-1/2*t^2))==0.5,x,0,100)
// results after subsituting a number for the integration variable.
if (is_exactly_a<numeric>(ea) && is_exactly_a<numeric>(eb)
&& is_exactly_a<numeric>(ef.subs(x==12.34).evalf())) {
// results after subsituting a number for the integration variable.
if (is_exactly_a<numeric>(ea) && is_exactly_a<numeric>(eb)
&& is_exactly_a<numeric>(ef.subs(x==12.34).evalf())) {
return adaptivesimpson(x, ea, eb, ef);
return adaptivesimpson(x, ea, eb, ef);
- } catch (runtime_error &rte) {}
}
if (are_ex_trivially_equal(a, ea) && are_ex_trivially_equal(b, eb)
}
if (are_ex_trivially_equal(a, ea) && are_ex_trivially_equal(b, eb)