On Wednesday, February 13, 2008, at 11:02AM, "Ben Abbott" <address@hidden>
wrote:
On Wednesday, February 13, 2008, at 09:58AM, "Marco Caliari" <address@hidden>
wrote:
I discovered that the warning is misleading. Consider
legendre(151,0)
The last entry is -Inf and the script "should" returns a warning (you
should replace scale == inf with abs(scale) == inf). But, there is no
instability: the value -Inf is "right", in the sense that it is too large
in magnitude to be represented. Now consider
legendre(151,eps)
Again a warning (due to the check on a and b), but, again, no instability.
Moreover, Matlab has no warnings and it is less robust. Consider
legendre(151,-0.9)
in Matlab and with the script now enclosed. To conclude, I would suggest
to leave the warnings out.
Marco
ok.
I'll begin adding some tests and include on for "legendre(151,0) == Inf".
If you have any other good examples, feel free to post them!
Ben
A couple of tests ...
%!test
%! result = legendre (151, 0);
%! ## Don't compare to "-Inf" since it would fail on 64 bit systems.
%! assert (result(end) < -1.7976e308 && all (isfinite (result(1:end-1))));
%!test
%! result = legendre (150, 0);
%! ## This agrees with Matlab's result.
%! assert (result(end), 3.7532741115719e+306, 0.0000000000001e+306)