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. 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:
-
Compute .
-
If , write , replace with and goto step 1, otherwise replace with and goto step 1.
Distinct Degree Factorization
The next step is to factorize as
where each is a product of irreducible polynomials of degree .
As we only care about the roots, we only need . This is precisely since is the product of all irreducible polynomials of degree 1. Use repeated squaring to efficiently compute the latter polynomial.
In general, observe that if is an irreducible polynomial of degree then is a field of degree . Suppose we have . Since every element of the field has order , we see that . Hence is a factor of .
This suggests the following algorithm.
-
Compute .
-
Compute .
-
Compute .
…and so on until all factors are found.
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.
-
Select a random polynomial of degree less than .
-
If then return the result.
-
Compute . Then is a proper factor with probability .
-
Repeat until successful.
For completeness we describe how to proceed with the general case. First assume is odd. Then for any , consider the polynomial:
Each element of is a root, so divides this polynomial. Also, observe the right-hand side factors are mutually coprime. Since is squarefree and is a product of irreducible degree polynomials, using a fact from above gives:
This explains the above procedure.
When , define . Then for any we have
thus and we proceed as before.
Irreducible Polynomials
On a related note, a polynomial of degree is irreducible if and only if
-
-
For all primes dividing ,