Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
62 views
# Fermat Curves X^m+Y^m=1 for higher genus g=(m-1)(m-2)/2 # Computing the number of points N(Fp^s) over higher dimensional finite fields # def NsFCm(p,n,m): # X^m+Y^m=1 over Fp^n, where p prime and n integer N=0; q=p^n; K=GF(q,'a') for x in K: for y in K: f=x^m+y^m-1 # print f if f==0: N+=1; # print "N=", N return N # do NOT add points at infinity here! # End procedure
# test Fermat Curve X^3+Y^3=1 p=7; m=3; max=3 # prime p, expeonent m, s<=max N=[0 for k in range(max)] for k in range(max): s=k+1 # dimension of Fp^s over Fp N[k]=NsFCm(p,s,m) # number of finite solutions print "p=", p, " max s=", max, " N(Fp^s)=", N
p= 7 max s= 3 N(Fp^s)= [6, 60, 321]
# Checking the formula for AFFINE points N_aff(s)=N_proj-m # since m is odd, so -1=(-1)^m and (X/Y)^m=-1 has m|p-1 solutions # # N_aff(s)=p^s+(1-m) - w^s - w*^s # # For m=3 N1=p-2+A, A=2 Re(J(c,c)) # For p=7: N1=6 => A=N1-p+2=1 => Re(J)=1/2 # Predictions of number of affine points: # with w=-J, N(s)=p^s-2-w^s-w*^s # ... but we need J!
# Computing Jacobi sum J(c,c) for character of order m G=DirichletGroup(p); G gen=G[1]; gen # generator of group of multiplicative characters c=gen^ZZ((p-1)/m); c print "Order:", c.order() J=c.jacobi_sum(c); J A=J+conjugate(J); print "A=",A
Group of Dirichlet characters of modulus 7 over Cyclotomic Field of order 6 and degree 2 Dirichlet character modulo 7 of conductor 7 mapping 3 |--> zeta6 Dirichlet character modulo 7 of conductor 7 mapping 3 |--> zeta6 - 1 Order: 3 -3*zeta6 + 2 A= 1
# A is "ok" ... Now raise w to power s ... w1=-J; w2=conjugate(w1) # J from above! print "Weil zeros: w1=", w1, " w2=", w2 for k in range(max): s=k+1 # s=1 ... max print "s=", s, " N(s)=", p^s-2-w1^s-w2^s
Weil zeros: w1= 3*zeta6 - 2 w2= -3*zeta6 + 1 s= 1 N(s)= 6 s= 2 N(s)= 60 s= 3 N(s)= 321
# Success! Counting the number of points and computing N(s) coincide.
# The Zeta Function= P(t) / Q(t) for the Fermat Cubic x^3+y^3=1 # Whatever K was defined above ... p=7; L=CyclotomicField(p-1) # Where Jacobi sums and Weil zeros "live" R.<t>= L["t"]; R WBP=(1-w1*t)*(1-w2*t); WBP # Weil-Betti polynomial (for m=3) WBQ=(1-t)*(1-p*t); WBQ # Typical denominator for genus g=1 print "Zeta function=", WBP/WBQ
Univariate Polynomial Ring in t over Cyclotomic Field of order 6 and degree 2 7*t^2 + t + 1 7*t^2 - 8*t + 1 Zeta function= (7*t^2 + t + 1)/(7*t^2 - 8*t + 1)
# Success! recovering p & A=2 Re(J) from Weil zeros from the formula giving N(s) # ****************************************************************************** ︠b8eefe3c-496f-44d7-8bb1-049e65600b56︠ # Other primes: p=61 & 67 (p.95 & 97) # # Other exponents: m=5, 7, etc & p=me+1 ...