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 < t
,t' < n
对于某个任意整数 n
然后只打印曲线使用 S(E, 50000) > 5
(t
和 t'
是独立的)。任何人都可以告诉我正确的代码吗?
谢谢。
如果我对问题的理解正确,下面的 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
表示变量 t
和 t'
的区间。我将 t
的上界设为 0,将 t'
的下界设为 0。
我将 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 < t
,t' < n
对于某个任意整数 n
然后只打印曲线使用 S(E, 50000) > 5
(t
和 t'
是独立的)。任何人都可以告诉我正确的代码吗?
谢谢。
如果我对问题的理解正确,下面的 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
表示变量 t
和 t'
的区间。我将 t
的上界设为 0,将 t'
的下界设为 0。