aboutsummaryrefslogtreecommitdiff
path: root/divisibility_reductions
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2026-06-14 09:58:21 +0200
committerSebastiano Tronto <sebastiano@tronto.net>2026-06-14 09:58:21 +0200
commit5ea79c7ae0d44686f1df05c4a016652afbe58968 (patch)
tree05f6a052373f5fe0942777a48303b2f8b884cbe1 /divisibility_reductions
downloadkummer-notes-code-5ea79c7ae0d44686f1df05c4a016652afbe58968.tar.gz
kummer-notes-code-5ea79c7ae0d44686f1df05c4a016652afbe58968.zip
Initial commit
Diffstat (limited to 'divisibility_reductions')
-rwxr-xr-xdivisibility_reductions/1k-max3-posrank.sage1671
-rwxr-xr-xdivisibility_reductions/jumps.sage145
-rwxr-xr-xdivisibility_reductions/mod3mod9.sage10
-rwxr-xr-xdivisibility_reductions/test_div_1.sage223
4 files changed, 2049 insertions, 0 deletions
diff --git a/divisibility_reductions/1k-max3-posrank.sage b/divisibility_reductions/1k-max3-posrank.sage
new file mode 100755
index 0000000..9056405
--- /dev/null
+++ b/divisibility_reductions/1k-max3-posrank.sage
@@ -0,0 +1,1671 @@
1
2# Elliptic curves downloaded from the LMFDB downloaded on 30 January 2019.
3# Below is a list called data. Each entry has the form:
4# [a1,a2,a3,a4,a6] (Weierstrass Coefficients)
5
6
7data = [\
8[1,1,0,-82,-305],\
9[0,0,1,-1,0],\
10[0,0,0,1,6],\
11[0,1,0,0,4],\
12[1,1,1,-55,134],\
13[1,1,0,-6,4],\
14[1,0,1,1,0],\
15[1,1,0,1,1],\
16[1,1,0,-7,5],\
17[1,0,0,-1,2],\
18[1,-1,1,-2,0],\
19[0,1,1,-1,-1],\
20[0,-1,1,-1,-2],\
21[0,0,1,-3,0],\
22[0,0,1,-3,2],\
23[0,-1,1,2,-2],\
24[0,1,1,-12,2],\
25[0,1,0,0,1],\
26[0,1,0,2,0],\
27[1,1,0,3,-3],\
28[0,0,0,-1,1],\
29[0,-1,0,16,0],\
30[0,0,0,1,-1],\
31[0,-1,1,-19,39],\
32[0,-1,0,4,-8],\
33[1,1,1,-102,355],\
34[1,1,0,7,-9],\
35[0,1,1,-441,3422],\
36[1,0,0,-7,9],\
37[0,0,1,-21,40],\
38[0,0,0,-412,3316],\
39[0,-1,0,-9,13],\
40[0,1,0,-57,171],\
41[1,-1,1,25,-26],\
42[0,-1,0,3,-11],\
43[0,-1,0,3,-2],\
44[1,-1,0,13,-11],\
45[0,0,0,-7,-2],\
46[1,1,1,-39,-35],\
47[0,-1,1,19,100],\
48[1,-1,1,-7,8],\
49[1,0,1,-15,22],\
50[1,1,0,-33,61],\
51[1,-1,0,-15,-46],\
52[1,-1,0,-19,37],\
53[0,1,0,11,695],\
54[1,0,1,-7,14],\
55[0,1,0,3,11],\
56[1,0,1,-2,1],\
57[1,-1,1,-2,28],\
58[0,1,0,0,-1],\
59[0,0,1,-12,4],\
60[1,-1,0,21,53],\
61[1,-1,0,-935,11229],\
62[1,1,0,-2819,-58803],\
63[1,1,1,-784,8720],\
64[0,0,0,1,1],\
65[0,0,0,-8,16],\
66[1,1,1,-8,9],\
67[1,-1,0,12,-208],\
68[0,-1,0,-383,3012],\
69[0,1,0,6,-43],\
70[1,1,0,81,-27],\
71[0,-1,0,-10,17],\
72[0,1,1,1815,141239],\
73[1,-1,0,-2,1],\
74[1,-1,0,-4,-2],\
75[0,0,0,-6,5],\
76[1,-1,0,-18,36],\
77[0,-1,0,-13,25],\
78[0,-1,0,-12,24],\
79[0,-1,0,-80,304],\
80[0,0,0,-2,4],\
81[1,-1,1,8,-5],\
82[1,1,1,-9,7],\
83[0,-1,0,-544,-4352],\
84[1,-1,0,90,436],\
85[0,0,1,1,-8],\
86[1,1,1,-120,42282],\
87[1,1,1,9,13],\
88[1,0,0,-185,1401],\
89[0,1,1,-4,-2],\
90[1,1,1,-17,-70],\
91[0,0,0,2,1],\
92[1,1,0,-12,12],\
93[1,1,1,-18,415],\
94[0,-1,0,4,-3],\
95[1,-1,1,-374,2949],\
96[1,-1,1,-171,1904],\
97[1,-1,0,-1414,-44027],\
98[1,-1,1,-12,18],\
99[0,1,1,-1006,11952],\
100[0,0,1,-111,450],\
101[1,-1,0,0,2],\
102[0,1,0,-233,1563],\
103[0,0,0,-8,9],\
104[0,0,1,43,-2088],\
105[1,1,0,-1,-2],\
106[0,1,1,9,344],\
107[1,0,1,-1,1],\
108[0,0,0,-27,27],\
109[1,-1,1,2064,18771],\
110[0,1,1,-16649,821406],\
111[0,1,0,-11,11],\
112[0,0,1,-4,-3],\
113[1,0,1,-10758,428760],\
114[1,0,1,1,1],\
115[0,0,1,-12,9],\
116[0,0,1,242,-333],\
117[1,0,1,-722,7396],\
118[1,0,1,706,-64375],\
119[1,0,1,-17,56],\
120[1,0,1,31,20],\
121[1,-1,0,-3,-1],\
122[1,-1,0,-2430,46732],\
123[0,0,0,1468,-2844],\
124[1,-1,1,-11,27],\
125[1,0,1,6,1],\
126[0,1,0,1,2],\
127[0,-1,1,-2,2],\
128[0,-1,0,-4,5],\
129[0,0,0,-67,226],\
130[1,1,0,-59,-201],\
131[1,-1,0,-70,244],\
132[0,1,0,-1,1],\
133[0,0,1,-5,4],\
134[0,1,1,0,2],\
135[1,1,0,-512,4237],\
136[0,-1,1,1,-1],\
137[1,0,0,31,-192],\
138[0,0,1,-75,256],\
139[0,1,0,-1,31],\
140[0,-1,1,-4,-2],\
141[0,1,1,-10,10],\
142[1,0,1,2,0],\
143[0,-1,0,-432,-3316],\
144[1,1,1,2,-1],\
145[0,-1,1,-83,3818],\
146[1,0,1,-3,0],\
147[0,1,0,84,36],\
148[0,1,1,-156,700],\
149[1,1,1,-56,-135],\
150[0,-1,0,-1,2],\
151[0,-1,1,2,0],\
152[0,-1,1,1,0],\
153[1,1,1,13,177],\
154[1,0,0,-19,33],\
155[1,-1,0,-1,1],\
156[1,0,0,-5,4],\
157[0,0,1,-3,4],\
158[0,-1,0,8,-4],\
159[0,1,0,-3,-2],\
160[0,1,0,1,1],\
161[1,0,0,-1,0],\
162[0,0,0,-12,20],\
163[0,0,0,-2,0],\
164[1,0,0,-12,16],\
165[1,1,0,2,1],\
166[1,-1,1,0,0],\
167[0,-1,1,10,6],\
168[1,-1,0,-80,-256],\
169[0,-1,0,-16,29],\
170[1,0,0,-6,9],\
171[1,0,0,1,25],\
172[0,0,0,-584,5444],\
173[1,-1,0,1,-1],\
174[0,-1,1,-5,6],\
175[1,1,0,-794,8289],\
176[1,-1,0,1,1],\
177[1,0,0,-2,1],\
178[1,-1,0,12,35],\
179[1,0,0,-6,4],\
180[0,0,0,-55,157],\
181[1,0,0,-3,2],\
182[0,0,1,-81,290],\
183[1,1,1,-2,0],\
184[0,1,1,-100,406],\
185[1,1,0,-30,52],\
186[0,-1,0,0,1],\
187[1,-1,0,-20,40],\
188[0,1,0,-21,31],\
189[1,-1,0,0,4],\
190[0,0,1,-3,18],\
191[0,-1,0,55,93],\
192[1,1,1,6,7],\
193[0,0,1,-237,1404],\
194[1,0,0,-2,-1],\
195[1,1,0,2,2],\
196[1,1,0,-3,1],\
197[0,-1,0,-45,133],\
198[1,-1,1,-5,20],\
199[1,0,0,-3,-2],\
200[0,0,1,-3,-2],\
201[0,-1,0,4,4],\
202[1,0,1,1,-5],\
203[0,1,1,1,1],\
204[1,0,0,-213,-1208],\
205[1,1,1,-1,0],\
206[1,0,1,-23,39],\
207[0,1,1,-2376,-61851],\
208[0,-1,0,-21,49],\
209[1,-1,0,0,1],\
210[1,-1,0,-454,5812],\
211[1,-1,1,-12,15],\
212[0,-1,0,-8,16],\
213[0,-1,0,0,4],\
214[0,0,1,-9,10],\
215[0,1,0,-50,129],\
216[1,-1,1,-4,-1],\
217[1,0,0,-24,63],\
218[1,0,0,0,-1],\
219[1,-1,0,-5252,-145223],\
220[0,-1,1,-26,68],\
221[1,-1,1,-1487,-12905],\
222[0,0,0,5,10],\
223[1,-1,1,-2,82],\
224[0,0,1,-597,8820],\
225[0,-1,1,-52,-3863],\
226[0,-1,1,-3,2],\
227[1,0,0,-3,0],\
228[1,1,0,-35,-98],\
229[1,-1,0,-5,7],\
230[1,-1,1,-149,749],\
231[1,0,0,-28,-59],\
232[1,-1,1,-117,141],\
233[0,1,1,-8,8],\
234[0,0,0,-48,196],\
235[0,-1,0,2,1],\
236[1,1,1,-16,-15],\
237[1,1,0,-715,7069],\
238[0,-1,0,-1,197],\
239[0,1,0,-16,16],\
240[1,-1,1,-83,595],\
241[0,1,1,-2,-2],\
242[1,0,0,43,-31],\
243[1,1,1,79,335],\
244[1,-1,1,13,-12],\
245[1,-1,0,-29,-635],\
246[1,-1,0,-2846,59156],\
247[1,0,0,-350,2500],\
248[1,-1,0,1,-3],\
249[1,0,1,-80,-275],\
250[1,1,1,4,-1443],\
251[0,0,1,3,-4],\
252[1,0,1,-8,7],\
253[1,1,1,-5,11],\
254[1,0,1,-174,880],\
255[1,1,1,-3,0],\
256[1,-1,1,-61,197],\
257[1,-1,0,16,-10],\
258[0,-1,0,-3,4],\
259[0,1,0,-17,51],\
260[1,-1,1,318,-2367],\
261[1,0,1,-604,-5734],\
262[0,1,1,-11,-16],\
263[1,1,0,28,157],\
264[1,1,0,0,1],\
265[1,1,1,66,-5],\
266[0,0,0,-13,-18],\
267[0,0,1,175,-1344],\
268[1,-1,0,-107,454],\
269[1,-1,1,-2,-26],\
270[1,0,1,-32,-71],\
271[1,1,1,64,258],\
272[0,0,0,-17,27],\
273[1,1,0,-2,-2],\
274[0,-1,0,-1,-1],\
275[1,1,0,-97,281],\
276[0,0,1,-40,48],\
277[1,0,1,-44,-150],\
278[1,0,1,-9,28],\
279[1,0,0,-11,14],\
280[1,-1,0,11,-18],\
281[1,-1,1,1,-2],\
282[1,1,1,-56,1145],\
283[0,0,0,5,-6],\
284[1,-1,0,-153,4909],\
285[0,0,0,-8,4],\
286[0,1,0,8,89],\
287[1,0,1,0,-1],\
288[1,-1,1,22,105],\
289[1,1,1,-70,195],\
290[1,-1,1,-509,4677],\
291[1,-1,0,-9,-19],\
292[0,0,0,-4,4],\
293[1,-1,0,12,-19],\
294[1,-1,1,-9,9],\
295[1,-1,0,-9,-14],\
296[0,-1,0,-5,1],\
297[1,1,1,-12,45],\
298[0,-1,1,-7,10],\
299[0,1,0,-8,8],\
300[1,-1,1,12,87],\
301[1,1,1,1,0],\
302[0,0,0,5,42],\
303[0,-1,0,-4,8],\
304[1,1,0,25,-14],\
305[1,0,1,33924,-387702],\
306[1,0,1,-1,148],\
307[1,0,1,-4,-2],\
308[0,1,1,-269,1628],\
309[1,-1,0,1,5],\
310[0,1,1,-16,-66],\
311[1,1,0,-1693,26434],\
312[0,0,0,4,-4],\
313[0,1,0,-4,0],\
314[1,-1,0,-42,-127],\
315[1,1,0,-108,-432],\
316[1,-1,1,7,-7],\
317[0,0,1,-4,3],\
318[0,0,1,-808,8840],\
319[0,0,0,-192,1028],\
320[1,-1,0,-45,139],\
321[0,1,1,-179,881],\
322[0,1,1,0,0],\
323[0,0,0,-68,-236],\
324[0,-1,0,3,9],\
325[0,0,1,-8,-12],\
326[1,0,0,-267,1521],\
327[1,0,1,11,0],\
328[1,0,1,4,2],\
329[1,-1,1,-15,87],\
330[0,0,0,-56,-4848],\
331[0,0,0,-10,12],\
332[0,0,0,-5,4],\
333[1,1,0,-1,-1],\
334[0,0,0,8,4],\
335[1,1,1,0,-2],\
336[1,1,1,-26,39],\
337[1,0,0,-4,-5],\
338[0,-1,0,2,-7],\
339[0,-1,1,-1,1],\
340[0,1,1,-399,-3184],\
341[0,0,0,-484,-5324],\
342[0,0,1,1,0],\
343[0,1,0,-309,1991],\
344[1,-1,1,-48,147],\
345[1,-1,0,-5,-3],\
346[1,-1,0,18,202],\
347[0,0,0,-3,14],\
348[0,0,1,-2,1],\
349[1,0,1,170,-3237],\
350[0,-1,0,-23,51],\
351[1,0,0,-1,-64],\
352[0,1,0,-6,4],\
353[0,0,1,-10,12],\
354[1,1,0,2,4],\
355[1,-1,1,-28,63],\
356[0,-1,1,-6,8],\
357[0,1,0,160,3188],\
358[1,1,1,-5,0],\
359[0,1,1,7,2],\
360[1,-1,1,-57,222],\
361[1,1,0,-3,-9],\
362[1,0,0,-42,36],\
363[0,-1,1,-1,0],\
364[0,-1,0,-16,32],\
365[1,0,1,-44,106],\
366[0,-1,1,-8,-82],\
367[1,1,1,-118,418],\
368[0,-1,0,-140,753],\
369[1,0,1,-193,1012],\
370[0,1,0,-158,-812],\
371[1,-1,0,-2,2],\
372[0,1,0,-1,3],\
373[1,0,1,-48,-130],\
374[1,1,1,10,11],\
375[0,0,1,2,0],\
376[1,-1,0,-9,-54],\
377[0,-1,1,-5781,175862],\
378[1,1,0,52,-176],\
379[1,0,0,-120,576],\
380[1,1,0,-27,-59],\
381[0,0,0,-13,18],\
382[0,1,0,0,-76],\
383[1,1,1,-21,27],\
384[1,0,0,-36,81],\
385[1,0,0,-1415,20617],\
386[1,1,1,-861,9267],\
387[1,0,0,-247,809],\
388[0,-1,0,-6,9],\
389[0,0,0,32,-212],\
390[1,1,0,-8,6],\
391[0,1,0,-5,-1],\
392[1,1,1,-230,1251],\
393[1,-1,0,-5,6],\
394[0,0,0,4,4],\
395[1,-1,0,44,496],\
396[1,1,1,24,-23],\
397[1,1,0,-13,13],\
398[0,0,0,-3,34],\
399[1,1,0,-75,250],\
400[0,1,0,7,7],\
401[1,-1,1,0,3],\
402[0,1,1,-197,-208],\
403[0,0,1,-2,2],\
404[0,1,1,-42,110],\
405[0,1,1,-2,2],\
406[1,1,1,-7,-3],\
407[0,1,1,3,7],\
408[0,1,0,-2,9],\
409[0,-1,0,-1,5],\
410[1,1,1,-11,9],\
411[1,0,0,-1,9],\
412[0,-1,0,-3,3],\
413[0,-1,0,-33,85],\
414[0,0,0,-7,7],\
415[0,0,1,-2,-1],\
416[1,1,0,-22,-44],\
417[0,-1,1,-5,-16],\
418[0,0,1,6,13],\
419[0,1,1,-6,2],\
420[0,0,1,49,-86],\
421[1,1,1,-1001,12375],\
422[1,1,1,-21,-5],\
423[1,1,0,-2,-12],\
424[1,0,0,4,-3],\
425[0,1,1,-1,1],\
426[0,0,1,-38,90],\
427[1,-1,1,1,7],\
428[1,1,1,1,2],\
429[0,1,1,-310,3364],\
430[1,-1,1,-14,-16],\
431[1,-1,1,-2,2],\
432[0,-1,0,-221,-1191],\
433[1,1,1,1,5],\
434[1,1,0,-4,2],\
435[1,1,1,-539,4592],\
436[0,1,0,-5,7],\
437[1,1,1,-32,65],\
438[1,-1,1,-118,2693],\
439[1,-1,1,1,0],\
440[0,1,1,2,0],\
441[1,-1,1,-5,6],\
442[1,1,1,2,0],\
443[0,0,0,-48,-124],\
444[1,-1,0,-495,-4118],\
445[1,0,1,32,-210],\
446[0,-1,0,-45,25],\
447[1,-1,0,-2,4],\
448[1,0,1,-103,-406],\
449[0,1,0,8,4],\
450[1,-1,0,3,-10],\
451[1,1,1,-4,-4],\
452[1,-1,1,13,1235],\
453[1,-1,0,9,4],\
454[1,-1,0,3,0],\
455[0,-1,1,-10,16],\
456[0,1,0,-1621,24623],\
457[1,-1,1,-4,7],\
458[0,1,1,10,44],\
459[1,-1,0,-24990,1526804],\
460[0,0,0,-3,322],\
461[1,1,1,-2,15],\
462[1,1,1,-14,75],\
463[1,-1,1,4,-34],\
464[0,0,0,24,16],\
465[1,1,1,-4,-3],\
466[1,1,1,126,1167],\
467[0,1,1,4,14],\
468[0,-1,0,11,-47],\
469[0,1,0,-15,25],\
470[1,0,1,-57,-164],\
471[0,0,1,-3,22],\
472[0,-1,0,7,-3],\
473[1,-1,1,0,2],\
474[1,0,1,0,10],\
475[0,1,0,3,-9],\
476[1,-1,0,66,116],\
477[0,-1,0,56,-1415],\
478[0,1,1,-1,-4],\
479[0,1,0,-61,-205],\
480[1,-1,0,-67,216],\
481[1,-1,1,-41,105],\
482[1,-1,0,135,-243],\
483[1,0,1,-5,2],\
484[0,-1,0,-61,205],\
485[0,-1,0,-20,40],\
486[1,-1,1,-248,1563],\
487[0,-1,0,-1373,-19191],\
488[1,-1,0,-54,-243],\
489[0,0,0,-187,991],\
490[0,0,0,-5,2],\
491[1,0,1,6,-20],\
492[1,-1,0,-1773,63909],\
493[1,-1,0,8,291],\
494[1,-1,1,51,117],\
495[0,1,0,-400,-3308],\
496[0,1,0,-276,1676],\
497[1,1,1,-2460,45949],\
498[0,1,1,-33,94],\
499[1,-1,0,-117,166],\
500[1,0,0,-65,201],\
501[0,-1,0,-36,232],\
502[1,1,1,-5,3],\
503[0,0,0,1,-6],\
504[1,0,1,-1,4],\
505[0,1,1,79,-214],\
506[0,1,0,-4,-8],\
507[0,1,0,0,-16],\
508[1,0,1,-22,40],\
509[1,1,0,1,-1],\
510[0,1,0,0,16],\
511[1,-1,1,-55,72],\
512[0,1,1,-18,24],\
513[0,0,1,-1507,4209],\
514[0,0,0,-8,-16],\
515[0,-1,0,-28,68],\
516[1,0,1,-539,4765],\
517[1,-1,1,-1,17],\
518[1,-1,1,-5,2],\
519[0,1,0,-1,51],\
520[0,-1,1,23004,2393001],\
521[0,0,0,800,26500],\
522[0,0,0,5,-2],\
523[1,-1,1,-26,57],\
524[1,-1,0,0,-3],\
525[1,-1,1,-514,4609],\
526[0,1,1,-28,48],\
527[0,1,0,-9,-13],\
528[0,-1,0,-1,17],\
529[1,1,0,-2,1],\
530[1,1,1,4,-3],\
531[1,1,0,13,13],\
532[1,1,1,-42,87],\
533[1,0,0,-86,292],\
534[0,-1,0,-5,-19],\
535[1,-1,0,-771,-8875],\
536[1,-1,0,3,-2],\
537[1,-1,0,-14,24],\
538[0,0,1,18,-7],\
539[0,1,1,-4758,128144],\
540[1,1,0,5,4],\
541[1,1,1,-101,299],\
542[1,-1,0,0,-1],\
543[1,-1,0,-990,-11745],\
544[0,0,1,-2,0],\
545[0,0,0,-5,5],\
546[0,1,1,-116,444],\
547[1,-1,1,-11,10],\
548[0,-1,0,-88,349],\
549[0,1,0,-440,3412],\
550[1,1,1,-10,8],\
551[1,0,0,-1,4],\
552[1,-1,1,-12,36],\
553[1,0,0,12,117],\
554[1,-1,1,-13,21],\
555[0,-1,0,-100,424],\
556[1,0,0,2,1],\
557[0,1,0,-1,-17],\
558[0,-1,0,-5,9],\
559[0,-1,0,-175,952],\
560[1,-1,0,45,-203],\
561[0,0,1,-5,10],\
562[0,-1,0,1,1],\
563[0,0,0,-125,625],\
564[1,-1,1,-56,-134],\
565[1,0,1,-3,30],\
566[0,1,0,12,9],\
567[0,1,1,10,-2],\
568[0,1,0,8,-12],\
569[0,-1,0,-48885,4176513],\
570[1,0,0,-12,-16],\
571[0,0,1,-19569,-4064513],\
572[1,-1,1,3,69],\
573[1,1,1,-91,297],\
574[1,0,1,-46,-127],\
575[1,-1,0,-96,-640],\
576[0,-1,0,-5,-47],\
577[0,0,0,-10,-12],\
578[1,0,1,-138,609],\
579[1,-1,1,1273,-3585],\
580[1,1,1,-21,-45],\
581[0,1,0,4,-4],\
582[1,1,1,-399,1237],\
583[0,1,0,-65,191],\
584[0,-1,0,-316,-2060],\
585[1,0,1,-451,4798],\
586[0,1,1,-5,-4],\
587[1,0,0,-59,145],\
588[1,0,0,-152,576],\
589[1,0,1,-6,-5],\
590[1,0,0,44,-624],\
591[1,-1,1,25,28],\
592[0,0,0,-343,2401],\
593[1,-1,1,-18,33],\
594[0,1,0,-4,5],\
595[0,0,0,-40,100],\
596[1,1,0,-79,-306],\
597[0,-1,1,-13,24],\
598[0,1,0,-96,333],\
599[1,1,0,-281,1701],\
600[0,0,0,-172,-1328],\
601[0,1,0,19,-1],\
602[0,1,0,-3,9],\
603[1,0,1,-13,-16],\
604[0,0,0,24,-16],\
605[0,0,0,-9,-27],\
606[1,-1,1,359,-6663],\
607[1,0,0,-132,144],\
608[0,-1,1,-321,-9817],\
609[0,1,0,-3,2],\
610[0,-1,1,1638,-13693],\
611[1,-1,1,-241390,45705725],\
612[0,0,0,-3,-1],\
613[1,0,0,-68,285],\
614[0,-1,0,-12,-8],\
615[0,1,0,15,-13],\
616[1,1,1,-416,3009],\
617[0,1,1,-3,-4],\
618[0,1,0,4,5],\
619[1,0,1,-10,-10],\
620[1,1,0,-16,-32],\
621[0,-1,0,-57,-171],\
622[1,0,1,-10,-12],\
623[1,0,0,-7,14],\
624[1,-1,0,-9,27],\
625[1,0,1,3,0],\
626[0,0,1,2,-1],\
627[0,1,0,-16,-29],\
628[0,-1,0,-208,1412],\
629[0,0,1,-2,-2],\
630[1,1,1,-121,455],\
631[1,0,1,-3,-1],\
632[1,0,0,-97,361],\
633[1,1,1,5,-4],\
634[1,0,0,2941,18606],\
635[0,-1,1,406,-686],\
636[0,1,1,5,7],\
637[0,1,1,-5,23],\
638[0,-1,0,315,2349],\
639[1,-1,1,3,-3],\
640[1,0,1,-202,1084],\
641[0,0,0,-16,24],\
642[0,-1,0,-369,4293],\
643[1,0,1,-2382,77312],\
644[1,-1,1,-86,357],\
645[0,1,1,-3,29],\
646[0,0,0,-11,22],\
647[0,-1,0,0,-23],\
648[1,-1,0,8,16],\
649[0,-1,0,-1,-31],\
650[1,1,0,-38,76],\
651[0,1,0,-61,191],\
652[1,0,1,1,-2],\
653[1,0,0,-6,5],\
654[0,-1,1,-3,-1],\
655[1,1,1,-18,31],\
656[0,1,0,-64,180],\
657[1,0,1,-1203,15950],\
658[1,-1,0,0,-18],\
659[0,-1,0,-5,-2],\
660[1,0,0,3467,-83679],\
661[1,1,1,-13,3],\
662[1,-1,1,7,10],\
663[1,1,0,-2750,54375],\
664[1,-1,0,45,-459],\
665[0,0,0,-362249,165197113],\
666[1,0,1,-13,16],\
667[0,1,1,-133,519],\
668[0,1,0,8,-44],\
669[1,-1,0,36,81],\
670[1,1,0,-10407,-413003],\
671[1,0,0,8,16],\
672[0,1,0,7,27],\
673[0,1,1,-20,24],\
674[1,-1,1,-74,262],\
675[0,0,0,16,36],\
676[1,1,1,421,-12440],\
677[1,-1,0,-69,-208],\
678[1,-1,1,-8,10],\
679[0,1,0,164,-8764],\
680[0,-1,1,-18,36],\
681[1,1,0,-2,0],\
682[0,-1,0,14,1057],\
683[0,-1,0,-14,24],\
684[0,1,0,-40,-76],\
685[1,-1,0,-50,111],\
686[1,0,1,-2,0],\
687[1,1,0,-1,1],\
688[1,1,0,-98,372],\
689[1,-1,1,-23,-34],\
690[1,-1,1,-19353,958713],\
691[1,-1,1,7,-8],\
692[1,0,0,-14,4],\
693[1,1,0,0,3],\
694[1,-1,1,4,6],\
695[0,-1,0,-3,6],\
696[1,1,1,179,1475],\
697[1,1,0,-29612,2027600],\
698[1,1,1,-14,26],\
699[1,0,0,1596,9783],\
700[1,-1,1,13,474],\
701[1,-1,1,-203,987],\
702[1,1,0,-87,261],\
703[0,1,0,-39,-108],\
704[1,1,1,-23,20],\
705[1,-1,0,-29,69],\
706[1,-1,1,-218,1432],\
707[0,-1,0,-24,48],\
708[0,0,0,-8,-3],\
709[0,1,0,-81,0],\
710[0,0,0,-38,-87],\
711[1,0,1,32,558],\
712[1,1,0,-57,144],\
713[1,-1,0,-18,-81],\
714[1,-1,0,-5,1],\
715[1,0,1,-7,-6],\
716[0,0,0,-12,65],\
717[1,0,1,-8,2],\
718[1,-1,1,-67,226],\
719[0,1,0,4,30],\
720[1,-1,0,-3,5],\
721[1,-1,1,-7,-5],\
722[1,-1,0,-524,-8920],\
723[1,-1,0,-10,15],\
724[0,-1,0,-4,-2],\
725[1,-1,0,-164,848],\
726[0,0,0,9,10],\
727[1,1,1,4,29],\
728[1,1,0,-276,1616],\
729[0,0,0,24,25],\
730[1,1,0,-17,69],\
731[1,1,1,-148,-427],\
732[1,0,1,5,6],\
733[1,1,0,2238,181236],\
734[1,-1,1,-33,81],\
735[0,0,0,-11,10],\
736[1,0,0,50,107],\
737[1,1,1,-1027,12257],\
738[1,1,0,-66,180],\
739[0,1,0,-900,10098],\
740[1,1,0,-18630,971028],\
741[1,1,1,-405,4731],\
742[1,0,0,36,-81],\
743[1,-1,0,-1476,-21461],\
744[0,0,0,-143,658],\
745[0,-1,0,-1,10],\
746[1,-1,0,-17,16],\
747[1,1,0,-14646,-688345],\
748[1,0,1,2,32],\
749[1,1,1,-6,-6],\
750[1,-1,1,3,5],\
751[1,0,0,-163,-808],\
752[0,0,0,-2,21],\
753[1,-1,0,-42,-73],\
754[0,0,0,-31,66],\
755[1,0,0,0,-9],\
756[1,1,1,-29598,1947602],\
757[0,0,0,4,-16],\
758[0,-1,1,-210,6798],\
759[0,-1,0,-3,-36],\
760[1,0,1,-1,116],\
761[1,1,1,-196,5829],\
762[0,0,0,-35,78],\
763[1,0,1,-92,326],\
764[0,0,0,-23,42],\
765[1,0,0,-25,57],\
766[1,-1,0,1226,30580],\
767[0,0,0,49,-686],\
768[0,-1,0,-6,0],\
769[0,0,0,33,-34],\
770[0,1,0,-104,372],\
771[1,1,1,-354,-2193],\
772[1,1,0,-21,45],\
773[0,0,0,37,138],\
774[0,0,0,-1052,13129],\
775[0,1,0,-4,32],\
776[1,1,0,-3,-3],\
777[1,-1,0,522,2164],\
778[1,0,0,-14,19],\
779[0,0,0,85,86],\
780[1,1,1,-19,-40],\
781[0,0,0,-11,-10],\
782[0,1,0,5,14],\
783[1,-1,0,-18,0],\
784[1,0,1,-14,20],\
785[0,-1,0,14,-11],\
786[1,-1,1,-180,1047],\
787[0,1,1,-280,1684],\
788[0,0,0,-25,0],\
789[1,0,0,19,0],\
790[0,1,0,-14,-24],\
791[1,-1,1,98,-316],\
792[1,1,0,2,-17],\
793[1,1,0,172,-1968],\
794[0,0,0,-2000,-34375],\
795[1,1,0,-3334,81940],\
796[1,1,0,-210,-441],\
797[1,1,1,-572,118685],\
798[0,0,0,-32,-31],\
799[1,-1,1,-77,276],\
800[1,-1,0,-2,0],\
801[1,0,1,-4,-3],\
802[1,-1,1,-138,656],\
803[1,-1,0,-14,20],\
804[1,1,1,81,-564],\
805[0,-1,0,-30,72],\
806[1,0,1,-162,-476],\
807[1,1,0,-14744,836928],\
808[1,0,1,-701,-7202],\
809[0,-1,0,-207,-1080],\
810[1,0,1,12,-14],\
811[1,-1,0,-14,-17],\
812[0,0,0,-30,133],\
813[1,0,1,-6,8],\
814[1,1,1,-405,-1925],\
815[1,1,1,-11,-7],\
816[0,0,0,-28,57],\
817[0,0,0,-66,205],\
818[0,-1,0,2,4],\
819[1,-1,0,-27,81],\
820[0,-1,0,-5,6],\
821[1,-1,0,-9,0],\
822[1,0,0,-19602,1069443],\
823[0,1,0,-8,4],\
824[0,0,0,2,3],\
825[1,0,0,-18,4],\
826[0,0,0,0,-4],\
827[1,-1,0,2,0],\
828[1,-1,0,-16,-21],\
829[1,-1,0,-18,4],\
830[0,0,0,3,0],\
831[1,1,0,-2061,35165],\
832[1,-1,1,-85,-220],\
833[1,-1,1,-33898,2219177],\
834[1,-1,1,-3,2],\
835[1,-1,1,1668,19775],\
836[0,1,0,-71,-246],\
837[1,0,1,-1138,-14844],\
838[1,-1,1,-5,4],\
839[1,-1,1,-37,124],\
840[1,-1,1,-22,44],\
841[1,1,1,-11185,456015],\
842[0,-1,0,4,6],\
843[1,1,0,-450,3375],\
844[1,-1,0,-5,5],\
845[1,1,0,-15,-27],\
846[1,0,0,-10,-13],\
847[0,-1,0,-48,144],\
848[0,0,0,4,16],\
849[1,0,0,-16,0],\
850[1,1,0,-5,-3],\
851[1,-1,1,-91,-245],\
852[0,0,0,-6,9],\
853[1,1,1,1,101],\
854[1,1,1,12,181],\
855[0,0,0,-18,-27],\
856[1,0,0,-71,265],\
857[1,-1,1,20,22],\
858[0,-1,0,1,3],\
859[1,-1,1,-19,-14],\
860[0,0,0,-11,-6],\
861[0,-1,0,-13,22],\
862[0,0,0,-30,29],\
863[0,-1,0,5,-14],\
864[1,-1,0,-302,2260],\
865[0,0,0,-216,-1215],\
866[0,0,0,-15,18],\
867[1,0,0,-1145,12025],\
868[1,1,1,-410,903],\
869[1,-1,0,-167,-259],\
870[0,1,0,-39,-18],\
871[1,-1,0,-7,9],\
872[1,1,0,-10,4],\
873[0,0,0,-8,8],\
874[1,0,0,-60,16],\
875[1,1,1,-15,21],\
876[1,1,0,-92,-381],\
877[1,1,0,334,5556],\
878[1,-1,0,1431,-46899],\
879[1,0,1,-1312,-18391],\
880[1,-1,1,-92,415],\
881[1,0,1,-5448,-113258],\
882[1,1,1,-13,-22],\
883[1,1,0,-8,3],\
884[1,-1,0,-4,0],\
885[0,1,0,-35,69],\
886[1,-1,0,-22,46],\
887[1,1,1,-23,-628],\
888[1,-1,0,-70,-204],\
889[1,1,1,-19,17],\
890[0,0,0,-21,-20],\
891[1,-1,0,-3,1],\
892[0,0,0,2,-3],\
893[1,0,0,-4,0],\
894[1,0,0,0,7],\
895[1,1,0,-7,16],\
896[0,-1,0,9,0],\
897[1,-1,0,3,17],\
898[0,0,0,24,-511],\
899[1,-1,1,-6,5],\
900[0,-1,0,-8,0],\
901[1,-1,1,-172,-465],\
902[1,1,0,5,-23],\
903[1,1,1,-46,107],\
904[1,-1,0,-52,-48],\
905[1,0,0,-18,27],\
906[1,0,1,467,-1432],\
907[0,1,0,-1528,22484],\
908[1,1,0,-286,1780],\
909[0,0,0,-66,-119],\
910[0,-1,0,4,0],\
911[1,-1,0,-284,1915],\
912[1,1,1,-38,-15325],\
913[1,-1,0,-7,-3],\
914[1,0,0,-70,356],\
915[1,0,1,3,-5],\
916[1,1,0,1217,6622405],\
917[0,0,0,-5042,-137801],\
918[1,1,1,-14,11],\
919[0,-1,0,-105,450],\
920[1,1,1,10,147],\
921[0,1,0,210,1764],\
922[1,-1,0,-8,44],\
923[0,1,0,-9,0],\
924[1,-1,1,-406,3237],\
925[1,-1,0,-32,0],\
926[0,-1,0,-64,-260],\
927[0,1,0,-35,58],\
928[1,-1,0,-29,-47],\
929[1,1,1,-34,47],\
930[1,-1,0,27,-59],\
931[1,1,0,-18,23],\
932[1,1,1,2,2],\
933[0,0,0,-5,0],\
934[1,-1,0,-8,11],\
935[1,-1,1,-16,-13],\
936[0,1,0,1,-3],\
937[0,0,0,-111,434],\
938[0,1,0,-29,36],\
939[1,-1,0,-1693,27240],\
940[0,0,0,-36,81],\
941[1,1,1,-63,156],\
942[1,1,1,-1760,27137],\
943[1,-1,0,-112,492],\
944[0,1,0,-22,41],\
945[0,0,0,-26,-51],\
946[1,0,1,-365,13608],\
947[0,0,0,-11,-70],\
948[1,0,0,-1015,11561],\
949[1,0,0,21,49],\
950[1,1,1,39,39],\
951[1,0,0,-33,-72],\
952[1,0,0,146,37508],\
953[1,0,1,130884,-59725523],\
954[1,0,0,-5,1],\
955[1,1,0,3395,-211907],\
956[1,1,0,4,0],\
957[0,0,0,-3,18],\
958[1,1,0,18,0],\
959[0,-1,0,-9,-6],\
960[1,0,1,-8,6],\
961[1,-1,0,-949,11493],\
962[1,-1,0,-15,25],\
963[0,0,0,-135,-486],\
964[0,-1,0,-3,0],\
965[0,-1,0,-20,42],\
966[1,1,0,3,9],\
967[0,0,0,-8,-7],\
968[1,0,1,-9,-4],\
969[0,1,0,-5,-2],\
970[1,-1,1,-199,510],\
971[0,0,0,-50,-125],\
972[1,-1,0,432,-869],\
973[0,1,0,-3,1],\
974[0,0,0,9,0],\
975[1,-1,1,-20,46],\
976[0,0,0,-35,98],\
977[0,0,0,24,56],\
978[0,0,1,0,1],\
979[0,0,0,0,8],\
980[1,-1,0,-63,209],\
981[0,-1,0,-16,16],\
982[1,1,0,-31,55],\
983[0,0,1,0,-34],\
984[1,0,1,1,-9],\
985[1,0,0,4,1],\
986[1,-1,1,-17,30],\
987[1,0,1,-138,592],\
988[0,-1,1,-887,-10143],\
989[1,0,0,-700,7056],\
990[1,-1,1,-642,6416],\
991[0,0,0,-76,240],\
992[1,1,0,-2221,29181],\
993[1,-1,0,128,-96],\
994[0,0,0,-156,560],\
995[0,-1,0,7,9],\
996[0,0,0,9,26],\
997[0,1,0,-60,144],\
998[1,1,1,-13,8],\
999[1,-1,1,-14,-14],\
1000[1,1,1,1650,-27389],\
1001[1,-1,1,-1212,16175],\
1002[0,0,0,-76,-240],\
1003[1,-1,0,-295,-1800],\
1004[0,0,0,-931,-10290],\
1005[1,-1,0,8,-6],\
1006[0,0,0,-175,750],\
1007[1,-1,1,-72,194],\
1008[1,0,0,-1191,15721],\
1009[1,1,0,-93,-378],\
1010[1,1,0,-397,2881],\
1011[0,-1,0,-212,-1020],\
1012[0,0,0,-331,-2310],\
1013[1,-1,1,-32,564],\
1014[0,0,0,-123,522],\
1015[1,-1,1,-3593,83782],\
1016[0,0,0,-1207,9006],\
1017[1,1,1,26,107],\
1018[1,1,1,-7445,244091],\
1019[1,-1,1,-38,-44],\
1020[0,0,0,-36,0],\
1021[1,-1,0,-17,-13],\
1022[1,0,1,4924,75298],\
1023[1,1,0,25,-99],\
1024[0,0,0,-43,-42],\
1025[0,0,0,-831,-8890],\
1026[1,1,1,766,-12049],\
1027[1,1,0,-479052,127421360],\
1028[1,-1,1,-9611313,-11466507927],\
1029[1,-1,1,3,-25],\
1030[1,-1,0,-19,0],\
1031[0,0,0,-163,462],\
1032[1,1,0,-150,648],\
1033[1,0,0,-209,-816],\
1034[1,1,1,62,224],\
1035[1,1,1,-142320,-20724857],\
1036[0,-1,0,-41,199],\
1037[0,0,0,-11,150],\
1038[1,0,1,13912,-732778],\
1039[1,-1,0,-692,-6832],\
1040[1,1,1,-1238,-17152],\
1041[0,0,0,-20,-16],\
1042[1,-1,0,-198,1120],\
1043[0,-1,0,-36,36],\
1044[0,0,0,-75,-234],\
1045[1,-1,1,14,21],\
1046[0,1,0,324,324],\
1047[1,0,1,-32,-61],\
1048[1,-1,1,-41,96],\
1049[0,0,0,8,0],\
1050[1,-1,1,2,6],\
1051[0,0,0,-291,-1330],\
1052[1,1,0,-26,444],\
1053[0,-1,0,-9,9],\
1054[0,1,0,16,16],\
1055[1,1,0,-1297,-18530],\
1056[0,1,0,-8,-8],\
1057[0,1,0,-1,15],\
1058[0,1,0,-28,48],\
1059[0,0,0,-23,-38],\
1060[1,1,0,-65,-231],\
1061[0,-1,0,12,-12],\
1062[1,-1,0,-214,1260],\
1063[0,-1,1,-148,748],\
1064[0,1,0,-48,-140],\
1065[1,-1,0,-389,-2859],\
1066[1,0,1,-12,-16],\
1067[1,-1,0,-33,-65],\
1068[1,1,1,-48,90],\
1069[1,0,0,-174,868],\
1070[1,0,1,12,38],\
1071[0,-1,0,-20,-24],\
1072[1,0,0,-139,465],\
1073[1,-1,1,-2027,35776],\
1074[1,0,0,-45,-119],\
1075[1,-1,0,-244,0],\
1076[1,-1,1,-105,272],\
1077[0,0,0,-111,214],\
1078[0,0,1,-8211,-286610],\
1079[0,0,0,0,108],\
1080[0,0,1,-13718,-619025],\
1081[1,1,0,-1925,31458],\
1082[1,-1,0,-13,0],\
1083[1,-1,1,-1532,23455],\
1084[1,1,0,8,10],\
1085[1,-1,1,-25,52],\
1086[0,1,0,-13,-21],\
1087[1,0,0,-88,-2583],\
1088[1,1,0,-4606,118420],\
1089[1,-1,0,-142,-609],\
1090[0,-1,1,-840,-9114],\
1091[1,-1,0,-469,4029],\
1092[0,1,0,-184,-364],\
1093[0,1,0,-9,7],\
1094[1,-1,0,-47,133],\
1095[1,0,0,7,102],\
1096[1,-1,0,-238,1470],\
1097[1,0,0,-15,0],\
1098[1,0,0,16,4],\
1099[1,-1,1,-133,702],\
1100[1,1,1,-18,-36],\
1101[0,0,0,-155,714],\
1102[1,-1,0,72,-54],\
1103[0,0,0,-28,-48],\
1104[0,0,0,-12,0],\
1105[0,0,0,-23,78],\
1106[0,-1,0,-60,-144],\
1107[0,1,0,-44,-84],\
1108[0,1,0,-265,1575],\
1109[0,0,0,-60,176],\
1110[1,-1,0,16,-12],\
1111[1,-1,0,-289,1848],\
1112[1,-1,0,36,-27],\
1113[0,1,0,-41,-199],\
1114[1,-1,0,-153,-455],\
1115[1,-1,1,-1644,-24922],\
1116[0,0,0,-8,32],\
1117[0,0,0,-127,546],\
1118[1,1,1,-99,-399],\
1119[0,-1,0,12,72],\
1120[0,-1,0,-49,-95],\
1121[0,1,0,-25,119],\
1122[0,-1,0,-81,-255],\
1123[0,0,0,-31,-30],\
1124[0,0,0,9,270],\
1125[1,1,1,-514,4271],\
1126[0,1,0,-1505,17199],\
1127[1,-1,1,-131,-520],\
1128[1,-1,0,-123,494],\
1129[0,0,0,-111,-110],\
1130[0,1,0,120,-396],\
1131[0,0,0,-35,-62],\
1132[1,-1,0,-25,-39],\
1133[1,-1,0,-11,-38],\
1134[1,-1,1,-6486,202661],\
1135[1,0,1,-1317,-18245],\
1136[1,-1,1,-140,668],\
1137[1,-1,1,34,46],\
1138[0,0,0,-275,-1750],\
1139[0,0,1,375,-12344],\
1140[1,-1,0,-8,6],\
1141[1,-1,1,-27,26],\
1142[1,1,1,-75,-1422],\
1143[1,1,1,-764,-7324],\
1144[0,1,1,20,-890],\
1145[0,-1,1,-244012,-46313805],\
1146[0,0,0,-23,38],\
1147[1,1,0,-12678,-3060351],\
1148[1,-1,1,-842,9366],\
1149[1,-1,0,-4095,102577],\
1150[1,-1,0,-1521,-20048],\
1151[0,-1,0,-44,120],\
1152[1,-1,0,-1802,29898],\
1153[1,1,1,19,-16],\
1154[0,-1,0,-33,81],\
1155[0,0,0,-5047,-137514],\
1156[0,1,0,-40,84],\
1157[1,0,1,-35,54],\
1158[0,0,0,-327,2270],\
1159[0,-1,0,-80,-168],\
1160[1,-1,0,30763,6051758],\
1161[1,-1,0,-12555,544887],\
1162[1,1,0,-162,729],\
1163[1,0,0,-255,900],\
1164[1,0,0,-98,279],\
1165[0,-1,0,-13,85],\
1166[0,0,0,-283,1482],\
1167[1,0,0,12,3],\
1168[1,1,0,-250264,48082240],\
1169[1,1,0,-53,-168],\
1170[0,-1,0,-68,240],\
1171[0,1,0,-224,-1368],\
1172[0,1,0,60,400],\
1173[1,-1,1,-8572,183615],\
1174[1,1,0,-55174,4965268],\
1175[0,0,0,-91,330],\
1176[1,0,0,-76,-19],\
1177[1,0,0,-178,-924],\
1178[0,-1,0,-8,336],\
1179[0,0,0,-63,162],\
1180[0,1,0,-1120,15604],\
1181[1,0,0,-55,150],\
1182[0,0,0,29,-66],\
1183[1,1,1,-255,1461],\
1184[1,-1,0,-4942,134964],\
1185[1,-1,0,-1773,-5720],\
1186[1,-1,0,-423,-3240],\
1187[1,-1,0,-35944,-2868878],\
1188[0,0,0,17,-318],\
1189[0,1,0,-33,31],\
1190[0,0,0,-103,-402],\
1191[1,-1,0,10,-700],\
1192[0,1,0,36,36],\
1193[1,0,1,-98,362],\
1194[0,0,0,-291,-1910],\
1195[1,-1,0,-225,-1250],\
1196[1,-1,0,628,-17823],\
1197[1,-1,1,-507,-2494],\
1198[1,0,0,64,16],\
1199[1,-1,1,-68,182],\
1200[1,-1,1,-1371,-19189],\
1201[0,1,0,-184,896],\
1202[1,1,0,-1748,-25392],\
1203[1,-1,0,-12,9],\
1204[1,-1,1,-335,2440],\
1205[0,-1,0,-1144,-14516],\
1206[0,-1,0,-29,69],\
1207[1,-1,1,-264,-1582],\
1208[1,-1,0,-477,4131],\
1209[0,0,0,113,-234],\
1210[1,1,0,-35,66],\
1211[1,-1,1,-37,85],\
1212[1,0,1,-2525,-45279],\
1213[0,1,0,-60,-200],\
1214[0,0,0,-8,-32],\
1215[0,1,0,-33,-1937],\
1216[0,0,0,-13612,670672],\
1217[1,1,1,-2040,-38093],\
1218[1,1,0,175,12750],\
1219[0,1,0,-1368,27540],\
1220[1,0,1,-106,408],\
1221[0,0,0,-111,450],\
1222[1,1,0,-62,111],\
1223[1,1,1,-161,119],\
1224[1,-1,0,-5,26],\
1225[0,0,0,5,18],\
1226[1,0,0,-65,-204],\
1227[1,-1,0,-1688,27405],\
1228[0,-1,0,32,-32],\
1229[0,0,0,-1375,-56250],\
1230[1,0,1,13,-30],\
1231[1,1,0,-72,-90],\
1232[1,1,0,-37442,2585844],\
1233[1,0,1,-361,2564],\
1234[0,1,0,-196,704],\
1235[1,1,0,-381,2709],\
1236[0,0,0,-20,16],\
1237[0,0,0,-471,3850],\
1238[1,-1,1,-191,892],\
1239[1,-1,1,-110,-134],\
1240[1,0,0,-425,3337],\
1241[0,0,0,-355,702],\
1242[1,1,1,160,85505],\
1243[0,1,1,-506,7774],\
1244[1,0,1,-22,830],\
1245[1,-1,0,-617,5916],\
1246[1,-1,1,10,16],\
1247[1,1,0,-1618,24388],\
1248[0,0,0,17,-42],\
1249[1,0,0,-9,34],\
1250[1,1,0,-105,-441],\
1251[1,-1,0,58,841],\
1252[1,-1,0,-929,11985],\
1253[1,0,1,-1142,14420],\
1254[1,1,1,-188,-844],\
1255[0,-1,0,-188,-924],\
1256[0,0,0,-40,-96],\
1257[0,1,0,-444,-3744],\
1258[0,0,0,-52,144],\
1259[1,1,1,-259,1496],\
1260[0,0,0,20,0],\
1261[0,-1,0,-60,792],\
1262[0,0,0,-675,6318],\
1263[0,-1,1,-16660,-1081562],\
1264[0,-1,0,-76,280],\
1265[1,-1,1,180,-1492],\
1266[1,-1,0,-2358,20020],\
1267[0,-1,0,-104,-336],\
1268[1,-1,1,37782,10304681],\
1269[1,0,1,-848,9006],\
1270[1,-1,0,-539109,152510121],\
1271[1,1,0,-267,-1431],\
1272[1,1,1,-353,-2120],\
1273[1,1,1,-131,-631],\
1274[1,-1,0,-55,171],\
1275[0,0,0,-351,486],\
1276[1,-1,0,-1269,-17739],\
1277[1,1,1,-29863,1910608],\
1278[1,1,0,-14041,-747030],\
1279[0,1,0,-121,455],\
1280[0,-1,0,-41,105],\
1281[0,0,0,-51,94],\
1282[1,-1,0,-2167,-38259],\
1283[1,0,0,-314847,67971960],\
1284[0,1,0,1840,162452],\
1285[1,1,1,11,-10],\
1286[1,0,1,-109,-444],\
1287[1,1,1,-24,-24],\
1288[1,0,0,-288,567],\
1289[1,0,1,-818,-23292],\
1290[1,1,0,-13,42],\
1291[1,-1,0,-87,323],\
1292[0,0,0,-147,-286],\
1293[1,1,1,492,-2475],\
1294[1,1,1,-6234,-177484],\
1295[0,1,0,-93,315],\
1296[0,0,0,-615,5866],\
1297[1,1,1,-116,413],\
1298[0,0,0,-595,5586],\
1299[1,0,1,-1725581,-795628249],\
1300[0,0,0,29,66],\
1301[1,-1,1,-96,371],\
1302[1,1,0,-97,-344],\
1303[0,1,0,-164,-828],\
1304[0,-1,0,-70245,7189389],\
1305[1,0,1,9,-23],\
1306[1,0,0,-3255,-57879],\
1307[1,1,0,-47,99],\
1308[0,0,0,105,218],\
1309[0,1,0,-29,-69],\
1310[1,-1,0,41,-285],\
1311[1,0,1,-11085,446696],\
1312[1,1,0,-3346,63700],\
1313[0,1,0,-95040,11245748],\
1314[0,1,0,-905,9975],\
1315[1,0,0,-5625,-151943],\
1316[1,0,0,-6909,79524],\
1317[1,1,1,15380,-102531],\
1318[0,0,0,5,246],\
1319[0,1,1,-19330,-1040876],\
1320[0,0,0,4,80],\
1321[1,0,1,-2013,-12344],\
1322[1,0,0,-1090,-40504],\
1323[1,0,1,-1751,-31352],\
1324[0,-1,0,-25,25],\
1325[1,-1,0,15,91],\
1326[1,1,0,44,5520],\
1327[1,-1,0,93,-532],\
1328[1,0,1,-924,922],\
1329[1,1,1,-1154,12431],\
1330[1,1,0,-102,324],\
1331[1,0,0,-374,-2541],\
1332[1,-1,1,-923,-9669],\
1333[0,-1,0,-336,-1764],\
1334[0,-1,0,-1824,25344],\
1335[1,-1,0,-1035,-10584],\
1336[1,1,1,-421,-3157],\
1337[1,0,0,-246,-1485],\
1338[0,-1,0,-180,900],\
1339[1,1,0,-428,2832],\
1340[0,-1,0,-508,1012],\
1341[1,1,0,-23,33],\
1342[1,-1,0,-675,-6075],\
1343[1,1,0,-2875,49000],\
1344[0,-1,0,-81,81],\
1345[0,-1,0,-64,64],\
1346[1,-1,0,-630,4900],\
1347[0,0,0,-723,7378],\
1348[1,0,1,-68,-142],\
1349[1,1,0,-33,-63],\
1350[1,1,1,-544,4496],\
1351[0,1,0,-81,-81],\
1352[1,1,1,-319,2021],\
1353[1,-1,0,-1309,-17787],\
1354[1,0,0,-429,3384],\
1355[1,-1,0,-37053,2752245],\
1356[1,-1,0,-159,665],\
1357[1,0,1,-137,380],\
1358[1,1,1,-12789,551346],\
1359[1,1,0,-16,-20],\
1360[1,-1,1,-232,-1286],\
1361[0,-1,0,-129,609],\
1362[1,-1,0,-252,-7344],\
1363[0,0,0,-236,-1104],\
1364[0,0,0,-963,11502],\
1365[1,-1,0,-21618,-1216265],\
1366[1,-1,1,-697,5294],\
1367[1,-1,0,-4670,-121675],\
1368[0,0,0,-1403,-18902],\
1369[1,-1,1,-730,-7228],\
1370[1,0,0,-170,837],\
1371[1,-1,1,-21931,-1244565],\
1372[1,0,1,-968,-11662],\
1373[0,0,0,-251,1510],\
1374[1,-1,0,-34667,-2475759],\
1375[1,-1,0,-5886,153679],\
1376[0,1,0,-159,765],\
1377[1,-1,1,-176,-768],\
1378[0,-1,0,-136,-560],\
1379[0,0,1,-750,7906],\
1380[0,0,0,-1451,21274],\
1381[1,-1,1,-26209,-1626560],\
1382[0,0,0,-428,-3408],\
1383[1,1,1,-1559,-24343],\
1384[0,0,0,-396,-3024],\
1385[1,-1,1,-397,-2796],\
1386[1,-1,0,-3168,69430],\
1387[1,0,1,-1957,33140],\
1388[1,-1,1,-965,-13940],\
1389[1,-1,0,-2744,-54500],\
1390[0,0,0,-156,736],\
1391[0,0,0,-1196,-15920],\
1392[0,0,0,-2675,53250],\
1393[1,1,0,-1602,24024],\
1394[1,-1,0,-2223,-39785],\
1395[0,1,0,-49,95],\
1396[0,0,0,-4251,-106666],\
1397[0,0,0,-876,-9520],\
1398[0,0,0,-14651,-682570],\
1399[0,0,0,-1371,-19514],\
1400[0,1,0,-2344,-44428],\
1401[1,-1,0,-6768,-212625],\
1402[1,-1,1,-533,-4598],\
1403[1,1,1,-294,1020],\
1404[0,-1,0,-480,4212],\
1405[1,0,1,-1217868,517205302],\
1406[0,-1,0,-752,6972],\
1407[1,0,0,-316062,67420593],\
1408[1,1,0,-472,3481],\
1409[0,1,0,-304,-544],\
1410[0,-1,0,-56,180],\
1411[0,0,0,-5291,-148134],\
1412[0,0,0,-1947,-33046],\
1413[1,1,1,-2813,-58594],\
1414[1,-1,0,-2267,-40984],\
1415[1,-1,1,-1013,12656],\
1416[1,-1,0,-395,-2925],\
1417[0,0,0,0,-216],\
1418[1,-1,0,-158,-725],\
1419[1,-1,0,-20909,-1158507],\
1420[0,-1,0,-224,1368],\
1421[1,0,1,-18152,939764],\
1422[0,0,0,-7547,12986],\
1423[0,-1,0,-161,-639],\
1424[0,1,1,-383196,91174234],\
1425[0,1,0,-1985,-19617],\
1426[1,1,1,-219,1146],\
1427[1,0,1,-758201,254051548],\
1428[1,0,0,-3044,-64887],\
1429[0,1,0,-304,1892],\
1430[1,1,1,-11749,-495058],\
1431[1,-1,1,-7162,-231426],\
1432[1,-1,0,-914,-8277],\
1433[0,1,0,-7104,-232848],\
1434[0,0,0,-1163,-14938],\
1435[1,1,0,-367,-2756],\
1436[0,1,0,-321,-1665],\
1437[1,-1,1,-4219,-104412],\
1438[1,0,1,-2612,23195],\
1439[0,0,0,-1715,-33614],\
1440[1,-1,0,-4680,114075],\
1441[0,0,0,-563,-5138],\
1442[0,0,0,-7491,249550],\
1443[0,0,0,-275,1750],\
1444[0,1,0,-31281,-2139919],\
1445[0,0,0,-227,-434],\
1446[0,-1,0,-159,-765],\
1447[0,1,0,-2896,59024],\
1448[1,0,0,-3663,84942],\
1449[1,-1,0,-19278,-1012100],\
1450[0,-1,0,-225,-1215],\
1451[0,-1,0,-1624,-24656],\
1452[0,-1,0,-336,-2244],\
1453[1,-1,1,-1516,23091],\
1454[1,-1,0,-194,1085],\
1455[0,-1,0,-31281,2139919],\
1456[1,1,0,-848,-9867],\
1457[1,-1,1,-14423,-663069],\
1458[1,1,1,-5074,-128689],\
1459[1,0,1,-10644,420826],\
1460[1,1,0,-4017,-99681],\
1461[1,0,0,-5819,-171336],\
1462[1,0,0,-3921,-94830],\
1463[0,-1,0,-27744,1787904],\
1464[0,-1,0,-1736,26796],\
1465[1,1,1,-6541,-206341],\
1466[0,-1,0,-5008,-133988],\
1467[1,1,0,-6628,204952],\
1468[1,1,0,-373,2623],\
1469[0,-1,0,-801,-8415],\
1470[0,0,0,-1443,-9758],\
1471[1,-1,0,-3330,-69080],\
1472[1,-1,0,-10575,-415935],\
1473[0,-1,0,-624,-5760],\
1474[0,-1,0,-680,-5700],\
1475[1,1,0,-483,-4293],\
1476[1,1,1,-1389,-14094],\
1477[1,-1,0,-45873,1349865],\
1478[1,1,1,-679,-3883],\
1479[0,1,0,-801,8415],\
1480[1,0,0,-474,2619],\
1481[1,-1,0,-789,-7777],\
1482[1,1,1,-13034,528806],\
1483[1,1,0,-226,-1406],\
1484[1,1,0,-13000,-528125],\
1485[1,-1,1,-626,6180],\
1486[0,-1,0,31,33],\
1487[1,-1,1,157,992],\
1488[1,-1,1,98,126],\
1489[1,-1,0,160,-7169],\
1490[0,0,0,325,4250],\
1491[0,0,0,69,-146],\
1492[1,-1,1,-199,-68272],\
1493[1,1,1,-3299,64670],\
1494[0,-1,0,248,-5252],\
1495[1,-1,0,-17,-1734],\
1496[0,0,0,-491,154],\
1497[1,0,1,-448,3506],\
1498[1,-1,0,976,-732],\
1499[0,1,0,136,-444],\
1500[1,-1,1,-3532,79786],\
1501[0,-1,0,24,-24],\
1502[1,-1,0,256,7625],\
1503[1,0,0,60,15],\
1504[1,-1,0,-2189,9845],\
1505[1,1,0,22,-513],\
1506[0,0,0,-2627,-269646],\
1507[0,-1,0,16,84],\
1508[1,-1,0,-31518,2160364],\
1509[0,1,0,-1921,31775],\
1510[0,-1,0,-216,1296],\
1511[1,-1,1,-16400,-804212],\
1512[1,-1,1,-1480,22272],\
1513[1,-1,1,-10267,402966],\
1514[0,0,0,-236,1104],\
1515[1,-1,0,25,-209],\
1516[1,-1,0,-963,11371],\
1517[1,-1,0,-7452,-244944],\
1518[1,1,1,81,-1479],\
1519[1,-1,0,52,-39],\
1520[1,-1,0,-17208,867901],\
1521[1,-1,0,-108,2074],\
1522[1,1,0,118,1776],\
1523[1,-1,0,-558,-891],\
1524[1,-1,1,173,1076],\
1525[0,0,0,-2891,47334],\
1526[0,0,0,429,-866],\
1527[0,0,0,-11,890],\
1528[0,0,0,-1196,15920],\
1529[0,0,0,117,918],\
1530[0,0,0,109,-226],\
1531[1,-1,1,-263,1666],\
1532[0,0,0,-540,-4752],\
1533[1,0,1,403,2756],\
1534[1,1,1,-4144,100952],\
1535[0,-1,0,15,225],\
1536[1,-1,1,-229,-2044],\
1537[0,0,0,517,3318],\
1538[0,0,0,100,0],\
1539[0,0,0,789,-8890],\
1540[1,-1,0,76,-57],\
1541[1,-1,1,-1291,-21589],\
1542[0,0,0,-29155,-1915998],\
1543[0,1,0,-2589,49851],\
1544[1,0,1,-1216658,518284622],\
1545[1,0,0,-1294,17195],\
1546[0,0,0,-2027,35126],\
1547[0,0,0,-396,3024],\
1548[1,-1,0,-1667,-56759],\
1549[0,0,0,-4283,107882],\
1550[0,0,0,52,-272],\
1551[0,0,0,-2316,42896],\
1552[0,1,0,696,-2124],\
1553[0,0,0,157,-322],\
1554[1,1,1,437,-4594],\
1555[0,1,0,-2944,60512],\
1556[1,0,0,-5037552,4351465395],\
1557[0,1,0,95,31775],\
1558[0,-1,0,-2589,-49851],\
1559[1,1,1,91,-70],\
1560[0,-1,0,95,97],\
1561[1,1,0,198,-1701],\
1562[0,1,0,16,-84],\
1563[0,1,0,504,5184],\
1564[0,-1,0,-641,6465],\
1565[1,-1,0,2124,-103883],\
1566[1,0,1,-102,-50321],\
1567[0,1,0,-264,-6624],\
1568[0,0,0,69,12166],\
1569[1,0,1,188,46340],\
1570[0,0,0,-1227,16346],\
1571[0,0,1,-6750,-213469],\
1572[1,1,0,163,966],\
1573[0,-1,0,136,-1872],\
1574[1,0,0,1087,4692],\
1575[1,-1,1,44,1267],\
1576[0,-1,0,-456,3900],\
1577[1,0,1,3676,8282],\
1578[1,1,1,-17714,900047],\
1579[1,0,0,-1409,17538],\
1580[1,1,0,603,-7869],\
1581[1,-1,1,1057,-46893],\
1582[0,-1,0,3616,142848],\
1583[1,0,0,-491,1896],\
1584[1,-1,0,1890,-61479],\
1585[0,-1,0,744,-11700],\
1586[1,1,1,579,-14757],\
1587[0,-1,0,1992,6012],\
1588[1,1,0,7,147],\
1589[0,-1,0,-784,8704],\
1590[0,-1,0,240,4092],\
1591[0,0,0,-11523,476098],\
1592[0,-1,0,319,321],\
1593[1,-1,0,-2295,35721],\
1594[1,-1,0,-9450,355936],\
1595[1,1,0,652,16008],\
1596[1,1,1,221,17042],\
1597[1,1,0,97,-297],\
1598[1,-1,0,-592713,175784769],\
1599[1,1,1,-5079,137205],\
1600[0,1,0,319,-321],\
1601[1,0,0,-6864,218313],\
1602[1,1,1,-204624,35542050],\
1603[1,-1,0,-2409,46115],\
1604[1,1,0,-126,486],\
1605[1,1,0,5250,284625],\
1606[1,-1,0,-345753,-78165914],\
1607[0,0,0,-13836,-626416],\
1608[1,1,0,-203125,-35321000],\
1609[1,1,1,-79134,-8601153],\
1610[1,0,0,-93104,-10942305],\
1611[1,-1,0,-73125,7629336],\
1612[1,0,0,-6616,206471],\
1613[0,-1,0,-443904,113984640],\
1614[0,-1,0,-80008,-8683988],\
1615[0,-1,0,-10480,-409460],\
1616[1,-1,0,-151200,22667386],\
1617[0,0,0,-19443,-1042958],\
1618[0,-1,0,-12801,-553215],\
1619[1,1,1,-20174,-1111138],\
1620[1,0,0,-3009,-61770],\
1621[1,-1,0,-403083,-97454421],\
1622[0,1,0,-12801,553215],\
1623[0,-1,0,-12544,544960],\
1624[1,-1,0,-34965,2525175],\
1625[1,1,1,-42469,-2756140],\
1626[0,0,0,564,-37744],\
1627[1,-1,0,-15003,-1979636],\
1628[1,1,1,6266,-609505],\
1629[1,0,0,-5654,-181467],\
1630[0,-1,0,-26304,1980288],\
1631[1,0,0,1714,14685],\
1632[1,-1,0,5445,533250],\
1633[0,-1,0,1120,-32340],\
1634[0,-1,0,-2008,-295988],\
1635[1,-1,0,4455,201771],\
1636[0,-1,0,-321,-18879],\
1637[0,0,0,5037,-73262],\
1638[1,1,0,15125,-2468750],\
1639[1,1,1,3876,-89910],\
1640[1,-1,0,170217,10295991],\
1641[1,0,0,1341,18228],\
1642[0,1,0,-321,18879],\
1643[0,-1,0,-544,13888],\
1644[1,-1,0,-8820,404950],\
1645[1,1,1,12481,2376092],\
1646[1,1,0,-3250000,-2256492875],\
1647[1,-1,0,-1170000,487402461],\
1648[1,0,0,-105841,13244636],\
1649[0,0,0,-311043,-66769598],\
1650[1,1,0,-198250,-37090625],\
1651[1,0,0,-5391,285606],\
1652[1,-1,0,-71370,8011575],\
1653[0,0,0,-15843,-1441118],\
1654[0,0,1,-13,18],\
1655[1,0,1,-3,2],\
1656[0,-1,1,-2,0],\
1657[0,0,0,-4,1],\
1658[1,0,0,-4,3],\
1659[1,0,0,0,1],\
1660[1,1,1,-15,16],\
1661[1,0,1,-5,0],\
1662[0,-1,1,0,2],\
1663[0,0,0,-7,10],\
1664[0,1,1,-4,2],\
1665[0,1,1,-2,0],\
1666[1,-1,0,-4,4],\
1667[0,1,1,-12,12],\
1668[0,1,1,1,6],\
1669[0,0,0,-19,34],\
1670[0,-1,1,-24,54],\
1671[0,-1,1,-5,-3]]
diff --git a/divisibility_reductions/jumps.sage b/divisibility_reductions/jumps.sage
new file mode 100755
index 0000000..7517464
--- /dev/null
+++ b/divisibility_reductions/jumps.sage
@@ -0,0 +1,145 @@
1from sage.schemes.elliptic_curves.ell_generic import is_EllipticCurve
2
3# Pre-tests on E and P
4def suitable( E, P, ell ):
5 if not is_EllipticCurve(E):
6 print "E is not an elliptic curve"
7 return False
8 if E.base_field() != QQ:
9 print "E is not defined over Q"
10 return False
11 if not P in E:
12 print "P is not in E"
13 return False
14 if P.has_finite_order():
15 print "P has finite order"
16 return False
17 if not is_prime(ell):
18 print "ell is not prime"
19 return False
20 return True
21
22
23# Stupid auxiliary function. Returns higest power of n dividing m.
24def val( n, m ):
25 ret = 0
26 while m % (n^(ret+1)) == 0:
27 ret += 1
28 return ret
29
30def test_jump_kl2_label( label, ell ):
31 E = EllipticCurve( label )
32 if E.rank() < 1:
33 print "E has rank 0"
34 return
35 P = E.gens()[0]
36 test_jump_kl2( E, P, ell )
37
38def test_jump_kl2( E, P, ell ):
39 if not suitable( E, P, ell ):
40 return
41
42 flag = True
43 for p in Primes():
44 if p > 10^3:
45 break
46 if p == ell:
47 # print "Skipping", p, "because = ell"
48 continue
49 if E.discriminant() % p == 0:
50 # print "Skipping", p, "because E has bad reduction"
51 continue
52 if P.reduction(p).order() % ell != 0:
53 # print "Skipping", p, "because red of P is infinitely ell-divisible"
54 continue
55
56 # print "Working with prime p =", p
57
58 F = FiniteField(p)
59
60 for i in range(3):
61 # print "Torsion level", i, "..."
62
63 # We can build the division fields for increasing powers of l
64 # incrementally. To get a division field, we first compute the
65 # splitting field of the division polynomial. We may be off by
66 # a degree 2 extension. If so, by finite field magic we know
67 # exactly which degree 2 extension we need: the unique one!
68 R.<x> = PolynomialRing(F)
69 F.<a> = E.reduction(p).division_polynomial(ell^i).splitting_field()
70 E_red = E.reduction(p).base_extend(F)
71 # extend if necessary
72 k = val(ell,E_red.gens()[0].order())
73 h = val(ell,E_red.order()) - k
74 if k < i or h < i:
75 F.<a> = F.extension(2)
76 E_red = E_red.base_extend(F)
77
78 P_red = E_red.point(P.reduction(p))
79
80 flag = False
81 if P_red.is_divisible_by(ell):
82 # print "P ell-divisible in this torsion level"
83 flag = True
84 break
85
86 if not flag:
87 print "Point not divisible mod", p
88 print "Stopping here"
89 break
90 if flag:
91 print "*********************************"
92 print "*** Candidate counterexample! ***"
93 print "*********************************"
94
95# Wrapper
96def test_jump_den_label( label, ell ):
97 E = EllipticCurve(label)
98 if E.rank() < 1:
99 print "E has rank 0"
100 return
101 P = E.gens()[0]
102 test_jump_den( E, P, ell )
103
104def test_jump_den( E, P, ell ):
105 if not suitable( E, P, ell ):
106 return
107
108 n_primes = 0
109 inf_divisible = 0
110 tot_l_part = 0
111 tot_non_l_part = 0
112
113 for p in Primes():
114 if p > 5*10^3:
115 break
116 if p == ell or E.discriminant() % p == 0:
117 continue
118
119 n_primes += 1
120
121 E_red = E.reduction(p)
122 N = E_red.order()
123 k = val(ell,E_red.gens()[0].order())
124 h = val(ell,N) - k
125 temp_non_l_part = (N / (ell^(h+k)))-1
126 tot_non_l_part += temp_non_l_part
127 temp_l_part = N - temp_non_l_part
128 tot_l_part += temp_l_part
129
130 if P.reduction(p).order() % ell != 0:
131 inf_divisible += 1
132
133 found = RDF( inf_divisible / n_primes )
134 expected = RDF( tot_non_l_part / (tot_l_part+tot_non_l_part) )
135 print "Found: %0.3f, expected: %0.3f"%(found, expected)
136 if abs(found-expected) > 0.05:
137 print "Unexpected density! Checking divisibility in reductions..."
138 test_jump_kl2( E, P, ell )
139
140def test_from_file( filename ):
141 attach(filename)
142 for coord in data:
143 label = EllipticCurve(coord).label()
144 print "Trying curve", label, "with ell =", 3
145 test_jump_den_label(label,3)
diff --git a/divisibility_reductions/mod3mod9.sage b/divisibility_reductions/mod3mod9.sage
new file mode 100755
index 0000000..3009a58
--- /dev/null
+++ b/divisibility_reductions/mod3mod9.sage
@@ -0,0 +1,10 @@
1# Curves with surjective mod3 represetation but not surjective mod 9
2
3data = [\
4 [ 0, 0, 0, -27, -42 ],
5 [ 0, 0, 0, -162, 792 ],
6 [ 0, 0, 1, -135, -604 ],
7 [ 0, 0, 0, -5427, 153882 ],
8 [ 0, 0, 0, -201042, 34695912 ],
9 [ 0, 0, 0, -1126035, 459913278 ],
10 [ 0, 0, 1, -1127379978, -14569799990728 ] ]
diff --git a/divisibility_reductions/test_div_1.sage b/divisibility_reductions/test_div_1.sage
new file mode 100755
index 0000000..c422891
--- /dev/null
+++ b/divisibility_reductions/test_div_1.sage
@@ -0,0 +1,223 @@
1from sage.schemes.elliptic_curves.ell_generic import is_EllipticCurve
2
3# Pre-tests on E and P
4def suitable( E, P, ell ):
5 if not is_EllipticCurve(E):
6 print "E is not an elliptic curve"
7 return False
8 if E.base_field() != QQ:
9 print "E is not defined over Q"
10 return False
11 if not P in E:
12 print "P is not in E"
13 return False
14 if P.has_finite_order():
15 print "P has finite order"
16 return False
17 if not is_prime(ell):
18 print "ell is not prime"
19 return False
20 return True
21
22
23# Stupid auxiliary function. Returns higest power of n dividing m.
24def val( n, m ):
25 ret = 0
26 while m % (n^(ret+1)) == 0:
27 ret += 1
28 return ret
29
30# Valuation of l-divisibility of the point P
31# The parameters h and k describe the ell-part of E(F) (k>=h)
32def divisibility( P, ell, k, h ):
33 v = 0
34 while v != k-1 and P.is_divisible_by(ell^(v+1)):
35 v += 1
36 return v
37
38# label is the Cremona label of an elliptic curve over Q of rank >= 1.
39# ell is a rational prime.
40def test_label( label, ell ):
41 E = EllipticCurve(label)
42 if E.rank() < 1:
43 print "E has rank 0"
44 return
45 P = E.gens()[0]
46 test( E, P, ell )
47
48# E is an elliptic curve over Q and P a point of infinite order on E.
49# ell is a rational prime.
50def test( E, P, ell ):
51 if not suitable( E, P, ell ):
52 return
53
54 # Setting up for small primes cases
55 print "Computations for small primes starting..."
56 small_primes = []
57 vl = []
58 lpart = []
59 for p in Primes():
60 if p > 100:
61 break
62 if p == ell:
63 print "Skipping", p, "because = ell"
64 continue
65 if E.discriminant() % p == 0:
66 print "Skipping", p, "because E has bad reduction"
67 continue
68 if P.reduction(p).order() % ell != 0:
69 print "Skipping", p, "because red of P is infinitely ell-divisible"
70 continue
71 small_primes.append(p)
72 print "Working with prime p =", p
73
74 # "torsion level"
75 F = FiniteField(p)
76 vlj = []
77 lpj = []
78 for i in range(3): ### I WOULD LIKE TO CHANGE THIS TO SOMETHING BIGGER
79 print "Torsion level", i, "..."
80
81 # We can build the division fields for increasing powers of l
82 # incrementally. To get a division field, we first compute the
83 # splitting field of the division polynomial. We may be off by
84 # a degree 2 extension. If so, by finite field magic we know
85 # exactly which degree 2 extension we need: the unique one!
86 R.<x> = PolynomialRing(F)
87 F.<a> = E.reduction(p).division_polynomial(ell^i).splitting_field()
88 E_red = E.reduction(p).base_extend(F)
89 # extend if necessary
90 k = val(ell,E_red.gens()[0].order())
91 h = val(ell,E_red.order()) - k
92 if k < i or h < i:
93 F.<a> = F.extension(2)
94 E_red = E_red.base_extend(F)
95
96 P_red = E_red.point(P.reduction(p))
97
98 print "[Torsion field computed]"
99
100 # l-part of the abelian group E(F_i)
101 #gg = E_red.abelian_group().gens()
102 #if len( gg ) == 1:
103 # lpj.append( ( val(ell,gg[0].order()), 0 ) )
104 #else:
105 # lpj.append( (val(ell,gg[0].order()), val(ell,gg[1].order())) )
106 k = val(ell,E_red.gens()[0].order())
107 h = val(ell,E_red.order()) - k
108
109 lpj.append( ( k, h ) )
110 vlj.append(divisibility(P_red,ell,k,h))
111
112 vl.append(vlj)
113 lpart.append(lpj)
114
115 # Output
116 print "Done!"
117 for i in range(3):
118 print ""
119 print "******************************************************"
120 print "Torsion Level:", i
121 print ""
122 rows = [small_primes, [vl[j][i] for j in range(len(small_primes))],
123 [lpart[j][i] for j in range(len(small_primes))] ]
124 print table(rows)
125 print ""
126
127# Wrapper for densities(E,P,ell)
128def densities_label( label, ell ):
129 E = EllipticCurve(label)
130 if E.rank() < 1:
131 print "E has rank 0"
132 return
133 P = E.gens()[0]
134 densities( E, P, ell )
135
136def ratio( h, k, d, ell ):
137 x1 = max(k-d,0)
138 y1 = max(h-d,0)
139 x2 = max(k-d-1,0)
140 y2 = max(h-d-1,0)
141 up = ell^(x1+y1)-ell^(x2+y2)
142 down = ell^(h+k)
143 if d == 0:
144 return RDF((up+1)/down)
145 return RDF(up/down)
146
147
148# Computes the densities dens[n] of primes such that P is ell^n-divisible mod p
149def densities( E, P, ell ):
150 if not suitable( E, P, ell ):
151 return
152
153 n_primes = 0
154 divisible = []
155 inf_divisible = 0
156
157 # Array for counting divisibility with specified l-part
158 div_part = [[[0 for i in range(10)] for j in range(10)] for k in range(10)]
159 # total number of elements in the reductions that (do not) form the l-parts
160 tot_l_part = 0
161 tot_non_l_part = 0
162
163 for p in Primes():
164 if p > 10^2:
165 break
166 if p == ell or E.discriminant() % p == 0:
167 continue
168
169 n_primes +=1
170 #print "Working with prime", p
171
172 E_red = E.reduction(p)
173 N = E_red.order()
174 k = val(ell,E_red.gens()[0].order())
175 h = val(ell,N) - k
176 temp_non_l_part = (N / (ell^(h+k)))-1
177 tot_non_l_part += temp_non_l_part
178 temp_l_part = N - temp_non_l_part
179 tot_l_part += temp_l_part
180 # Debug
181 # print "Group structure at", p, ":"
182 # print E_red.abelian_group()
183 # print "Our result:", N, (k,h), temp_l_part, temp_non_l_part
184
185 if P.reduction(p).order() % ell != 0:
186 inf_divisible += 1
187 continue
188
189 n = divisibility( P.reduction(p), ell, \
190 val(ell,E.reduction(p).gens()[0].order()), 0 ) # Wrong parameters but ok
191 while len(divisible) < n+1:
192 divisible.append(0)
193 divisible[n] += 1
194 div_part[k][h][n] += 1
195
196 N = len(divisible)
197 divtotal = [0]*N
198 divtotal[N-1] = divisible[N-1] + inf_divisible
199 for i in range(2,N):
200 divtotal[N-i] = divisible[N-i] + divtotal[N-i+1]
201
202 print "Tested primes:", n_primes
203 for i in range(10):
204 for j in range(10):
205 s = 0
206 for l in range(10):
207 s += div_part[i][j][l]
208 if s != 0:
209 print "l-part (%d,%d):"%(i,j)
210 for l in range(10):
211 if div_part[i][j][l] != 0:
212 print "Exactly %d^%d-divisible: %d, expected %0.3f"%\
213 (ell,l,div_part[i][j][l],ratio(i,j,l,ell))
214
215 for n in range(1,N):
216 print "At least %d^%d-divisble: %0.3f density (%d times)"%(ell,n,\
217 RDF(divtotal[n]/n_primes),divtotal[n])
218 print "Infinitely-divisble: %0.3f density (%d times), expected %0.3f"%\
219 (RDF(inf_divisible/n_primes),inf_divisible,\
220 RDF(tot_non_l_part/(tot_l_part+tot_non_l_part)))
221
222
223

Generated with cgit - Back to sebastiano.tronto.net