Sparse Multivariate Hensel Lifting: A High-Performance Design and Implementation

  • Michael MonaganEmail author
  • Baris Tuncer
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 10931)


Our goal is to develop a high-performance code for factoring a multivariate polynomial in n variables with integer coefficients which is polynomial time in the sparse case and efficient in the dense case. Maple, Magma, Macsyma, Singular and Mathematica all implement Wang’s multivariate Hensel lifting, which, for sparse polynomials, can be exponential in n. Wang’s algorithm is also highly sequential.

In this work we reorganize multivariate Hensel lifting to facilitate a high-performance parallel implementation. We identify multivariate polynomial evaluation and bivariate Hensel lifting as two core components. We have also developed a library of algorithms for polynomial arithmetic which allow us to assign each core an independent task with all the memory it needs in advance so that memory management is eliminated and all important operations operate on dense arrays of 64 bit integers. We have implemented our algorithm and library using Cilk C for the case of two monic factors. We discuss details of the implementation and present experimental timing results.


Hensel lifting Polynomial factorization Cilk C 


  1. 1.
    Bernardin, L.: On bivariate Hensel lifting and its parallelization. In: Proceedings of ISSAC 1998, pp. 96–100. ACM Press (1998)Google Scholar
  2. 2.
    Frigo M., Leiserson C.E., Randall K.H.: The implementation of the Cilk-5 multithreaded language. In: Proceedings of PLDI 1998, pp. 212–223. ACM (1998)Google Scholar
  3. 3.
    Geddes, K.O., Czapor, S.R., Labahn, G.: Algorithms for Computer Algebra. Kluwer Academic, Boston (1992). ISBN: 0-7923-9259-0CrossRefGoogle Scholar
  4. 4.
    Hu J., Monagan M.: A fast parallel sparse polynomial GCD algorithm. In: Proceedings of ISSAC 2016, pp. 271–278. ACM (2016)Google Scholar
  5. 5.
    Kaltofen, E.: Sparse Hensel lifting. In: Caviness, B.F. (ed.) EUROCAL 1985. LNCS, vol. 204, pp. 4–17. Springer, Heidelberg (1985). Scholar
  6. 6.
    Monagan, M., Tuncer, B.: Using sparse interpolation in Hensel lifting. In: Gerdt, V.P., Koepf, W., Seiler, W.M., Vorozhtsov, E.V. (eds.) CASC 2016. LNCS, vol. 9890, pp. 381–400. Springer, Cham (2016). Scholar
  7. 7.
    Wang, P.S., Rothschild, L.P.: Factoring multivariate polynomials over the integers. Math. Comput. 29(131), 935–950 (1975)MathSciNetCrossRefGoogle Scholar
  8. 8.
    Wang, P.S.: An improved multivariate polynomial factoring algorithm. Math. Comput. 32(144), 1215–1231 (1978)MathSciNetCrossRefGoogle Scholar
  9. 9.
    Zippel, R.E.: Newton’s iteration and the sparse Hensel algorithm. In: Proceedings of SYMSAC 1981, pp. 68–72. ACM (1981)Google Scholar
  10. 10.
    Zippel, R.E.: Interpolating polynomials from their values. J. Symbolic Comput. 9(3), 375–403 (1990)MathSciNetCrossRefGoogle Scholar

Copyright information

© Springer International Publishing AG, part of Springer Nature 2018

Authors and Affiliations

  1. 1.Department of MathematicsSimon Fraser UniversityVancouverCanada

Personalised recommendations