{{{id=1| K.=NumberField(x^2-x-1) import nosqlite db=nosqlite.Client('/home/psharaba/table/ECdb').db /// }}} {{{id=2| def saturate_rank_01(E, sat_bound): v = E.simon_two_descent() t2 = E.two_torsion_rank() sel2 = v[1] rank_bound = sel2 - t2 #if rank_bound >1: # raise NotImplementedError if rank_bound == 0: return 0 Q = [p for p in v[2] if p.height()] M = [] for T in E.torsion_points(): Po = E(Q[0] - T) for p in prime_range(sat_bound): if len(Po.division_points(p)) != 0: print p M.append(Po.division_points(p)[0]) N = [(q.height(),q) for q in M] m = min(N) return m[1] def regulator_new(E,sat_bound): Q = saturate_rank_01(E, sat_bound) if Q: return Q.height()/2, [Q] else: return int(1), [] def conjectural_sha(E, reg, Lstar, omega): M = E.tamagawa_product_bsd() sha = RR(sqrt(5))*Lstar*(E.torsion_order())^2/((omega)*reg*M) return sha def comp(weq,lstar,omega): E=EllipticCurve(K,eval(weq)) R=regulator_new(E,10) #this is where one would change the value for saturation bound. Currently held at 10 Sha=conjectural_sha(E, R[0], lstar, omega) return R[0],Sha def rank_comp(ainv): E=EllipticCurve(K,eval(ainv)) T = E.torsion_subgroup() TI = T.invariants() t2 = len([a for a in TI if a%2 == 0]) simon = E.simon_two_descent() return simon[0],simon[1] - t2 /// }}} {{{id=4| broken2=[] temp=db('select weq1,rank, a_lbl,b_lbl from N1k') for r in range(len(temp)): rlow,rhi=rank_comp(temp[r][0]) if rlow==rhi: if rhi==temp[r][1]: pass else: print rlow, rhi, temp[r][1],temp[r][0], 'rank bounds agree, but rank does not' broken2.append((temp[r][0],temp[r][2], temp[r][3],temp[r][1], rlow, rhi, 'rank bounds agreed, but not with rank')) else: print r, rlow,rhi, temp[r][1], temp[r][0], 'rank bounds do not agree' broken2.append((temp[r][0], temp[r][2], temp[r][3], temp[r][1], rlow,rhi, 'rank bounds do not agree, look within isogeny')) print r /// WARNING: Output truncated! full_output.txt 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 0 2 0 [1,1,1,-2160,-39540] rank bounds do not agree 18 19 20 0 2 0 [1,a,a+1,-4976733*a-3075797,-6393196918*a-3951212998] rank bounds do not agree 20 21 0 2 0 [a,a+1,1,-4364*a-7739,-255406*a-296465] rank bounds do not agree 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 ... 874 0 2 0 [a+1,-a-1,1,-2268*a-2268,10875*a+8156] rank bounds do not agree 874 875 0 2 0 [a+1,-a-1,1,-1443*a-1443,-37245*a-27934] rank bounds do not agree 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 }}} {{{id=11| len(broken2) /// 38 }}} {{{id=10| for r in broken2: print r /// (u'[1,1,1,-2160,-39540]', u'45a', u'a7', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[1,a,a+1,-4976733*a-3075797,-6393196918*a-3951212998]', u'45a', u'a9', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[a,a+1,1,-4364*a-7739,-255406*a-296465]', u'45a', u'a10', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[a+1,-1,a+1,26638*a-43105,2494019*a-4035410]', u'99a', u'a6', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[a+1,1,a+1,205599*a-332667,53727699*a-86933245]', u'145a', u'b7', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[a+1,a,0,-3417*a-2143,-119535*a-73938]', u'205a', u'b6', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[a+1,0,1,-4704*a-2907,-188363*a-116415]', u'209b', u'c3', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[a,-a,a+1,2719*a-4427,-81534*a+131881]', u'220a', u'a3', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[a,a+1,0,-300414*a-185685,-95102489*a-58776542]', u'220a', u'a7', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[a+1,a,a+1,-400*a-400,-6044*a-4433]', u'225a', u'c9', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[1,a+1,a+1,262*a-437,2563*a-4183]', u'305a', u'a4', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[0,0,0,-107,-426]', u'320a', u'a5', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[0,0,0,-5241*a-3254,-218784*a-135242]', u'320a', u'a7', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[0,0,0,35967*a-58198,3926128*a-6352610]', u'320a', u'a8', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[0,-a+1,0,2772*a-4480,85404*a-138192]', u'320a', u'b6', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[0,a,0,-2772*a-1708,-85404*a-52788]', u'320a', u'c6', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[a,a+1,1,257*a-431,2489*a-4075]', u'369a', u'b3', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[a,a-1,1,18794*a-30410,1473480*a-2384141]', u'380a', u'b3', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[a+1,0,0,413*a-663,6942*a-10331]', u'396a', u'a5', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[1,0,0,-784,-8515]', u'441a', u'a6', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[a,-1,a,84266*a-136347,14053713*a-22739386]', u'445a', u'b4', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[a+1,a-1,a+1,-12273*a-7584,772903*a+477680]', u'495a', u'b3', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[a+1,0,0,1919*a-3122,48680*a-78800]', u'495a', u'b5', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[1,-a+1,a,390*a-383,1768*a-5423]', u'495a', u'b7', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[a,0,0,211264*a-341872,55903043*a-90453129]', u'495a', u'b8', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[a,a,a,13*a-22,-31*a+49]', u'539a', u'a1', 0, 1, 1, 'rank bounds agreed, but not with rank') (u'[a,1,a,1797*a-2912,44574*a-72128]', u'545a', u'a3', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[0,-1,0,-384,-2772]', u'576a', u'a5', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[1,a-1,a+1,-5574*a-3520,-243182*a-150513]', u'605a', u'b6', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[a+1,1,1,3387*a-5493,114900*a-185944]', u'725a', u'c7', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[1,1,a+1,-3413*a-2108,-116137*a-71773]', u'775a', u'f6', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[a,-1,a,142*a-237,-1049*a+1703]', u'781a', u'a1', 1, 0, 0, 'rank bounds agreed, but not with rank') (u'[a+1,-a-1,a,-273*a-216,2921*a+1936]', u'781a', u'a2', 1, 0, 0, 'rank bounds agreed, but not with rank') (u'[a,1,a+1,-220475*a-136262,59462360*a+36749759]', u'781a', u'a3', 1, 0, 0, 'rank bounds agreed, but not with rank') (u'[a+1,-a-1,a,-283*a-201,2861*a+2009]', u'781a', u'a4', 1, 0, 0, 'rank bounds agreed, but not with rank') (u'[1,a,a,-1033*a-654,-19938*a-12360]', u'855a', u'd5', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[a+1,-a-1,1,-2268*a-2268,10875*a+8156]', u'900a', u'a7', 0, 0, 2, 'rank bounds do not agree, look within isogeny') (u'[a+1,-a-1,1,-1443*a-1443,-37245*a-27934]', u'900a', u'a8', 0, 0, 2, 'rank bounds do not agree, look within isogeny') }}} {{{id=13| E=EllipticCurve(K,[a,-1,a,-2*a,a-1]) v=E.simon_two_descent() Q = [p for p in v[2] if p.height()] Q /// [] }}} {{{id=14| db.N1k.update({'rank':int(1)},weq1='[a,a,a,13*a-22,-31*a+49]') /// }}} {{{id=12| temp=db('select a_lbl,b_lbl,weq1, rank from N1k WHERE N=781 ORDER BY N,eta,R,V,U') for r in temp: print r /// (u'781a', u'a1', u'[a,-1,a,142*a-237,-1049*a+1703]', 0) (u'781a', u'a2', u'[a+1,-a-1,a,-273*a-216,2921*a+1936]', 0) (u'781a', u'a3', u'[a,1,a+1,-220475*a-136262,59462360*a+36749759]', 0) (u'781a', u'a4', u'[a+1,-a-1,a,-283*a-201,2861*a+2009]', 0) (u'781b', u'a1', u'[a,-1,a,-2*a,a-1]', 0) (u'781b', u'a2', u'[a,-1,a,3*a-10,4*a-8]', 0) (u'781b', u'a3', u'[a,-1,a,-2*a-50,-121*a+57]', 0) (u'781b', u'a4', u'[a,-1,a,88*a-130,401*a-661]', 0) (u'781b', u'b1', u'[1,0,a+1,-3*a-2,-3*a-2]', 1) (u'781b', u'b2', u'[1,0,a+1,-38*a-27,-143*a-91]', 1) }}} {{{id=6| temp=db('select weq1,L,omega, a_lbl, b_lbl from N1k') broken=[] for r in range(len(temp)): try: R,S=comp(temp[r][0], temp[r][1], temp[r][2]) if R<=0: broken.append((temp[r][0], temp[r][3], temp[r][4], 'R')) print 'regulator is zero or negative' if S<.5: broken.append((temp[r][0], temp[r][3], temp[r][4],'S')) print S, 'Sha value < .5' else: db.N1k.update({'Reg':float(R), 'Sha': float(S)}, weq1=temp[r][0]) except ValueError: broken.append((temp[r][0], temp[r][3], temp[r][4],'VE')) print 'ValueError occured' except IndexError: broken.append((temp[r][0], temp[r][3], temp[r][4], 'IE')) print 'IndexError occured' print r /// WARNING: Output truncated! full_output.txt 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 IndexError occured 18 19 IndexError occured 20 IndexError occured 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 ... 3 891 892 893 5 894 895 896 3 897 5 898 899 900 3 901 902 ValueError occured 903 ValueError occured 904 ValueError occured 905 ValueError occured 906 ValueError occured 907 IndexError occured 908 3 909 910 3 911 912 913 914 3 915 916 917 918 919 2 920 ValueError occured 921 922 923 924 925 926 ValueError occured 927 928 929 ValueError occured 930 ValueError occured 931 }}} {{{id=7| for r in broken: print r /// WARNING: Output truncated! full_output.txt (u'[1,1,1,-2160,-39540]', u'45a', u'a7', 'IE') (u'[1,a,a+1,-4976733*a-3075797,-6393196918*a-3951212998]', u'45a', u'a9', 'IE') (u'[a,a+1,1,-4364*a-7739,-255406*a-296465]', u'45a', u'a10', 'IE') (u'[a+1,-1,a+1,26638*a-43105,2494019*a-4035410]', u'99a', u'a6', 'IE') (u'[a+1,1,a+1,205599*a-332667,53727699*a-86933245]', u'145a', u'b7', 'IE') (u'[0,a+1,1,a,0]', u'199a', u'a1', 'VE') (u'[0,a+1,1,-9*a,-16*a-15]', u'199a', u'a2', 'VE') (u'[0,-a-1,1,-28663*a-17718,-2768362*a-1710944]', u'199a', u'a3', 'VE') (u'[a+1,a,0,-3417*a-2143,-119535*a-73938]', u'205a', u'b6', 'IE') (u'[a+1,a+1,a+1,6*a-5,-a+8]', u'209b', u'a2', 'VE') (u'[a+1,0,1,-4704*a-2907,-188363*a-116415]', u'209b', u'c3', 'IE') (u'[a,-a,a+1,2719*a-4427,-81534*a+131881]', u'220a', u'a3', 'IE') (u'[a,a+1,0,-300414*a-185685,-95102489*a-58776542]', u'220a', u'a7', 'IE') (u'[a+1,a,a+1,-400*a-400,-6044*a-4433]', u'225a', u'c9', 'IE') (u'[a,-a,a+1,-2,-a]', u'239a', u'a1', 'VE') (u'[0,1,1,-1,0]', u'245a', u'a1', 'VE') (u'[0,1,1,9,1]', u'245a', u'a2', 'VE') (u'[0,1,1,-131,-650]', u'245a', u'a3', 'VE') (u'[1,-a,a+1,-a-1,0]', u'269a', u'a1', 'VE') (u'[1,-1,1,-6,-4]', u'289a', u'a2', 'VE') (u'[1,-1,1,-91,-310]', u'289a', u'a3', 'VE') (u'[1,-1,1,-1,-14]', u'289a', u'a4', 'VE') (u'[1,a+1,a+1,262*a-437,2563*a-4183]', u'305a', u'a4', 'IE') (u'[0,-1,a,0,0]', u'311a', u'a1', 'VE') (u'[1,a-1,a,-a,0]', u'319a', u'a1', 'VE') (u'[1,a-1,a,-11*a-5,15*a+9]', u'319a', u'a2', 'VE') (u'[a+1,0,1,-1,0]', u'319b', u'a1', 'VE') (u'[a+1,0,1,-5*a-6,6*a+2]', u'319b', u'a2', 'VE') (u'[1,-a+1,a+1,-673*a-421,10173*a+6278]', u'319b', u'a3', 'VE') (u'[a+1,0,1,-10*a-1,4*a-6]', u'319b', u'a4', 'VE') (u'[0,0,0,-107,-426]', u'320a', u'a5', 'IE') (u'[0,0,0,-5241*a-3254,-218784*a-135242]', u'320a', u'a7', 'IE') (u'[0,0,0,35967*a-58198,3926128*a-6352610]', u'320a', u'a8', 'IE') (u'[0,-a+1,0,2772*a-4480,85404*a-138192]', u'320a', u'b6', 'IE') (u'[0,a,0,-2772*a-1708,-85404*a-52788]', u'320a', u'c6', 'IE') (u'[a,-1,0,4*a-4,-3*a+4]', u'341a', u'a2', 'VE') (u'[1,0,a,-11*a-11,26*a+12]', u'356a', u'a2', 'VE') (u'[0,0,a+1,-a-1,0]', u'359a', u'a1', 'VE') (u'[0,a,a+1,-1,-a]', u'361b', u'a1', 'VE') (u'[0,a-1,a+1,273*a-445,-2773*a+4482]', u'361b', u'a2', 'VE') (u'[a,a+1,1,257*a-431,2489*a-4075]', u'369a', u'b3', 'IE') (u'[a,a-1,1,18794*a-30410,1473480*a-2384141]', u'380a', u'b3', 'IE') (u'[a+1,0,0,413*a-663,6942*a-10331]', u'396a', u'a5', 'IE') (u'[1,-a,1,0,0]', u'401a', u'a1', 'VE') (u'[1,-a-1,0,-a-1,3*a+2]', u'404a', u'a1', 'VE') (u'[1,a+1,a+1,a,0]', u'409a', u'a1', 'VE') (u'[1,-a,1,a-1,0]', u'419a', u'b1', 'VE') (u'[0,-a+1,a,-a,0]', u'431a', u'a1', 'VE') (u'[1,0,0,-784,-8515]', u'441a', u'a6', 'IE') (u'[a+1,-1,a+1,-2*a-2,-a]', u'445a', u'a1', 'VE') (u'[a+1,-1,a+1,-7*a-7,-12*a-8]', u'445a', u'a2', 'VE') (u'[a,a+1,1,134*a-214,902*a-1462]', u'445a', u'a3', 'VE') (u'[a+1,-1,a+1,-112*a-62,-661*a-420]', u'445a', u'a4', 'VE') (u'[a,-1,a,84266*a-136347,14053713*a-22739386]', u'445a', u'b4', 'IE') (u'[0,a,a,a+1,0]', u'451a', u'a1', 'VE') (u'[0,a-1,0,-a-1,1]', u'464a', u'a1', 'VE') (u'[0,a-1,0,-6*a-1,-7*a-3]', u'464a', u'a2', 'R') (u'[0,a-1,0,-6*a-1,-7*a-3]', u'464a', u'a2', 'S') (u'[a,a,a,a-1,0]', u'495a', u'a1', 'VE') ... (u'[0,0,0,-63*a-7,-480*a-306]', u'704a', u'b6', 'VE') (u'[0,a-1,a,-a+1,-1]', u'711a', u'b1', 'VE') (u'[0,a-1,a+1,148*a-246,-1151*a+1868]', u'725a', u'b1', 'VE') (u'[0,a,a+1,2*a+2,-a]', u'725a', u'b2', 'VE') (u'[a+1,1,1,3387*a-5493,114900*a-185944]', u'725a', u'c7', 'IE') (u'[0,0,1,-30,63]', u'729a', u'a1', 'VE') (u'[0,0,1,0,0]', u'729a', u'a2', 'VE') (u'[0,0,1,0,-7]', u'729a', u'a3', 'VE') (u'[0,0,1,-270,-1708]', u'729a', u'a4', 'IE') (u'[1,-1,a,a-3,-2*a+3]', u'729a', u'b1', 'VE') (u'[a,-a-1,a,-32*a-17,-78*a-48]', u'729a', u'b2', 'R') (u'[a,-a-1,a,-32*a-17,-78*a-48]', u'729a', u'b2', 'S') (u'[a,-a-1,a+1,4*a-8,-7*a+10]', u'739a', u'a1', 'VE') (u'[1,0,a+1,-a,-a]', u'755a', u'b1', 'VE') (u'[1,0,a+1,4*a-5,7*a-15]', u'755a', u'b2', 'IE') (u'[a+1,0,0,a-1,0]', u'769a', u'a1', 'VE') (u'[1,-a+1,a,-12*a-5,-19*a-11]', u'769a', u'a2', 'VE') (u'[0,a,a,11*a-30,-37*a+71]', u'775a', u'a1', 'VE') (u'[0,a,a,a,0]', u'775a', u'a2', 'VE') (u'[0,1,a,-3,a-1]', u'775a', u'b1', 'R') (u'[0,1,a,-3,a-1]', u'775a', u'b1', 'S') (u'[1,1,a+1,-3413*a-2108,-116137*a-71773]', u'775a', u'f6', 'IE') (u'[1,a,1,-1,0]', u'779b', u'a1', 'VE') (u'[1,0,a+1,-3*a-2,-3*a-2]', u'781b', u'b1', 'VE') (u'[1,0,a+1,-38*a-27,-143*a-91]', u'781b', u'b2', 'VE') (u'[a,-a-1,a,5*a-6,4*a-7]', u'809a', u'a2', 'VE') (u'[a,0,a,-a-1,0]', u'811a', u'a1', 'VE') (u'[1,a+1,0,2*a-1,1]', u'820a', u'a1', 'VE') (u'[1,a+1,0,12*a-31,-34*a+63]', u'820a', u'a2', 'VE') (u'[a,1,a+1,-a,-a]', u'829a', u'a1', 'VE') (u'[a+1,-1,0,-2*a,a]', u'829a', u'b1', 'VE') (u'[a,-a+1,a,23*a-39,-55*a+88]', u'829a', u'c1', 'VE') (u'[a+1,-a,a,-164*a-107,-1237*a-753]', u'829a', u'c2', 'VE') (u'[1,-a+1,0,23*a-47,-69*a+102]', u'836b', u'a2', 'VE') (u'[1,-a+1,0,373*a-757,-5395*a+8016]', u'836b', u'a3', 'VE') (u'[a,a-1,a+1,-7*a-5,6*a+4]', u'855a', u'a1', 'VE') (u'[a,a-1,a+1,-2*a,-a-1]', u'855a', u'a2', 'VE') (u'[a,a-1,a+1,-97*a-80,588*a+337]', u'855a', u'a3', 'VE') (u'[1,-a,0,39*a-63,-126*a+207]', u'855a', u'a4', 'VE') (u'[1,a,a,-1033*a-654,-19938*a-12360]', u'855a', u'd5', 'IE') (u'[a+1,-a+1,1,a-3,1]', u'869a', u'a1', 'VE') (u'[a+1,a+1,1,-5*a-4,-8*a-3]', u'899b', u'a2', 'VE') (u'[a+1,-a-1,1,-2268*a-2268,10875*a+8156]', u'900a', u'a7', 'IE') (u'[a+1,-a-1,1,-1443*a-1443,-37245*a-27934]', u'900a', u'a8', 'IE') (u'[0,-a,a+1,-7*a-3,12*a+10]', u'905a', u'a1', 'VE') (u'[0,-a,a+1,213*a-463,1401*a-4842]', u'905a', u'a2', 'IE') (u'[0,-a+1,a+1,0,-a]', u'905a', u'b1', 'VE') (u'[a,-a+1,1,0,0]', u'909a', u'a1', 'VE') (u'[a+1,-a,a,1,0]', u'916a', u'a1', 'VE') (u'[a,0,a+1,-a-1,-a]', u'919a', u'a1', 'VE') (u'[a+1,-a,0,7*a-23,-24*a+20]', u'961b', u'a1', 'VE') (u'[1,0,0,-594*a-390,-8580*a-5345]', u'961b', u'a2', 'VE') (u'[a+1,-a,0,1017*a-1853,21096*a-35088]', u'961b', u'a3', 'VE') (u'[a,0,0,-66265*a-40952,-9832128*a-6076598]', u'961b', u'a4', 'VE') (u'[a+1,-a,0,652*a-2048,27054*a-32629]', u'961b', u'a5', 'VE') (u'[1,a,a+1,834227*a-1349799,438442396*a-709414712]', u'961b', u'a6', 'IE') (u'[a+1,-a+1,a,3*a-7,6]', u'979b', u'a2', 'VE') (u'[a+1,1,1,0,0]', u'991a', u'a1', 'VE') (u'[a,-1,1,-1,0]', u'995a', u'a1', 'VE') (u'[a,-1,1,5*a-16,16*a-18]', u'995a', u'a2', 'VE') }}} {{{id=8| len(broken) /// 168 }}} {{{id=9| /// }}}