Implements both Weierstrass-Durand-Kerner and Aberth-Ehrlich root refinement for gr_poly
Removes acb_poly_refine_roots_durand_kerner
Uses the new code in acb_poly_find_roots, with use of nfloat when possible
Consider the example build/examples/poly_roots a 400 b 50 t 30 c 123 from the previous PR which took 4.1 seconds. Here this takes 3.9 seconds using only acf arithmetic and 1.8 seconds with the nfloat arithmetic enabled.
Note: this will surely need more testing, as there are various things that can go wrong.
Note: based on the limited testing I've done, the Aberth iteration is slightly slower than WDK, so we stick with WDK for now; the faster convergence seems to be offset by the cost of doing roughly twice as many arithmetic operations.
gr_poly
acb_poly_refine_roots_durand_kerner
acb_poly_find_roots
, with use ofnfloat
when possibleConsider the example
build/examples/poly_roots a 400 b 50 t 30 c 123
from the previous PR which took 4.1 seconds. Here this takes 3.9 seconds using onlyacf
arithmetic and 1.8 seconds with thenfloat
arithmetic enabled.Note: this will surely need more testing, as there are various things that can go wrong.
Note: based on the limited testing I've done, the Aberth iteration is slightly slower than WDK, so we stick with WDK for now; the faster convergence seems to be offset by the cost of doing roughly twice as many arithmetic operations.