Hi Jim. > How big are these errors expressed as multiples of the ULP of the > coefficients? Obviously 1e-17 is a lot smaller than 1e-4, but was > 1e-17 > representing "just a couple of bits of error" or was it still way off > with respect to the numbers being used? And were these fairly obscure > equations that were off?
The coefficients I used were eqn={-0.1, 0, 1, 1e-7} so compared to the ulps of the coefficients, 1e-4 is pretty large. I'm about to go now, but I would like to write this idea first: it seems to me like the number of roots reported is much more important than whether their accuracy is 1e-4 or 1e-17. So, how about we solve for the roots of the derivative (which can be done very quickly). Computing lim{x-->+/-inf}f(x) is very easy (just a test on the most significant coefficient). We can then evaluate the polynomial on the critical points and this would allow us to very quickly compute the exact number of roots. If the number computed using the closed form formula does not match the real number, we do some refining work. If we really wanted to optimize, we could also record how close constants like D and q are to 0, and if they're within a certain threshold, we could mark the roots they spawn as "suspicious", and only do the test in the above paragraph (i.e. solving for critical points) if there are suspicious roots. And if the computed numbers of roots don't match up, we could concentrate on refining only the "suspicious" roots. Regards, Denis.