Some time ago, I wrote jtroot3.mac (share/numeric) to compute roots of
polynomials using Jenkins-Traub algorithm. It mostly works, but some
simple polynomials fail (see https://sourceforge.net/tracker2/?func=detail&aid=2230778&group_id=4933&atid=104933).
What I should have done is taken the existing allroots implementation
and converted it to use bfloats. Well, here it is:
http://common-lisp.net/~rtoy/bfcpoly.lisp.
There are probably bugs, but the few tests I tried seem to work, and
the above bug is gone.
While doing this, I also found the undocumented polyfactor variable.
When polyfactor is false, bfallroots and allroots return a list of the
roots. When polyfactor is true, bfallroots and allroots return the
result as a factored polynomial of the form c*(x-r1)*(x-r2)...
Perhaps this can be placed in cpoly.lisp or maybe as a contrib in
share/numeric.
Also, I should probably also convert rpoly-sl to support bfloats, and
then allroots and bfallroots will be functionally identical.
Hope this is useful to someone,
Ray