The following term gives a strange result instead of 0. Without "numer", all is OK
Numerical inaccuracies are a nuisance, but this "false" kills further numerical computations.
ev(integrate(sin(2*%pi*x),x,0,1),numer); > 0.1591549430919 (1 - cos(7.8398838568245917E-8 (25510582 %pi false - 80143857)))
Info:
- tested with Maxima 5.30.0 using Windows 7
- tested with Maxima 5.25.0 using Linux Fedora Core 16
- always reproducible
- ev(integrate(sin(x),x,0,2*%pi),numer); computes 0 as expected.
Robert Dodier
2013-09-13
Confirmed in Maxima 5.31.0 and 5.27.0.
The presence of 'false' is certainly a bug. Bear in mind, however, that Maxima prefers exact numbers (integers and rationals) to inexact (floats and bigfloats). Probably it is better to compute a result using exact numbers and then convert the result to inexact. For example something like
foo : integrate (whatever, x, a, b); float (foo);
Robert Dodier
2013-09-13
Robert Dodier
2013-09-13
Presence of 'false' in result is caused by failure of PRETTY-GOOD-FLOOR-OR-CEILING to compute floor of 1.0. Avoid the problem by calling $FLOOR instead. Fixed by commit 807d4780. Therefore closing this report.
Note that 807d4780 just removes 'false' from the output -- it is still a messy, although valid, numerical expression.
foo : ev(integrate(sin(2*%pi*x),x,0,1),numer) => .1591549430918953*(1-cos(7.839883856824592E-8*(25510582*%pi-80143857))) float (foo); => 0.0