Factoring univariate polynomials over the rationals

  • Authors:
  • Andy Novocin;Mark van Hoeij

  • Affiliations:
  • Florida State University;Florida State University

  • Venue:
  • ACM Communications in Computer Algebra
  • Year:
  • 2009

Quantified Score

Hi-index 0.00

Visualization

Abstract

We present an algorithm for factoring a polynomial, f , in one variable with rational coefficients. Our algorithm is a variant of the Belabas [Belabas] version of the van Hoeij [van Hoeij] factoring algorithm. Our algorithm not only contains a practical speed-up over Belabas' but it also allows us to prove a new complexity result for factoring polynomials. The van Hoeij algorithm follows Zassenhaus' [Zass] approach by factoring f mod a prime number and Hensel Lifting the local factors. The practical speed-up in van Hoeij's algorithm comes from using the LLL [LLL] algorithm to solve the exponential recombination problem of decicing which combination of local factors form the true factors. However, the cost of LLL in van Hoeij's approach has been difficult to bound (in fact [van Hoeij] only proves termination and makes no attempt at finding a complexity). Belabas found a fine-tuning [Belabas] of van Hoeij's algorithm which nearly optimizes the practical running times, but still does not provide a good bound for the LLL costs. In [BHKS] both variants were shown to have polynomial complexity, but these bounds are still unsatisfactorily large and do little to illuminate the behavior of these algorithms. Our algorithm improves Belabas' approach in the following ways: We make a practical improvement which ensures that Hensel Lifting is always minimized. We include a decision making process which allows us to bound the total number of LLL switches in the algorithm by O(r3), where r is the number of local factors. This is independent of both degree and coefficient size of f.. In this poster we present an overview of the new algorithm and give a brief look at the style of our proofs. For the full details of the switch bound O(r3) see [Novocin]. Using the Floating-Point LLL [L2] and some minor changes we can show the LLL costs are O(r7). We are still writing down the details of a proof that the new total complexity of our algorithm is O(r7).