Raymond Toy wrote:
> Raymond Toy wrote:
>
>> Out of curiosity, I tried the original Fortran code (TOMS algorithm 493)
>> on this polynomial. It computes the roots just fine, so I conclude that
>> the translation in maxima is wrong in some way.
>>
>> I'll add this to the bug list. :-( But it shouldn't be too hard to fix
>> this by comparing our translation with the Fortran code.
>>
>>
> It wasn't as easy as I thought, but I did find one clear mistake in the
> algorithm. Fixing that doesn't make it work. What really makes it work
> is reducing the values of *mre* and *are* (basically float epsilon) to
> match the Fortran code. Even though the routine is for double-precision
> data, the *mre* and *are* values are single-float values. I do not know
> why.
>
An alternative would be to use the same algorithm to compute the error
bounds as used for the complex routine. By doing this, allroots now works.
I'll try to do some more tests on this, and if all goes well, I'll check
in the changes.
Ray