Computing modular polynomials in quasi-linear time
Andreas Enge · Mathematics of Computation · 2009
We analyse and compare the complexity of several algorithms for computing modular polynomials. Under the assumption that rounding errors do not influence the correctness of the result, which appears to be satisfied in practice, we show that an algorithm relying on floating point evaluation of modular functions and on interpolation has a complexity that is up to logarithmic factors linear in the size of the computed polynomials. In particular, it obtains the classical modular polynomial Φ ℓ \Phi _\ell of prime level ℓ \ell in time \[ O ( ℓ 2 log 3 ℓ M ( ℓ ) ) ⊆ O ( ℓ 3 log 4 + ε ℓ ) , O \left (\ell ^2 \log ^3 \ell M (\ell ) \right ) \subseteq O \left ( \ell ^3 \log ^{4 + \varepsilon }\ell \right ), \] where M ( ℓ ) M(\ell ) is the time needed to multiply two ℓ \ell -bit numbers. Besides treating modular polynomials for Γ 0 ( ℓ ) \Gamma ^0 (\ell ) , which are an important ingredient in many algorithms dealing with isogenies of elliptic curves, the algorithm is easily adapted to more general situations. Composite levels are handled just as easily as prime levels, as well as polynomials between a modular function and its transform of prime level, such as the Schläfli polynomials and their generalisations. Our distributed implementation of the algorithm confirms the theoretical analysis by computing modular equations of record level around 10000 10000 in less than two weeks on ten processors.