From: Alexei Sheplyakov Date: Thu, 19 Aug 2010 08:10:25 +0000 (+0300) Subject: integral::evalf(): don't attempt to ignore problems. X-Git-Tag: release_1-6-0~18^2~1^2~12 X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=commitdiff_plain;h=5d6d2c3ff6afd13933203f984a818dbfc76db3a1;ds=sidebyside integral::evalf(): don't attempt to ignore problems. 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) (cherry picked from commit 515171f0bcd42099c266713c3d605cd92cedd2e2) --- diff --git a/ginac/integral.cpp b/ginac/integral.cpp index 07670f3c..f45d1ab0 100644 --- a/ginac/integral.cpp +++ b/ginac/integral.cpp @@ -188,9 +188,7 @@ ex integral::evalf(int level) const // results after subsituting a number for the integration variable. if (is_exactly_a(ea) && is_exactly_a(eb) && is_exactly_a(ef.subs(x==12.34).evalf())) { - try { return adaptivesimpson(x, ea, eb, ef); - } catch (runtime_error &rte) {} } if (are_ex_trivially_equal(a, ea) && are_ex_trivially_equal(b, eb)