Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gmcninch-tufts
GitHub Repository: gmcninch-tufts/2024-Sp-Math190
Path: blob/main/course-contents/notebooks/counting-points.ipynb
908 views
Kernel: SageMath 10.2
def test(q): k = GF(q) V = VectorSpace(k,4) R.<X,Y,Z,W> = PolynomialRing(k) F = lambda a: X*Y + Z^2 - a*W^2 def discSquare(a): if a in [ b^2 for b in k ]: return True else: return False def eval(F,v): return F(X=v[0],Y=v[1],Z=v[2],W=v[3]) def expect(a): if discSquare(a): return q^2 + 2*q + 1 else: return q^2 + 1 def count_sols(F): pts = [ v for v in V if eval(F,v)==0 and v != 0] return len(pts)/(q-1) return [ (discSquare(a),expect(a),count_sols(F(a))) for a in k if a !=0 ] test(9)
[(False, 82, 82), (True, 100, 100), (False, 82, 82), (True, 100, 100), (False, 82, 82), (True, 100, 100), (False, 82, 82), (True, 100, 100)]
ell.<z> = GF(7^4)
def trace(x): return sum([x^(p^i) for i in range(n)]) def is_square(x,k): if x in [ a^2 for a in k]: return True else: return False def M(p,n): ell.<z> = GF(p^n) M = MatrixSpace(ell,n).matrix([[trace(z^(i+j),p,n) for i in range(n) ] for j in range(n)]) return is_square(M.determinant(),ell) [ M(31,i) for i in range(1,5) ]
[True, True, True, True]
M
[3 1 1] [1 1 3] [1 3 6]
is_square(4,k)
True