HenselFactorize - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim





factorize a univariate polynomial over power series


Calling Sequence






Calling Sequence


HenselFactorize(u, lcopt)




univariate polynomial over power series generated by this package



(optional) equation of the form returnleadingcoefficient = r, where returnleadingcoefficient is a literal keyword and r is one of the values true, false, or automatic



The command HenselFactorize(u) factorizes u over the ring of power series of the coefficients of u and returns the factors as a list. The factors may not be linear, since u is not factored over the field of Puiseux series of the coefficients of u. For Puiseux factorization, see PuiseuxFactorize.


There are two requirements on u for HenselFactorize to succeed in factorizing u. If either of these requirements is not met, an error is signaled.


The leading coefficient pn of u (the power series that is the coefficient of the highest power of the main variable) must be invertible. That is, its constant term (the homogeneous part of pn of degree 0) must be nonzero.


Furthermore, for each power series p that is a coefficient of u, the constant coefficient of p (that is, the homogeneous part of degree 0) divided by the constant coefficient of pn must be an algebraic number. That is, the coefficient needs to be of type algnum, either immediately or after applying convert/RootOf. These coefficients are exactly the coefficients of the polynomial f returned by EvaluateAtOrigin(v) in the algorithm description below.


The command HenselFactorize(u) proceeds as follows.


For the first step, let pn be the leading coefficient of u (the power series that is the coefficient of the highest power of the main variable). Maple verifies if its analytic expression is known. If it is not known, or known to be different from 1, then we multiply u by the inverse of pn; let us call the result v. Otherwise (if pn is known to be equal to 1), v is defined to be equal to u. See also the discussion of the returnleadingcoefficient option below.


In the second step, the polynomial f returned by EvaluateAtOrigin(v) is factored over the algebraic numbers.


Finally, each of the factors of f is lifted in turn, by repeated calls to the commands TaylorShift and WeierstrassPreparation.


The command HenselFactorize(u) is based on lazy evaluation techniques. To be precise, this command returns as soon as the factors of f are computed and all coefficients (which are power series) of the factors of u are initialized (that is, once their generators are determined).


Since it is really v that is factored in the second and third steps of the algorithm below, and v and u differ by a factor of pn (the leading coefficient of u), it is necessary to include a factor corresponding to pn in order to obtain factors that multiply together to u. The returnleadingcoefficient option determines whether pn, investigated and potentially used in the first step of the algorithm, is returned with the other factors. In all cases, if pn is returned, it is converted to a univariate polynomial over power series with the same main variable as u in order to match the type of the other factors; of necessity, it is a constant polynomial, because it does not depend on the main variable (it is, after all, a coefficient of the main variable in u).


If the option returnleadingcoefficient = true is included, then pn is always returned as the first entry in the resulting list of factors, even if it is equal to 1.


If the option returnleadingcoefficient = false is included, then pn is always omitted from the resulting list of factors, even if it is different from 1. In this case, the resulting list of factors will contain only univariate polynomials over power series of positive degree in the main variable.


By default (or if this behavior is selected explicitly by including the option returnleadingcoefficient = automatic), pn is returned as the first entry of the resulting list of factors only if it is not known to be equal to 1, and omitted otherwise.



The functions ExtendedHenselConstruction and PuiseuxFactorize both factorize a univariate polynomial over the field of univariate Puiseux series into linear factors, thus into irreducible factors. The ExtendedHenselConstruction can also factorize a univariate polynomial over multivariate Puiseux series into linear factors. In contrast, the HenselFactorize command only lifts the initial factors of the input polynomial over the ring of power series y, thus the factors may not be linear and, hence, may not be irreducible over the field of univariate Puiseux series.


This command is supported for univariate polynomials over power series, but not for univariate polynomials over Puiseux series.


When using the MultivariatePowerSeries package, do not assign anything to the variables occurring in the power series, Puiseux series, and univariate polynomials over these series. If you do, you may see invalid results.



We define a univariate polynomial over power series, f, and determine its Hensel factorization. It factors into linear factors.



FUnⅈvarⅈatⅇPolynomⅈalOvⅇrPowⅇrSⅇrⅈⅇs: −1++1z,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPowⅇrSⅇrⅈⅇs: −2++1z,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPowⅇrSⅇrⅈⅇs: −3++1z


We can see more terms of the factors as follows.


UnⅈvarⅈatⅇPolynomⅈalOvⅇrPowⅇrSⅇrⅈⅇs: −1+x3x2+27x32291x44+3465x58++1z

UnⅈvarⅈatⅇPolynomⅈalOvⅇrPowⅇrSⅇrⅈⅇs: −26x30x2402x35610x493390x5++1z

UnⅈvarⅈatⅇPolynomⅈalOvⅇrPowⅇrSⅇrⅈⅇs: −3+6x+33x2+777x32+22731x44+743655x58++1z


We define a new univariate polynomial over power series, g. Its Hensel factorization has a linear and a quadratic factor.



GUnⅈvarⅈatⅇPolynomⅈalOvⅇrPowⅇrSⅇrⅈⅇs: 0++0+z+1z2,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPowⅇrSⅇrⅈⅇs: 1++1z



UnⅈvarⅈatⅇPolynomⅈalOvⅇrPowⅇrSⅇrⅈⅇs: x2+y2x2yy3x4x2y2+4x4y+7x2y3+3y5++x2y2+2x2y+2y3+2x4+x2y2y410x4y16x2y36y5+z+1z2

UnⅈvarⅈatⅇPolynomⅈalOvⅇrPowⅇrSⅇrⅈⅇs: 1+y+x2+y22x2y2y32x4x2y2+y4+10x4y+16x2y3+6y5++1z


The two examples above have leading coefficients that are known to be equal to 1. The case below has a leading coefficient equal to ⅇx (an invertible power series). Its Hensel factorization has a linear and a quadratic factor, and the leading coefficient is also included as a factor.


aPowⅇrSⅇrⅈⅇs of ⅇx : 1+



bPowⅇrSⅇrⅈⅇs of 21x1y : 2+



cPowⅇrSⅇrⅈⅇs of cosx : 1+



dPowⅇrSⅇrⅈⅇs of sinx : 0+



hUnⅈvarⅈatⅇPolynomⅈalOvⅇrPowⅇrSⅇrⅈⅇs: 0++1+z+2+z2+1+z3



HUnⅈvarⅈatⅇPolynomⅈalOvⅇrPowⅇrSⅇrⅈⅇs: 1+,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPowⅇrSⅇrⅈⅇs: 0++1z,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPowⅇrSⅇrⅈⅇs: 1++2+z+1z2



UnⅈvarⅈatⅇPolynomⅈalOvⅇrPowⅇrSⅇrⅈⅇs: 1+x+x22+x36+x424+x5120+

UnⅈvarⅈatⅇPolynomⅈalOvⅇrPowⅇrSⅇrⅈⅇs: x+2x2+28x33+2x2y+148x43+18x3y+2x2y2+4282x515+439x4y3+26x3y2+2x2y3++1z

UnⅈvarⅈatⅇPolynomⅈalOvⅇrPowⅇrSⅇrⅈⅇs: 13x3x22xy46x332xy28x2y473x46155x3y32xy312x2y226779x560352x4y311x3y2316x2y32xy4++2+2yxx2+2y226x33x2y+2y3583x41252x3y3x2y2+2y44271x5151747x4y1276x3y23x2y3+2y5+z+1z2


The first entry of the factorization is a, the leading coefficient of h. It is represented as a trivial univariate polynomial over power series.


PowⅇrSⅇrⅈⅇs of ⅇx : 1+x+x22+x36+x424+x5120+




Alexander Brandt, Mahsa Kazemi, Marc Moreno Maza. "Power Series Arithmetic with the BPAS Library." Computer Algebra in Scientific Computing (CASC), Lecture Notes in Computer Science. Vol. 12291 (2020): 108-128.


Mohammadali Asadi, Alexander Brandt, Mahsa Kazemi, Marc Moreno Maza, and Erik Postma. "Multivariate Power Series in Maple." Corless R.M., Gerhard J., Kotsireas I.S. (eds) Maple in Mathematics Education and Research. MC 2020. Communications in Computer and Information Science (CCIS), Vol. 1414 Springer (2021): 48-66.



The MultivariatePowerSeries[HenselFactorize] command was introduced in Maple 2021.


For more information on Maple 2021 changes, see Updates in Maple 2021.

See Also