Mestre 的总和 PARI/GP

Mestre's sum with PARI/GP

我将 Mestre 的总和定义为:

S(E, N) = {
    my (s = 0.0);
    forprime(p = 2, N,
        my (a = ellap(E, p));
        s += (2-a) / (p+1-a)
    );

    return (s);
}

和定义的多项式 A(t)B(t) 我想计算上面的曲线总和:y^2 = x^3 + A(t)x^2 + B(t)x 对于一些 -700 < t < 700 然后打印它。所以我写道:

for(t = -700, 700, {
    E = ellinit([0, A(t), 0, B(t), 0]);
    if(E == [], , print(t, ": ", S(E, 50000)))
})

有效。现在我想对多项式 A(t, t')B(t, t') 做同样的事情,其中​​两个变量 -n < tt' < n 对于某个任意整数 n 然后只打印曲线使用 S(E, 50000) > 5tt' 是独立的)。任何人都可以告诉我正确的代码吗? 谢谢。

如果我对问题的理解正确,下面的 PARI/GP 代码应该适合你:

n = 100
forvec(P = [[-n, 0], [0, n]], {
    E = ellinit([0, A(P[1], P[2]), 0, B(P[1], P[2]), 0]);
    if (E == [], next());

    my (v = S(E, 50000));
    if (v > 5, print(P, ": ", v))
})

请注意,变量 P 表示变量 tt' 的区间。我将 t 的上界设为 0,将 t' 的下界设为 0。