PoslavskySV/rings

Performance issue with multivariate GCD for very large polynomials

PoslavskySV opened this issue · 0 comments

From FORM benchmarks:

Mathematica: 872.407s
Rings: 126594.310s

After debugging, I noticed that 99,9% of time is spent in MultivariatePolynomial#evaluate method, which was used extremely inefficiently for building Vandermonde/LinZip matrices for ZippelGCD (performance dip meets only for very large polys). These will be fixed with the following:

  • use faster evaluation (with no intermediate maps) to obtain univariate result in sparse solvers (e.g. like here and here)
  • use map-based or larger cache for powers in method MultivariatePolynomial#evaluate
  • use sparse Horner scheme instead of cached powers for evaluation of very large polynomials