isogeny_working_version_1_1

336 days ago by arabindr

x = var('x') K.<a> = NumberField(x^2 - x -1) K import psage.modform.hilbert.sqrt5.tables as sqrt5 
       
def ap(E,p): return E.change_ring(p.residue_field()).trace_of_frobenius() R.<x> = GF(2)[] def frob(E,p): t = ap(E,p) return x^2 - ap(E, p)*x + int(p.norm()) def disc(E, p): t = ap(E, p) return t^2 - 4*p.norm() def isogeny_primes(E, norm_bound, isog_degree_bound): P = [p for p in sqrt5.ideals_of_bounded_norm(norm_bound) if p.is_prime() and E.has_good_reduction(p)] w = set(primes(isog_degree_bound+1)) i = 0 w.remove(2) while len(w) > 0 and i < len(P): d = disc(E, P[i]) w = [ell for ell in w if not (legendre_symbol(d,ell) == -1)] i = i +1 i = 0 while i < len(P): if frob(E,P[i]).is_irreducible(): break i = i+1 if i == len(P): w.insert(0,2) return w 
       
time isogeny_primes(EllipticCurve(K, [1,a+1,a,a,0]), 20, 50) 
       
[2]
Time: CPU 1.44 s, Wall: 1.44 s
[2]
Time: CPU 1.44 s, Wall: 1.44 s
time isogeny_primes(EllipticCurve(K, [0,-a,a,0,0]), 200, 1000) 
       
[7]
Time: CPU 1.28 s, Wall: 1.28 s
[7]
Time: CPU 1.28 s, Wall: 1.28 s
time isogeny_primes(EllipticCurve(K, [0,a,1,1,0]), 200, 1000) 
       
[5]
Time: CPU 1.32 s, Wall: 1.32 s
[5]
Time: CPU 1.32 s, Wall: 1.32 s
time isogeny_primes(EllipticCurve(K, [0,a,1,1,0]), 200, 1000) 
       
[5]
Time: CPU 1.28 s, Wall: 1.28 s
[5]
Time: CPU 1.28 s, Wall: 1.28 s
time isogeny_primes(EllipticCurve(K, [a,a+1,0,a+1,0]), 200, 1000) 
       
[2]
Time: CPU 1.75 s, Wall: 1.76 s
[2]
Time: CPU 1.75 s, Wall: 1.76 s
E = EllipticCurve(K, [a,-a,a+1,-5,-a+3]) L = [] M = [] for p in primes(100): t = K.primes_above(p) if E.has_good_reduction(t[0]) and norm(t[0]) <= 100: L = L + t j=0 while j < len(t): M.append(ap(E,t[j])) j +=1