Finding Roots of Polynomials
Once a Hilbert polynomial has been computed, a root in must be found. It will be used as the -invariant when constructing an elliptic curve. We discuss one method for finding roots of a polynomial in a given finite field below.
Squarefree Factorization
Usually the first step is to remove factors so that the polynomial is squarefree, but this is unnecessary if we only want the roots because the method we use for extracting the degree 1 factors automatically removes repeated roots. For completeness we describe how to make a polynomial squarefree in general.
In a field of characteristic 0, a squarefree version of can be obtained by computing .
In a field of characteristic however, a polynomial satisfies precisely when for some polynomial . Thus if it is known that the degree of is less than we may use the same algorithm unchanged.
Otherwise we proceed as follows. Write such that any factor of appears less than times. TODO (See Ersin Karabudak's notes .)
Distinct Degree Factorization
In general, the next step is to factorize as
where each is a product of irreducible polynomials of degree . Then the Cantor-Zassenhaus algorithm is applied to each in turn to determine the individual factors.
As we only care about the roots, we only need . This is precisely since is the product of all irreducible polynomials of degree 1. By repeated squaring can be computed efficiently.
The Cantor-Zassenhaus Algorithm
An algorithm of Cantor and Zassenhaus factorizes any polynomial whose irreducible factors have the same degree. We only need a special case. Suppose is a degree polynomial that splits in our field. (See Ersin Karabudak's notes .)
-
Select a random polynomial of degree less than .
-
If then return the result.
-
Compute . Then is a proper factor with probability .
-
Repeat until successful.
Irreducible Polynomials
On a related note, a polynomial of degree is irreducible if and only if
-
-
For all primes dividing ,