仔细算算多项式模复合的复杂度
我们沿用 Kedlaya, Umans 的思路, 先把 \(N=d^m\), 然后拆成这个东西上求 \(Nd\) 个点值的问题.
初代机 (Kedlaya, Umans)
使用了传统的 CRT 约化, 复杂度可以大概写成 \(O(md\log d)^m\), 所以综合起来的复杂度大概就是
\[N \cdot \left(d + O(m\log d)^m \right),
\]
平衡大概需要 \(\log d = m\log \log N\), 由于 \(m = \log N /\log d\), 得到 \(\log d = \sqrt{\log N\log \log N}\), 也就是说第一代多点求值做多项式复合的复杂度大概是
\[N \exp O\left(\sqrt{\log N \log \log N}\right).
\]
根据 Hoeven 更加精甚细腻的计算, 这个 \(O\) 可以是,,,
\[N \exp \left(\sqrt{28\log N \log \log N}\left(1 + O\left(\frac{1}{\log \log N}\right)\right)\right).
\]
二号机 (Bhargava, Ghosh, Guo, Kumar, Umans)
复杂度可以大概写成 \(O(d)^m\), 所以综合起来的复杂度大概就是
\[N \cdot \left(d + O(1)^m \right),
\]
平衡需要 \(\log d = m\), 得到 \(\log d = \sqrt{\log N}\), 所以第二代多点求值做多项式复合的复杂度大概是
\[N \exp O\left(\sqrt{\log N}\right).
\]