fsolve: avoid useless numerical evaluation of the function
authorAlexei Sheplyakov <alexei.sheplyakov@gmail.com>
Sat, 21 Aug 2010 16:13:29 +0000 (19:13 +0300)
committerJens Vollinga <jensv@nikhef.nl>
Mon, 23 Aug 2010 13:13:46 +0000 (15:13 +0200)
commitd71be995fcb751b52145eb0e50467d15fea541cb
tree3ba0f5b28930088c0ce5637798ff7a2da8951fc3
parent5d6d2c3ff6afd13933203f984a818dbfc76db3a1
fsolve: avoid useless numerical evaluation of the function

Don't compute f(x) if new x is outside of the interval. We don't need that
value anyway, and the function might be difficult to compute numerically or
even ill defined outside the interval.

As a result fsolve is able to find root(s) of some weird functions.
For example

fsolve((1/(sqrt(2*Pi)))*integral(t, 0, x, exp(-1/2*t^2)) == 0.5, x, 0, 100)

actually works now.
(cherry picked from commit beeb0818e9cdb1b5de0ba2754286ad7bb2a9d032)
ginac/inifcns.cpp