supplemental.py

back to table · edit · history · where entries came from · files · download

1017 bytes, as of the version from 2026-11-02 11:04 (current). Recorded here, not run.

"""Exact input and modular-form normalization checks for T658."""
import json
import numberdb.sage as numberdb
from sage.libs.pari import pari
from sage.rings.rational_field import QQ
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
R=PolynomialRing(QQ,'z');z=R.gen()
for a,b,c,d in [(4,2,8,4),(8,4,16,16)]:
 for sign in [1,-1]:
  k=a+sign*b*z
  assert (k*k-c*k-d)%(z*z-5)==0
print(json.dumps({'check':'both exact quadratic minimal-polynomial identities','passed':True}))
for N,ainvs,factors in [(14,[1,0,1,4,-6],[(1,1),(2,1),(7,1),(14,1)]),(20,[0,0,0,-108,297],[(2,2),(10,2)]),(36,[0,0,0,0,1],[(6,4)])]:
 assert sum(d*e for d,e in factors)==24
 coeff=[1]+[0]*79
 for d,e in factors:
  for n in range(1,80//d+1):
   step=n*d
   for _ in range(e):
    for j in range(79,step-1,-1):coeff[j]-=coeff[j-step]
 E=pari(ainvs).ellinit()
 assert list(map(int,E.ellan(80)))==coeff
 print(json.dumps({'check':'elliptic model agrees with cited eta product through q^80','conductor':N,'passed':True}))