William Stein -- JMM -- Solving Cubic Equations

141 days ago by WilliamStein

 

olving Cubic Equations (JMM 2012 Short Course)
William Stein

 

 

 

Solving Cubic Equations (JMM 2012 Short Course)

William Stein

This worksheet accompanies these slides.

 
       
 
       

Pythagorean triples

@interact def f(n=5, m=(1..10)): print "n*m =", n*m 
       

Click to the left again to hide and once more to show the dynamic interactive window

circle((0,0), 1) 
       
G = circle((0,0), 1, thickness=3, color='red') G += arrow((0,0), (1,1)) G.show(figsize=3) 
       
@interact def f(t=(1/4,(1/16,1/8,..,1))): t0 = t x,y,t=var('x,y,t') show([x==(1-t^2)/(1+t^2), y==2*t/(1+t^2)]) t = t0 (x,y) = ((1-t^2)/(1+t^2), 2*t/(1+t^2)) a = 1/3 G = circle((0,0), 1, color='blue', thickness=3) G += arrow((-1-a,-t*a), (x+a,y+t*a), head=2, color='red') G += point((0,t), pointsize=150, color='black', zorder=100) G += point((-1,0), pointsize=150, color='black', zorder=100) G += point((x,y), pointsize=190, color='lightgreen', zorder=100) G += text("$(0, %s)$"%t, (-.3, t+.2), fontsize=16, color='black', zorder=200) G += text(r"$(%s,\,%s)$"%(x,y), (x+.35, y+.25), fontsize=16, color='black', zorder=200) G.show(aspect_ratio=1, ymin=-1.1, ymax=1.6, xmax=2, xmin=-1.3, fontsize=0, figsize=6) 
       

Click to the left again to hide and once more to show the dynamic interactive window

 
       

Cubic equations

var('x,y') implicit_plot(x^3 + y^3 == 1, (x,-2,2), (y,-2,2), aspect_ratio=1, figsize=5, gridlines=True) 
       
var('x,y') implicit_plot(y^2 + y == x^3 - x, (x,-2,3), (y,-4.5,4), aspect_ratio=1/2, figsize=5, gridlines=True) 
       
@interact def _(equation='x^3 + y^3 == 1', xmin=-2, xmax=2, ymin=-2, ymax=2, aspect_ratio=1, gridlines=True): x,y = var('x,y') eqn = sage_eval(equation, {'x':x, 'y':y}) print eqn G = implicit_plot(eqn, (x,xmin,xmax), (y,ymin,ymax), aspect_ratio=aspect_ratio, gridlines=gridlines) G.show(figsize=4) 
       

Click to the left again to hide and once more to show the dynamic interactive window

 
       

The Group Law

How the figure in the slide was made:

E = EllipticCurve([0,0,1,-1,0]); print E G = E.plot(plot_points=600, thickness=2) G += arrow((-2,1), (3,-4), head=2, color='red', width=2) G += points([(-1,0), (0,-1), (2,-3)], color='black', pointsize=70, zorder=50) G += text("$(2,-3)$", (1.3,-3.1), fontsize=18, color='black') G += text("$(-1,0)$", (-.9,1), fontsize=18, color='black') G += text("$(0,-1)$", (-.7,-1.85), fontsize=18, color='black') G.show(gridlines=True, frame=True, aspect_ratio=1/2, xmax=3.1, xmin=-2, figsize=5) 
       
Elliptic Curve defined by y^2 + y = x^3 - x over Rational Field
Elliptic Curve defined by y^2 + y = x^3 - x over Rational Field
E = EllipticCurve([0,0,1,-1,0]) P = E([-1,0]); Q = E([0,-1]); R = E([2,-3]) print P + Q + R print -(P+Q) print 7*P 
       
(0 : 1 : 0)
(2 : -3 : 1)
(1849037896/6941055969 : -260151768440137/578280195945297 : 1)
(0 : 1 : 0)
(2 : -3 : 1)
(1849037896/6941055969 : -260151768440137/578280195945297 : 1)
for n in range(20): print n, n*P 
       
0 (0 : 1 : 0)
1 (-1 : 0 : 1)
2 (6 : -15 : 1)
3 (-20/49 : 92/343 : 1)
4 (1357/841 : -53277/24389 : 1)
5 (8385/98596 : -2882165/30959144 : 1)
6 (12551561/13608721 : -41922509264/50202571769 : 1)
7 (1849037896/6941055969 : -260151768440137/578280195945297 : 1)
8 (4881674119706/5677664356225 :
-4590618167456560854/13528653463047586625 : 1)
9 (2786836257692691/16063784753682169 :
-1600059682932627475385835/2035972062206737347698803 : 1)
10 (79799551268268089761/62586636021357187216 :
259255210055384395482322830865/495133617181351428873673516736 : 1)
11 (-280251129922563291422645/1262082793174195430038441 :
-1671718055004040020388958925246733656/141785483534417878771455050091630\
0011 : 1)
12 (54202648602164057575419038802/15402543997324146892198790401 :
11180857173039409581678017020158489404151347/191156331368737634690465971\
4182809942964351 : 1)
13
(-3239336802390544740129153150480400/3838799532815709794201672388387649
:
-285917067454929824428162917486061191698423443842800/2378445201665390432\
34240287233775865292113468549857 : 1)
14
(1425604881483182848970780090473397497201/233309228158169345619242649964\
56917601 :
53763298717486696585326456293171217861891170325799545495601/112693242618\
274179956651080434126947419217320185504463599 : 1)
15
(-596929565407758846078157850477988229836340351/546893617922188211588396\
787764926990139280196 :
-3800666403642643655110847227674635963140645047852185808295494396579/127\
89521106940379462098473081947860361167209079884962192477681132744 : 1)
16
(1356533706384096591887827693333962338847777347485221/107308058945765220\
809811860660656614527354467284025 :
-50365032156988774031285236364459740599413770141788811753437703742498250\
429144/11115999248137361773459614301018817017899056595581559037915309710\
80388326125 : 1)
17
(-2389750519110914018630990937660635435269956452770356625916/39181892852\
67774942185373848295786510876516357699200563921 :
725067746348799900588644606761022013478037973143738606082303429209254089\
80180650086565/245260787837861391472501375653359272276686314880005174634\
693349103891414816202264399719 : 1)
18
(47551938020942325784141569050513811957803129798534598981096547726/21770\
266696109124442011881780789388590757450470263397446865245441 :
-10963761475350359352350135938786611053693621632143449652108314746806805\
823225845339315809790757370/32121485684548526844165192471630959143772202\
93175188508631449136050695947224872065337330973679489 : 1)
19
(-4327678343894888631258803040444144431340575553436625441643288092401906\
5/1226476751621347613136607845307325808024424281710556312508295933674222\
609 :
462902373141521363232741754938718718260431180880138608101934088729865222\
12544410216426713039282098858026903/135827898233343905448716560067693551\
673152538152740537921844643743827405033634044345669892583398285820437797\
7 : 1)
0 (0 : 1 : 0)
1 (-1 : 0 : 1)
2 (6 : -15 : 1)
3 (-20/49 : 92/343 : 1)
4 (1357/841 : -53277/24389 : 1)
5 (8385/98596 : -2882165/30959144 : 1)
6 (12551561/13608721 : -41922509264/50202571769 : 1)
7 (1849037896/6941055969 : -260151768440137/578280195945297 : 1)
8 (4881674119706/5677664356225 : -4590618167456560854/13528653463047586625 : 1)
9 (2786836257692691/16063784753682169 : -1600059682932627475385835/2035972062206737347698803 : 1)
10 (79799551268268089761/62586636021357187216 : 259255210055384395482322830865/495133617181351428873673516736 : 1)
11 (-280251129922563291422645/1262082793174195430038441 : -1671718055004040020388958925246733656/1417854835344178787714550500916300011 : 1)
12 (54202648602164057575419038802/15402543997324146892198790401 : 11180857173039409581678017020158489404151347/1911563313687376346904659714182809942964351 : 1)
13 (-3239336802390544740129153150480400/3838799532815709794201672388387649 : -285917067454929824428162917486061191698423443842800/237844520166539043234240287233775865292113468549857 : 1)
14 (1425604881483182848970780090473397497201/23330922815816934561924264996456917601 : 53763298717486696585326456293171217861891170325799545495601/112693242618274179956651080434126947419217320185504463599 : 1)
15 (-596929565407758846078157850477988229836340351/546893617922188211588396787764926990139280196 : -3800666403642643655110847227674635963140645047852185808295494396579/12789521106940379462098473081947860361167209079884962192477681132744 : 1)
16 (1356533706384096591887827693333962338847777347485221/107308058945765220809811860660656614527354467284025 : -50365032156988774031285236364459740599413770141788811753437703742498250429144/1111599924813736177345961430101881701789905659558155903791530971080388326125 : 1)
17 (-2389750519110914018630990937660635435269956452770356625916/3918189285267774942185373848295786510876516357699200563921 : 72506774634879990058864460676102201347803797314373860608230342920925408980180650086565/245260787837861391472501375653359272276686314880005174634693349103891414816202264399719 : 1)
18 (47551938020942325784141569050513811957803129798534598981096547726/21770266696109124442011881780789388590757450470263397446865245441 : -10963761475350359352350135938786611053693621632143449652108314746806805823225845339315809790757370/3212148568454852684416519247163095914377220293175188508631449136050695947224872065337330973679489 : 1)
19 (-43276783438948886312588030404441444313405755534366254416432880924019065/1226476751621347613136607845307325808024424281710556312508295933674222609 : 46290237314152136323274175493871871826043118088013860810193408872986522212544410216426713039282098858026903/1358278982333439054487165600676935516731525381527405379218446437438274050336340443456698925833982858204377977 : 1)

Mark Watkins's Curve

E = EllipticCurve([0, 0, 1, -5115523309, -140826120488927]) n = 367770537186677506614005642341827170087932269492285584726218770061653546349271015805365134370326743061141306464500052886704651998399766478840791915307861741507273933802628157325092479708268760217101755385871816780548765478502284415627682847192752681899094962659937870630036760359293577021806237483971074931228416346507852381696883227650072039964481597215995993299744934117106289850389364006552497835877740257534533113775202882210048356163645919345794812074571029660897173224370337701056165735008590640297090298709121506266697266461993201825397369999550868142294312756322177410730532828064759604975369242350993568030726937049911607264109782746847951283794119298941214490794330902986582991229569401523519938742746376107190770204010513818349012786637889254711059455555173810904911927619899031855149292325338589831979737026402711049742594116000380601480839982975557506035851728035645241044229165029649347049289119188596869401159325131363345962579503132339847275422440094553824705189225653677459512863117911721838552934309124508134493366437408093924362039749911907416973504142322111757058584200725022632116164720164998641729522677460525999499077942125820428879526063735692685991018516862938796047597323986537154171248316943796373217191993996993714654629536884396057924790938647656663281596178145722116098216500930333824321806726937018190136190556573208807048355335567078793126656928657859036779350593274598717379730880724034301867739443749841809456715884193720328901461552659882628405842209756757167816662139945081864642108533595989975716259259240152834050940654479617147685922500856944449822045386092122409096978544817218847897640513477806598329177604246380812377739049184475550777341620985976570393037880282764967019552408400730754822676441481715385344001979832232652414888335865567377214360456003296961668177481944809066257442596772347829664126972931904101685281128944780074646796760942430959617022257479874089403564965038885379817866920048929814520268493677507059073765902671638087366488496702836326268574593123245107420348878101763123893347657020275591248824247800594270862052082185973393290009189867677259458080676065098703453539525576975639543700507625640729872340789406314394468400584455920683361976200121834430751233901473228497490561998078486251074993528871318797403348087370426900997556442577081254910572185107856605139877331015042842121106080690743578173268489400499056898312621953947967012358414547752897081097091795744203697684046066255663201242292760126759871266004516377432961917272040217147083563399987612420595275792033855676991823368254862159558450043808051481533297270035287382247038279293223946385070118082306958987268603396924054403103857444058848605587415400517670032631121206127732481340391088277796488544415738156553014768406246154666005139690428085145098272500791416214774673484501826722500527091164944262537169595848931680754096774712860490572746224094031187043204526107239201079603468297522895106598567437015083348797875364162797693968819804139548885751282687152237078260358705230284426203064493684250614282879918107733796207067250003823959412935677624093236047038637365577326399589008804507786011973155927731073034706536557461443806622707622411087809371872157210456836892493613836792026761820382217165481998924123604782787923229739171920575447007099501678380795077013113325989801385729993920818301654424251339564606876820121928372246213399859213282792511168043953443839793901139974194479300297566097664539199384651908436188732428818373302383046388859427937893841888014266685177616605644783704135794931830750265686335934066565240944049448213005591997128985560760260399214278635912634351586762354869354021530746189992899582554597632108309638569296964800046983072736238483149014714600896056552029642747991419063454749142059564274298254654925893866404955146903330024475746163543714996249652420171171054231726336493541586971431778944051481059633738399411418574323811770949729726843612672925000631355659834164200554441315451003433452466204707123811663623662837296862948061758759928631763661985185615801886205770721032006304144867787347058316392295671580091655872087209485913286930128858640442589125454268580397484571921012318872311624898317615607628176460097441336323549031828235965636277950827328087547939511112374216436584203379248450122647406094035171130740663723547675939885959363881135893035102018389444212746146250328348242610673524022378994978392020098814721974502062692815736689229759065822093942795318705345275598989426335235935505605311411301560321192269430861733743544402908586497305353600909431214933202522528717109214492959330016065810287623144179288466664888540622702346704213752456372574449563979215782406566937885352945871994541770838871930542220307771671498466518108722622109421676741544945695403509866953167277628280232464839215003474048896968037544660029755740065581270139083249903212572230417942249795467100700393944310325009677179182109970943346807335014446839612282508824324073679584122851208360459166315484891952299449340025896509298935939357721723543933108743241997387447018395925320167637640328407957069845439501381234605867495003402016724626400855369636521155009147176245904149069225438646928549072337653348704931901764847439772432025275648964681387210234070849306330191790380412396115446240832583481366372132300849060835262136832315311052903367503857437920508931305283143379423930601369154572530677278862066638884250221791647123563828956462530983567929499493346622977494903591722345188975062941907415400740881 d = 4255044272974739888318147243888463149102796676262869844129037001939069082536978320669489250948915984539247906005086523932696054371186522388041546915099800544500632766713011953565768977996873028383821265775526344346357123541112589188755147040471997532333827695072210398747506143870850088480631610375575105629402969923379906696883632426726640777829238424687657347645525014899047899951815906638258828268844376147020866010729124602050467189871119197597417729240821079066147681882592877855973838960678143778693770394049052970155019875224052204788541398018355615590746004686807306334375342979728237142659598012537711708303192309484750118781539765280348857873798901748823243463804440411715478920014959236515352089221657498291013202443206177483221913021678256235579893414436481218449503035888524081157406195476643835666127064380642209659344205748056981879653000401688873470706248622814904782273476309064826525609405548233605225179645823497793346631337770093238960301538846226719138651429924452362996719692807033817042217290429195445858873566571767269091258248510098997241843386892960591348792269127155872118132361370012052090648575376001600422257728323075912369868818631162455043825487235531941123620115037512323584244014680824673299882453235229917216799756372612183353210236861955788541952734145558006820535219145300448204001164810277892288105257230476250805684254277696678157719267749527423894682341440235747396742183997177247946449079490990330823304497772932137791366115383255184513570505904177076177300233520471453051372851804227351360933685976190213408007425987495648991648328355841518790233089971640826391421865446416159176533305374315501526687536310287865258225341831409297024404559487986223470061428509852910119956281813557240650373612303806124216826476191582759712062169110751021106200222502921039737582807865453212930003461175559301081459151181543779910592339627452978630170354145224288258324811018569690301921451517013795632224485059295610701352935567534896297148895118420851960225883402515530058117374260152928631522919378979184864047046497461715005662259748200507982418704000034189585130679648460399502892795419432308411176961777683169393789440445404586765622160449971094877274592261820143359041089932670055512981474178136881417476003157917937418370366564607602590842864145040169169286533733737493516731388736973556780735684454625005971249995694287683482906944701313969575867184534505315069252495619031118665012176098178260784016899909892825429476690659575409055152654378882121107387001622680468831012826136445746750138118199895452299627549452761944871112397182275542812517516928333071853473496479471177474588594469094399278566301150327219929702835948186371102871019478295556041049945697905300902151612670328014420769784258843405782906849447056638422038734349468953136934102682055490426413327292140435307812777834009325214610658460505162660636930982933352215314240689644147222987920125050724733503025375041491926808614281199118113561510206345027387417895539605603362871722363164659754529932197179572083803798469762841343018748973041067954703588990548236248494723651739045289521882710298950201026345472967707812057733059495444795253020394607206147343184720128913820279471137168459793296576793911217963424221938088255273195906782364624214705153806102237088023259111661251016558078055448107365117361120157257882079830434627788427533485656242565476771106266450533897646444735950588164991426098055565123345308087041154716116620172732104619949757331380529168978624213449372249365401328137208190879603847948651527305255792412098085899417962189727321732456666040832323196614881188508752637063922635721727888588861006697067295082662856621427895550981270983075947338227409588860804832689778730985756946228133612817693848327597742540052216739363382567028776997268926223424246381649078824848145698957882084132643790230707482558729729822722846435295235634841524505128041497093453481500336383856658648609091424412441302475261926217094416160502075408493720494216372326712489077723971624589353187301664632745253191939259669507578605710768387023661969449344902879751178806889386035847044662250758843856626244205371560027873450866832479574095908011314904455539494729790898211989993923922058120117863241965534093749668627907690962871059220070919266871471817412365375430285359965804594745527651369886073387194293961511036178306538077683719722004972020545664652037380978094038493268487752662394679129427435458023391430136004830903182108442372425264218315757261837807638185861100198403815128178367563386992036547922694358498639362771798041618046013662235878191246173024597377861825966407677879013966448260355004133249471832418523346215677130183097110890998963907589116151288296464688754418004789058613210310227152010490547650753213820137599826132566513659030867731020594559477466913485854520908208415598659344363758912591077035997911074276473287555243814780228662308363850635352393782937914498292574951022872659981964923226850485187083410037527178126285256712196330538305579411947408618370648081044119314858092966789985880558618838749736465935723939056195292855739824197002857471663879298568186432186480787651653279527172759403662173339216050188101734904266785209933959219574028078421130848836017714997715855156161485884192576525411096570236580006784778240115504215083155473114336654532035309712573054076300648084290382624057963622411854452712766764333742741748257176418629938669049475110145831487629518887622732479751575475237265720522099995921350373526902203987716 P = E.lift_x(n/d) 
       
       
(36777053718667750661400564234182717008793226949228558472621877006165354\
634927101580536513437032674306114130646450005288670465199839976647884079\
191530786174150727393380262815732509247970826876021710175538587181678054\
876547850228441562768284719275268189909496265993787063003676035929357702\
180623748397107493122841634650785238169688322765007203996448159721599599\
329974493411710628985038936400655249783587774025753453311377520288221004\
835616364591934579481207457102966089717322437033770105616573500859064029\
709029870912150626669726646199320182539736999955086814229431275632217741\
073053282806475960497536924235099356803072693704991160726410978274684795\
128379411929894121449079433090298658299122956940152351993874274637610719\
077020401051381834901278663788925471105945555517381090491192761989903185\
514929232533858983197973702640271104974259411600038060148083998297555750\
603585172803564524104422916502964934704928911918859686940115932513136334\
596257950313233984727542244009455382470518922565367745951286311791172183\
855293430912450813449336643740809392436203974991190741697350414232211175\
705858420072502263211616472016499864172952267746052599949907794212582042\
887952606373569268599101851686293879604759732398653715417124831694379637\
321719199399699371465462953688439605792479093864765666328159617814572211\
609821650093033382432180672693701819013619055657320880704835533556707879\
312665692865785903677935059327459871737973088072403430186773944374984180\
945671588419372032890146155265988262840584220975675716781666213994508186\
464210853359598997571625925924015283405094065447961714768592250085694444\
982204538609212240909697854481721884789764051347780659832917760424638081\
237773904918447555077734162098597657039303788028276496701955240840073075\
482267644148171538534400197983223265241488833586556737721436045600329696\
166817748194480906625744259677234782966412697293190410168528112894478007\
464679676094243095961702225747987408940356496503888537981786692004892981\
452026849367750705907376590267163808736648849670283632626857459312324510\
742034887810176312389334765702027559124882424780059427086205208218597339\
329000918986767725945808067606509870345353952557697563954370050762564072\
987234078940631439446840058445592068336197620012183443075123390147322849\
749056199807848625107499352887131879740334808737042690099755644257708125\
491057218510785660513987733101504284212110608069074357817326848940049905\
689831262195394796701235841454775289708109709179574420369768404606625566\
320124229276012675987126600451637743296191727204021714708356339998761242\
059527579203385567699182336825486215955845004380805148153329727003528738\
224703827929322394638507011808230695898726860339692405440310385744405884\
860558741540051767003263112120612773248134039108827779648854441573815655\
301476840624615466600513969042808514509827250079141621477467348450182672\
250052709116494426253716959584893168075409677471286049057274622409403118\
704320452610723920107960346829752289510659856743701508334879787536416279\
769396881980413954888575128268715223707826035870523028442620306449368425\
061428287991810773379620706725000382395941293567762409323604703863736557\
732639958900880450778601197315592773107303470653655746144380662270762241\
108780937187215721045683689249361383679202676182038221716548199892412360\
478278792322973917192057544700709950167838079507701311332598980138572999\
392081830165442425133956460687682012192837224621339985921328279251116804\
395344383979390113997419447930029756609766453919938465190843618873242881\
837330238304638885942793789384188801426668517761660564478370413579493183\
075026568633593406656524094404944821300559199712898556076026039921427863\
591263435158676235486935402153074618999289958255459763210830963856929696\
480004698307273623848314901471460089605655202964274799141906345474914205\
956427429825465492589386640495514690333002447574616354371499624965242017\
117105423172633649354158697143177894405148105963373839941141857432381177\
094972972684361267292500063135565983416420055444131545100343345246620470\
712381166362366283729686294806175875992863176366198518561580188620577072\
103200630414486778734705831639229567158009165587208720948591328693012885\
864044258912545426858039748457192101231887231162489831761560762817646009\
744133632354903182823596563627795082732808754793951111237421643658420337\
924845012264740609403517113074066372354767593988595936388113589303510201\
838944421274614625032834824261067352402237899497839202009881472197450206\
269281573668922975906582209394279531870534527559898942633523593550560531\
141130156032119226943086173374354440290858649730535360090943121493320252\
252871710921449295933001606581028762314417928846666488854062270234670421\
375245637257444956397921578240656693788535294587199454177083887193054222\
030777167149846651810872262210942167674154494569540350986695316727762828\
023246483921500347404889696803754466002975574006558127013908324990321257\
223041794224979546710070039394431032500967717918210997094334680733501444\
683961228250882432407367958412285120836045916631548489195229944934002589\
650929893593935772172354393310874324199738744701839592532016763764032840\
795706984543950138123460586749500340201672462640085536963652115500914717\
624590414906922543864692854907233765334870493190176484743977243202527564\
896468138721023407084930633019179038041239611544624083258348136637213230\
084906083526213683231531105290336750385743792050893130528314337942393060\
136915457253067727886206663888425022179164712356382895646253098356792949\
9493346622977494903591722345188975062941907415400740881/4255044272974739\
888318147243888463149102796676262869844129037001939069082536978320669489\
250948915984539247906005086523932696054371186522388041546915099800544500\
632766713011953565768977996873028383821265775526344346357123541112589188\
755147040471997532333827695072210398747506143870850088480631610375575105\
629402969923379906696883632426726640777829238424687657347645525014899047\
899951815906638258828268844376147020866010729124602050467189871119197597\
417729240821079066147681882592877855973838960678143778693770394049052970\
155019875224052204788541398018355615590746004686807306334375342979728237\
142659598012537711708303192309484750118781539765280348857873798901748823\
243463804440411715478920014959236515352089221657498291013202443206177483\
221913021678256235579893414436481218449503035888524081157406195476643835\
666127064380642209659344205748056981879653000401688873470706248622814904\
782273476309064826525609405548233605225179645823497793346631337770093238\
960301538846226719138651429924452362996719692807033817042217290429195445\
858873566571767269091258248510098997241843386892960591348792269127155872\
118132361370012052090648575376001600422257728323075912369868818631162455\
043825487235531941123620115037512323584244014680824673299882453235229917\
216799756372612183353210236861955788541952734145558006820535219145300448\
204001164810277892288105257230476250805684254277696678157719267749527423\
894682341440235747396742183997177247946449079490990330823304497772932137\
791366115383255184513570505904177076177300233520471453051372851804227351\
360933685976190213408007425987495648991648328355841518790233089971640826\
391421865446416159176533305374315501526687536310287865258225341831409297\
024404559487986223470061428509852910119956281813557240650373612303806124\
216826476191582759712062169110751021106200222502921039737582807865453212\
930003461175559301081459151181543779910592339627452978630170354145224288\
258324811018569690301921451517013795632224485059295610701352935567534896\
297148895118420851960225883402515530058117374260152928631522919378979184\
864047046497461715005662259748200507982418704000034189585130679648460399\
502892795419432308411176961777683169393789440445404586765622160449971094\
877274592261820143359041089932670055512981474178136881417476003157917937\
418370366564607602590842864145040169169286533733737493516731388736973556\
780735684454625005971249995694287683482906944701313969575867184534505315\
069252495619031118665012176098178260784016899909892825429476690659575409\
055152654378882121107387001622680468831012826136445746750138118199895452\
299627549452761944871112397182275542812517516928333071853473496479471177\
474588594469094399278566301150327219929702835948186371102871019478295556\
041049945697905300902151612670328014420769784258843405782906849447056638\
422038734349468953136934102682055490426413327292140435307812777834009325\
214610658460505162660636930982933352215314240689644147222987920125050724\
733503025375041491926808614281199118113561510206345027387417895539605603\
362871722363164659754529932197179572083803798469762841343018748973041067\
954703588990548236248494723651739045289521882710298950201026345472967707\
812057733059495444795253020394607206147343184720128913820279471137168459\
793296576793911217963424221938088255273195906782364624214705153806102237\
088023259111661251016558078055448107365117361120157257882079830434627788\
427533485656242565476771106266450533897646444735950588164991426098055565\
123345308087041154716116620172732104619949757331380529168978624213449372\
249365401328137208190879603847948651527305255792412098085899417962189727\
321732456666040832323196614881188508752637063922635721727888588861006697\
067295082662856621427895550981270983075947338227409588860804832689778730\
985756946228133612817693848327597742540052216739363382567028776997268926\
223424246381649078824848145698957882084132643790230707482558729729822722\
846435295235634841524505128041497093453481500336383856658648609091424412\
441302475261926217094416160502075408493720494216372326712489077723971624\
589353187301664632745253191939259669507578605710768387023661969449344902\
879751178806889386035847044662250758843856626244205371560027873450866832\
479574095908011314904455539494729790898211989993923922058120117863241965\
534093749668627907690962871059220070919266871471817412365375430285359965\
804594745527651369886073387194293961511036178306538077683719722004972020\
545664652037380978094038493268487752662394679129427435458023391430136004\
830903182108442372425264218315757261837807638185861100198403815128178367\
563386992036547922694358498639362771798041618046013662235878191246173024\
597377861825966407677879013966448260355004133249471832418523346215677130\
183097110890998963907589116151288296464688754418004789058613210310227152\
010490547650753213820137599826132566513659030867731020594559477466913485\
854520908208415598659344363758912591077035997911074276473287555243814780\
228662308363850635352393782937914498292574951022872659981964923226850485\
187083410037527178126285256712196330538305579411947408618370648081044119\
314858092966789985880558618838749736465935723939056195292855739824197002\
857471663879298568186432186480787651653279527172759403662173339216050188\
101734904266785209933959219574028078421130848836017714997715855156161485\
884192576525411096570236580006784778240115504215083155473114336654532035\
309712573054076300648084290382624057963622411854452712766764333742741748\
257176418629938669049475110145831487629518887622732479751575475237265720\
522099995921350373526902203987716 :
695077505324723670853460849123372287468161783878373059021457249909027403\
409062614534931818049834309542703522593189333393876631565534289774982570\
137889408544338751850772215414853299569419778528652280803854143251065760\
230437071833884557676664757607659643191715054168757586718707686265849333\
026632813336287042211733577320573892264990628370295092409524183764961743\
338927626038030625892853843224889538314312230031775083308605552395827422\
724990381985852183732881408155896216274845275597822298659520112173349540\
359204529908100187893692759575761670277557695372578794051848839848121379\
164466853158491492861157457663029065155058921732269151386354385109545694\
022439272337750516865068834720760837820642799806212642427302147390313453\
472228176792168515595440535784206295229583169730998445549445791116794751\
389829535532703121487500629450792464569954945831373191287561555234018063\
002103077525358162283134294239777729364180284552798625482164026920371271\
175877577685892800042722135897729806261579942730783196614173986116399763\
721376543402443756304871889358288251115313368669483223231236114774136858\
186665735278290218613617634374508575143412311005724442092951616677516586\
269488538059767404745964164514520576587267967662402007853765976380205317\
687362332885057441368584044414786187876505780970337726143419004705575426\
927787234206872117911424050324977763211299105209498360737291867233811789\
621793628274397586960961873964276895888013115661589319071560634317962943\
975917659211602031749041250785593396934301051883288443038335997971847521\
797957461193728102558760169180184018198304895916306602738845126971939250\
675457332675345824500196319742465553513721626157802428671580416486974275\
908557046272480566653722540078433983721455773731757653638479204637561337\
282976357581120579101261758561852354118354701420086843774336456995033937\
803765598187931456155183016269287617233294360082093398630556942391204014\
570922771383496210546349520921093212867364818034748673775492682277795844\
753511349113439934933642727702979847333223346769909517995520806578326766\
185700413833645831201661661167451833437244266758895705926909864465959909\
702422655413865990967666842118586512999500410363280825463919106366499695\
264043754164747540613154584581399656460127958835941179406956826248511639\
771146960729691433254721918509071638386985687731309229742120611796286948\
721649654016287981286649352643328123490559741204071219405231388878140430\
248399830006966807060400015578896763222408680020309608927232799923317457\
289154256073214111833623403666821767834009996181317870687968558423030474\
122935005445146108748479622067848791348020996870957031249950757665826997\
814115898837422343586646387676511724075525629613277810913886840060473342\
757208981051720850579952860563193937660062915962258042397424526300942675\
068374196921875981389572827582981731156571680119747730996272230148791647\
512940216662810804450158172331909489944447445184244422133353646912662783\
041511594723980651960374438596302763169339523422886241468061749300521518\
859035746275969717089680289318436739710137904855549414626927018797626178\
929876183357831300028369604066380243307335142205339619670018793898595951\
472792432062462666401758343152246887601818516133446068453366636694239678\
850592905264644531321210268049485634007007539602843881712349429672952672\
074095249515804084352430570126281131514732283077216432460501629312607341\
947547101121406950648536587486423152632674942294212064022898724140480764\
717887669148594310273250920810780636213418882302044946653448391529548279\
567464752489598688036881259519921957789148783218390581402467031603006058\
264285936913335239303539146629044563610401934228553640031040265600618408\
969988837735051562791400431900429816371749154117987995298214702231035259\
437660063551296089081484764278033114772115019351762532567382617515325794\
603321754540514345131508049785150180694530456625992679645063306710374525\
916578015193927150078307520504387953044338686957511570173746990879650293\
922219789132681262374317787661565696889773651221228038565859842065804382\
511777540523102773365909440357964824679846977472724193197721978050044928\
276226522161889153960798193121339665120479794878175280249538338626740588\
280266380765547797808439857640883327300796177817508285064642855320544518\
689493643761067520765585560875504575698570637100796456501984423382558106\
674104405591330693983749039413410399223533285226215342925257265381541216\
633719831400956605044096186669865952467241058589474240379395713115158945\
769325470100377100612072212173461629294707151473391817623805548276067340\
322654178302165803739181663937124344626530723466901044397895582103768338\
720949184280323265432481621304037421412465564708951708824336255402545263\
649774444580008643194191948550177591918380041978495533607883695180212477\
117426508327936374702274814452512509781172574466288385614817656383945051\
135779252693540077796285251607877775438711668618205363653361663413550269\
658536040701751826649668685917581361990269376721515719547507248495035332\
890160951674456580278716557580403604745239022522878369987888832188996581\
304695642057562674132046810117416988335015923090350163534173337776858682\
411243469887188669063499712504040426395951096173911601837197198946759204\
957195624841083061338588055222243196946082264938920616060089357741125292\
109752023704074102881270488699985014297484311362105537014933746444253229\
733335251105160821354950233361867296787318571632808165320220703962449564\
745290814249857030302017347275435082574986648481014622564205973483741662\
507207228094967106834883774857851307675649663536103999736743448871705676\
495549550364094126906225000299939349295304214674980298133395337158564187\
601161247211253952982696357664256516395986916266915275334262947794914842\
632723750022447089593262019875528629853930457890359644923966883284347809\
898926182678406237968337136734364659994932801970766193874601086911509232\
624567700513111709857701549057415994477832427790592005155021997970431786\
383841314049585024029880632046047177186466562847728088218122069831234697\
475089588077520338166962374862850660046416751879458816404978730876797173\
354450710948499058617686238872250996880868909754277673458833553281435533\
629857822224680452583481607311394968315345534543704895516632190760053511\
534879525135344999274744986588539282368558623726251691496955291895684493\
188910566879418636241726737150765502260825719895216086489336598731742800\
967187219387739187495444221834096096248002467650884231023626689988098224\
590074272970545240348900442866375122654960388519936693095492183682378944\
431304597848060409444391704454958843056589720552397209954552023541657844\
862233316855237508150281864995120924862262578742160003380914623284497846\
213479212731993949542353858024115152137696502127008082419056925381017638\
477503605082813424220028228428027519363850088397428263181252132695427407\
725812391380424366608120952736692897618381195615176263955092196374374906\
784998087285478368583189674715029611718979478688055092902782793114706785\
450829000636013107341576244120721496055274994425569601033466628592331603\
061967303976194375230169548684545331861948281232814351906155766847275170\
007050748539253257742383196392569082776263294834242646153748841081163066\
033731330459294985489723564734206924187120552661131719912016736272313312\
532100055825725793517266277095868598107332026273971335088491076456666411\
465692554088888231714615631032137061639328635776203237532866141342205990\
317587952634635941288556077680706543420055425803775870822876314584001355\
500678529882087670195971543879969780453902809544857711812499583984378290\
168182577318836107840600562910185648756205226687840123920105200348540366\
519346984886722698366412949490951545737099422906866107392635596697522448\
962317607327862641507495878678982899409463975088243968271504339878641377\
178894136610091068730007617827545460590433230308495553388990817155905394\
494046311347294575786988527324832864074673006304050019052009954017583570\
917667258222788606586712460993675720154007133541776788575842813012978810\
653768636663360674127550688192510372223093847574009529319332098386728002\
246957569988434994646122171003995741713413380823837074857449053541130996\
190977874223228305568295480817924390126303222752049044992083098027969143\
302283469154766748745349068640404771396949923672182300625224820195515412\
90583043160067178278665250512843536545830339/877720263466465641846961394\
846935429170462217591065807135619911831601073460569646249732948659090372\
604361284336372445545466100940103181006021636004737029136084292687531382\
132960371296384572923688697241483835255862292923301612878006525991829215\
531891419716648650718731493817500610039527529051718088283706808719714764\
634612343482907305472201167009699994513137139534187586785232329871415421\
670941733361883563948991554257578411218332418521027987685673763240216045\
538232691648721242088750342469649042911538615219298161509669767288453676\
619219024278774429077044924917603068575070784819236362390214355678481412\
133818495455774859639161952478125326929086342398138871576086428154668548\
531761192384426534083510503730843451507242203937787487973853577725704020\
004673356727414338663886912492573284604318118104266845659692114968948903\
682690843373631434133565851744324616640271300086282832283675976710879662\
393550815632880826666634560847428201968178437106806736301087859858099266\
889090835851372112630157351542922104962175642190114669449623820990618939\
613623532795168418241706105990554561267116886476039275837780070406858003\
614990740381128552612379540887629490478565230568726939062994507195145832\
617904792102121812561680617802455193365475512610705787098972700392135262\
392204726113015852907674928428183955283292165581894825913098788777437666\
896821075754363137244384070917183861753885232619126544548117992816841454\
983543262276601819997778516711764604715897956983915577375937008179541624\
676342160416395258211985721716859169633754511836513045846980767824479067\
938878456882459541424479369861491091597104333254990099871348051055240341\
773227073538744040028954495319311080301596360754128519447420565986209700\
028828730922375053986864033224262367426624683982807568361323479432917621\
780667521689699877655406691111011870328967406210492499092385184824985948\
575837615918507364510425757211389340510233303206786240828653036358621111\
617546120556686310722224631035337022524328864283786337315740952789204926\
817908543579549155560716461228175529553136014628529393175689060237637274\
752022335152397883069490914530799678636717368285010515747617022139881814\
158833200382206194984544733024176862866163216792651893116689582840269229\
537047320043297697652102756426736670641941607877534464401565760586984546\
922170851203940475132152754048316484475055982000535752232456462591979931\
276284614123950563814280543243404162082760710868145633737206490416292508\
710719598547694020122009650851652579345668372064447430854216747137641140\
642095099999243464942756559548111237375252206078053729912746099537023654\
335047583066366815351578343524887928678144427721743064933349247225276764\
068713951436795873313353025497413035863782599820562033869563736049444557\
509221658573379729215654744151631954649144963159469463167329688907019430\
692388254918955774190020705226946128708414333966277973862980318620594483\
339575241864547240117307338366825252630324329645125854916270835658131376\
031966128131250191082851623570717766444230040434642509836995451261164107\
963718923465039481221952177531578614555134416996374853183780762788154733\
933880574202458222422180254284691843755291569047914833906935217849694265\
050213870455018335433496777127598285618288488360441034514537247403090796\
265999330750755402804301123030848426067952035550292732853094063292784658\
480403800782918624191441485882333003993288502417448755083385236263786023\
843566351346984140470054555730599518318897105200180986180900765065400726\
286395297058782967343582917828160369801586453262648285901753010674709026\
642686504271530842091387359797103515300994190623189474696644514123355296\
254047376395103307072815967713014762662178476899190033614922838198553425\
788500414937396991192688579777670999705910275201730535800997634403511402\
439598148709300031493973225055543589748894928765309332185326657184237983\
012654715372954903692042573658692142997891554691877851609372215686763632\
551886672233621753566649833100347763813263462799124921343518209117630267\
067757756573472239912712212683975487313790697914004289782518077332718610\
778235830159848442918197243753376309666754033679946991604599491289461023\
618175783589014045640728209382092133188139719803120180621683961065728453\
650404728102357937113166573492290478386605323505501548439423176487123752\
178520939314028997236282288469814673503386976980754954877966187198454589\
093736610076486275207754147187990272524417135550318685898734056865389772\
038113943504779168877603930123195052909408981710448702136577488463528072\
245731501886983009003765703965496525739758568974586084880608072232469045\
472716713479658433779168201599923330086867345697946627825182660013659972\
001781884869877975868869191889412874803163089353225012377983888499642595\
541599257475465269547147476734358724572640618232917658066867963158022326\
736087725659646156333478794463754284645600335188147189225760167165134130\
871216627010818180578212298229913766631228282430664758362498907303715664\
929224289385201307078370122659976614620215423830615704902834848046286493\
264209744690677374223857013328924282600228294653678578263100952591605973\
896929125970587171568377256896566469918477374077771228048277571593545575\
675139549881754979347745669599841776868446798326904161469020669849890972\
586648770212162253680248361891735058708789138493091251852126588903138625\
099000395215226172204854763823264616812661343203807042410506548579620299\
632048556868211801632186299116747845532176801473843812875418559677261927\
940646244382753413005696370440504493534865322511417479078014988768758478\
540252288402865828363316378772091170899254057586470591435393441702264551\
422070904635762764756435742561869299534037486433974804503102803296656969\
863651058266846723612544774506234161703002511149037140128616513705911807\
474327073644050125847289134612787246266723267906874880411602541395948815\
793131247756110014594571261294991486210481559479499924984196432151768467\
320043456761896424380045586489482989404377727501074100609937349198384307\
751149791742050570305995249586246836173933881251569975695362033464065819\
287679382923607343457374165662308840745310809724556472521319827282691628\
960213414273956424941956776287829046327040857492202207660243998251289691\
018460299752906584689451049669910182663630665585734116248776598516283336\
306238955994605808366692398601224314844578652382570828533580940230772682\
829918745263634256226485025073864700833700407364858866371762496459171279\
615617605181130358700869580223844300065936026282227420115705898917114060\
536375726271503971183643526720110491118531088120958778708590221406701112\
024920692093039009200201392652861700284059865273985862603286314831335099\
057009963646694831503725127948358429826293225140659548337824678580753561\
174963376305803789735971704086896140581828409961794884943304943657539157\
930011985192852975642262272330639686967627597002955444358567895102791689\
484397506014967553079972413755823628654236226995391009600260193511846092\
667640164767004762014244543393176600411480417811642756570041830664590212\
638836246882550745968930006088632126637056269357112674966620085427266069\
218329299204093430242299570500635207459471146029461193925926199067802451\
194421663867072911481564232195200209072936979129483937846034615454314448\
533513325165607703222023639689839404949841405186691775454941459199907947\
426121159156561875136279641600329240002473698492938862967572333789482969\
467831557292202074011780091641058643348065447019368350238015401062356911\
606272133028359051255907344061181468050538016417303777690286490567459226\
788266078863727715174617067597278579652176374385081117492469284753763412\
706855143324582123901596784182841880846238726998270161533431064261527000\
059735629692405901437108556641596336650814563152166844202687173077360163\
222536481067561914155708265091485742210684077905669060501937333845292691\
163672160327235408550245089177210410090020020334098615139308343009882938\
407858781187185321873699541076863770192834270234102855109627861019516454\
438198628254250118001114592473132980018272670931254297636380393953467883\
583509112477469495655778054011823030753830895277464821589669313472025391\
612437517274936274614982051098379056506394789661087425764071774788854852\
454342835512463542681838049201039401281501701241003324491337189581278441\
468221535998827151769256837986983149652599073395299602070539042688325287\
1127913736 : 1)
(367770537186677506614005642341827170087932269492285584726218770061653546349271015805365134370326743061141306464500052886704651998399766478840791915307861741507273933802628157325092479708268760217101755385871816780548765478502284415627682847192752681899094962659937870630036760359293577021806237483971074931228416346507852381696883227650072039964481597215995993299744934117106289850389364006552497835877740257534533113775202882210048356163645919345794812074571029660897173224370337701056165735008590640297090298709121506266697266461993201825397369999550868142294312756322177410730532828064759604975369242350993568030726937049911607264109782746847951283794119298941214490794330902986582991229569401523519938742746376107190770204010513818349012786637889254711059455555173810904911927619899031855149292325338589831979737026402711049742594116000380601480839982975557506035851728035645241044229165029649347049289119188596869401159325131363345962579503132339847275422440094553824705189225653677459512863117911721838552934309124508134493366437408093924362039749911907416973504142322111757058584200725022632116164720164998641729522677460525999499077942125820428879526063735692685991018516862938796047597323986537154171248316943796373217191993996993714654629536884396057924790938647656663281596178145722116098216500930333824321806726937018190136190556573208807048355335567078793126656928657859036779350593274598717379730880724034301867739443749841809456715884193720328901461552659882628405842209756757167816662139945081864642108533595989975716259259240152834050940654479617147685922500856944449822045386092122409096978544817218847897640513477806598329177604246380812377739049184475550777341620985976570393037880282764967019552408400730754822676441481715385344001979832232652414888335865567377214360456003296961668177481944809066257442596772347829664126972931904101685281128944780074646796760942430959617022257479874089403564965038885379817866920048929814520268493677507059073765902671638087366488496702836326268574593123245107420348878101763123893347657020275591248824247800594270862052082185973393290009189867677259458080676065098703453539525576975639543700507625640729872340789406314394468400584455920683361976200121834430751233901473228497490561998078486251074993528871318797403348087370426900997556442577081254910572185107856605139877331015042842121106080690743578173268489400499056898312621953947967012358414547752897081097091795744203697684046066255663201242292760126759871266004516377432961917272040217147083563399987612420595275792033855676991823368254862159558450043808051481533297270035287382247038279293223946385070118082306958987268603396924054403103857444058848605587415400517670032631121206127732481340391088277796488544415738156553014768406246154666005139690428085145098272500791416214774673484501826722500527091164944262537169595848931680754096774712860490572746224094031187043204526107239201079603468297522895106598567437015083348797875364162797693968819804139548885751282687152237078260358705230284426203064493684250614282879918107733796207067250003823959412935677624093236047038637365577326399589008804507786011973155927731073034706536557461443806622707622411087809371872157210456836892493613836792026761820382217165481998924123604782787923229739171920575447007099501678380795077013113325989801385729993920818301654424251339564606876820121928372246213399859213282792511168043953443839793901139974194479300297566097664539199384651908436188732428818373302383046388859427937893841888014266685177616605644783704135794931830750265686335934066565240944049448213005591997128985560760260399214278635912634351586762354869354021530746189992899582554597632108309638569296964800046983072736238483149014714600896056552029642747991419063454749142059564274298254654925893866404955146903330024475746163543714996249652420171171054231726336493541586971431778944051481059633738399411418574323811770949729726843612672925000631355659834164200554441315451003433452466204707123811663623662837296862948061758759928631763661985185615801886205770721032006304144867787347058316392295671580091655872087209485913286930128858640442589125454268580397484571921012318872311624898317615607628176460097441336323549031828235965636277950827328087547939511112374216436584203379248450122647406094035171130740663723547675939885959363881135893035102018389444212746146250328348242610673524022378994978392020098814721974502062692815736689229759065822093942795318705345275598989426335235935505605311411301560321192269430861733743544402908586497305353600909431214933202522528717109214492959330016065810287623144179288466664888540622702346704213752456372574449563979215782406566937885352945871994541770838871930542220307771671498466518108722622109421676741544945695403509866953167277628280232464839215003474048896968037544660029755740065581270139083249903212572230417942249795467100700393944310325009677179182109970943346807335014446839612282508824324073679584122851208360459166315484891952299449340025896509298935939357721723543933108743241997387447018395925320167637640328407957069845439501381234605867495003402016724626400855369636521155009147176245904149069225438646928549072337653348704931901764847439772432025275648964681387210234070849306330191790380412396115446240832583481366372132300849060835262136832315311052903367503857437920508931305283143379423930601369154572530677278862066638884250221791647123563828956462530983567929499493346622977494903591722345188975062941907415400740881/4255044272974739888318147243888463149102796676262869844129037001939069082536978320669489250948915984539247906005086523932696054371186522388041546915099800544500632766713011953565768977996873028383821265775526344346357123541112589188755147040471997532333827695072210398747506143870850088480631610375575105629402969923379906696883632426726640777829238424687657347645525014899047899951815906638258828268844376147020866010729124602050467189871119197597417729240821079066147681882592877855973838960678143778693770394049052970155019875224052204788541398018355615590746004686807306334375342979728237142659598012537711708303192309484750118781539765280348857873798901748823243463804440411715478920014959236515352089221657498291013202443206177483221913021678256235579893414436481218449503035888524081157406195476643835666127064380642209659344205748056981879653000401688873470706248622814904782273476309064826525609405548233605225179645823497793346631337770093238960301538846226719138651429924452362996719692807033817042217290429195445858873566571767269091258248510098997241843386892960591348792269127155872118132361370012052090648575376001600422257728323075912369868818631162455043825487235531941123620115037512323584244014680824673299882453235229917216799756372612183353210236861955788541952734145558006820535219145300448204001164810277892288105257230476250805684254277696678157719267749527423894682341440235747396742183997177247946449079490990330823304497772932137791366115383255184513570505904177076177300233520471453051372851804227351360933685976190213408007425987495648991648328355841518790233089971640826391421865446416159176533305374315501526687536310287865258225341831409297024404559487986223470061428509852910119956281813557240650373612303806124216826476191582759712062169110751021106200222502921039737582807865453212930003461175559301081459151181543779910592339627452978630170354145224288258324811018569690301921451517013795632224485059295610701352935567534896297148895118420851960225883402515530058117374260152928631522919378979184864047046497461715005662259748200507982418704000034189585130679648460399502892795419432308411176961777683169393789440445404586765622160449971094877274592261820143359041089932670055512981474178136881417476003157917937418370366564607602590842864145040169169286533733737493516731388736973556780735684454625005971249995694287683482906944701313969575867184534505315069252495619031118665012176098178260784016899909892825429476690659575409055152654378882121107387001622680468831012826136445746750138118199895452299627549452761944871112397182275542812517516928333071853473496479471177474588594469094399278566301150327219929702835948186371102871019478295556041049945697905300902151612670328014420769784258843405782906849447056638422038734349468953136934102682055490426413327292140435307812777834009325214610658460505162660636930982933352215314240689644147222987920125050724733503025375041491926808614281199118113561510206345027387417895539605603362871722363164659754529932197179572083803798469762841343018748973041067954703588990548236248494723651739045289521882710298950201026345472967707812057733059495444795253020394607206147343184720128913820279471137168459793296576793911217963424221938088255273195906782364624214705153806102237088023259111661251016558078055448107365117361120157257882079830434627788427533485656242565476771106266450533897646444735950588164991426098055565123345308087041154716116620172732104619949757331380529168978624213449372249365401328137208190879603847948651527305255792412098085899417962189727321732456666040832323196614881188508752637063922635721727888588861006697067295082662856621427895550981270983075947338227409588860804832689778730985756946228133612817693848327597742540052216739363382567028776997268926223424246381649078824848145698957882084132643790230707482558729729822722846435295235634841524505128041497093453481500336383856658648609091424412441302475261926217094416160502075408493720494216372326712489077723971624589353187301664632745253191939259669507578605710768387023661969449344902879751178806889386035847044662250758843856626244205371560027873450866832479574095908011314904455539494729790898211989993923922058120117863241965534093749668627907690962871059220070919266871471817412365375430285359965804594745527651369886073387194293961511036178306538077683719722004972020545664652037380978094038493268487752662394679129427435458023391430136004830903182108442372425264218315757261837807638185861100198403815128178367563386992036547922694358498639362771798041618046013662235878191246173024597377861825966407677879013966448260355004133249471832418523346215677130183097110890998963907589116151288296464688754418004789058613210310227152010490547650753213820137599826132566513659030867731020594559477466913485854520908208415598659344363758912591077035997911074276473287555243814780228662308363850635352393782937914498292574951022872659981964923226850485187083410037527178126285256712196330538305579411947408618370648081044119314858092966789985880558618838749736465935723939056195292855739824197002857471663879298568186432186480787651653279527172759403662173339216050188101734904266785209933959219574028078421130848836017714997715855156161485884192576525411096570236580006784778240115504215083155473114336654532035309712573054076300648084290382624057963622411854452712766764333742741748257176418629938669049475110145831487629518887622732479751575475237265720522099995921350373526902203987716 : 69507750532472367085346084912337228746816178387837305902145724990902740340906261453493181804983430954270352259318933339387663156553428977498257013788940854433875185077221541485329956941977852865228080385414325106576023043707183388455767666475760765964319171505416875758671870768626584933302663281333628704221173357732057389226499062837029509240952418376496174333892762603803062589285384322488953831431223003177508330860555239582742272499038198585218373288140815589621627484527559782229865952011217334954035920452990810018789369275957576167027755769537257879405184883984812137916446685315849149286115745766302906515505892173226915138635438510954569402243927233775051686506883472076083782064279980621264242730214739031345347222817679216851559544053578420629522958316973099844554944579111679475138982953553270312148750062945079246456995494583137319128756155523401806300210307752535816228313429423977772936418028455279862548216402692037127117587757768589280004272213589772980626157994273078319661417398611639976372137654340244375630487188935828825111531336866948322323123611477413685818666573527829021861361763437450857514341231100572444209295161667751658626948853805976740474596416451452057658726796766240200785376597638020531768736233288505744136858404441478618787650578097033772614341900470557542692778723420687211791142405032497776321129910520949836073729186723381178962179362827439758696096187396427689588801311566158931907156063431796294397591765921160203174904125078559339693430105188328844303833599797184752179795746119372810255876016918018401819830489591630660273884512697193925067545733267534582450019631974246555351372162615780242867158041648697427590855704627248056665372254007843398372145577373175765363847920463756133728297635758112057910126175856185235411835470142008684377433645699503393780376559818793145615518301626928761723329436008209339863055694239120401457092277138349621054634952092109321286736481803474867377549268227779584475351134911343993493364272770297984733322334676990951799552080657832676618570041383364583120166166116745183343724426675889570592690986446595990970242265541386599096766684211858651299950041036328082546391910636649969526404375416474754061315458458139965646012795883594117940695682624851163977114696072969143325472191850907163838698568773130922974212061179628694872164965401628798128664935264332812349055974120407121940523138887814043024839983000696680706040001557889676322240868002030960892723279992331745728915425607321411183362340366682176783400999618131787068796855842303047412293500544514610874847962206784879134802099687095703124995075766582699781411589883742234358664638767651172407552562961327781091388684006047334275720898105172085057995286056319393766006291596225804239742452630094267506837419692187598138957282758298173115657168011974773099627223014879164751294021666281080445015817233190948994444744518424442213335364691266278304151159472398065196037443859630276316933952342288624146806174930052151885903574627596971708968028931843673971013790485554941462692701879762617892987618335783130002836960406638024330733514220533961967001879389859595147279243206246266640175834315224688760181851613344606845336663669423967885059290526464453132121026804948563400700753960284388171234942967295267207409524951580408435243057012628113151473228307721643246050162931260734194754710112140695064853658748642315263267494229421206402289872414048076471788766914859431027325092081078063621341888230204494665344839152954827956746475248959868803688125951992195778914878321839058140246703160300605826428593691333523930353914662904456361040193422855364003104026560061840896998883773505156279140043190042981637174915411798799529821470223103525943766006355129608908148476427803311477211501935176253256738261751532579460332175454051434513150804978515018069453045662599267964506330671037452591657801519392715007830752050438795304433868695751157017374699087965029392221978913268126237431778766156569688977365122122803856585984206580438251177754052310277336590944035796482467984697747272419319772197805004492827622652216188915396079819312133966512047979487817528024953833862674058828026638076554779780843985764088332730079617781750828506464285532054451868949364376106752076558556087550457569857063710079645650198442338255810667410440559133069398374903941341039922353328522621534292525726538154121663371983140095660504409618666986595246724105858947424037939571311515894576932547010037710061207221217346162929470715147339181762380554827606734032265417830216580373918166393712434462653072346690104439789558210376833872094918428032326543248162130403742141246556470895170882433625540254526364977444458000864319419194855017759191838004197849553360788369518021247711742650832793637470227481445251250978117257446628838561481765638394505113577925269354007779628525160787777543871166861820536365336166341355026965853604070175182664966868591758136199026937672151571954750724849503533289016095167445658027871655758040360474523902252287836998788883218899658130469564205756267413204681011741698833501592309035016353417333777685868241124346988718866906349971250404042639595109617391160183719719894675920495719562484108306133858805522224319694608226493892061606008935774112529210975202370407410288127048869998501429748431136210553701493374644425322973333525110516082135495023336186729678731857163280816532022070396244956474529081424985703030201734727543508257498664848101462256420597348374166250720722809496710683488377485785130767564966353610399973674344887170567649554955036409412690622500029993934929530421467498029813339533715856418760116124721125395298269635766425651639598691626691527533426294779491484263272375002244708959326201987552862985393045789035964492396688328434780989892618267840623796833713673436465999493280197076619387460108691150923262456770051311170985770154905741599447783242779059200515502199797043178638384131404958502402988063204604717718646656284772808821812206983123469747508958807752033816696237486285066004641675187945881640497873087679717335445071094849905861768623887225099688086890975427767345883355328143553362985782222468045258348160731139496831534553454370489551663219076005351153487952513534499927474498658853928236855862372625169149695529189568449318891056687941863624172673715076550226082571989521608648933659873174280096718721938773918749544422183409609624800246765088423102362668998809822459007427297054524034890044286637512265496038851993669309549218368237894443130459784806040944439170445495884305658972055239720995455202354165784486223331685523750815028186499512092486226257874216000338091462328449784621347921273199394954235385802411515213769650212700808241905692538101763847750360508281342422002822842802751936385008839742826318125213269542740772581239138042436660812095273669289761838119561517626395509219637437490678499808728547836858318967471502961171897947868805509290278279311470678545082900063601310734157624412072149605527499442556960103346662859233160306196730397619437523016954868454533186194828123281435190615576684727517000705074853925325774238319639256908277626329483424264615374884108116306603373133045929498548972356473420692418712055266113171991201673627231331253210005582572579351726627709586859810733202627397133508849107645666641146569255408888823171461563103213706163932863577620323753286614134220599031758795263463594128855607768070654342005542580377587082287631458400135550067852988208767019597154387996978045390280954485771181249958398437829016818257731883610784060056291018564875620522668784012392010520034854036651934698488672269836641294949095154573709942290686610739263559669752244896231760732786264150749587867898289940946397508824396827150433987864137717889413661009106873000761782754546059043323030849555338899081715590539449404631134729457578698852732483286407467300630405001905200995401758357091766725822278860658671246099367572015400713354177678857584281301297881065376863666336067412755068819251037222309384757400952931933209838672800224695756998843499464612217100399574171341338082383707485744905354113099619097787422322830556829548081792439012630322275204904499208309802796914330228346915476674874534906864040477139694992367218230062522482019551541290583043160067178278665250512843536545830339/8777202634664656418469613948469354291704622175910658071356199118316010734605696462497329486590903726043612843363724455454661009401031810060216360047370291360842926875313821329603712963845729236886972414838352558622929233016128780065259918292155318914197166486507187314938175006100395275290517180882837068087197147646346123434829073054722011670096999945131371395341875867852323298714154216709417333618835639489915542575784112183324185210279876856737632402160455382326916487212420887503424696490429115386152192981615096697672884536766192190242787744290770449249176030685750707848192363623902143556784814121338184954557748596391619524781253269290863423981388715760864281546685485317611923844265340835105037308434515072422039377874879738535777257040200046733567274143386638869124925732846043181181042668456596921149689489036826908433736314341335658517443246166402713000862828322836759767108796623935508156328808266666345608474282019681784371068067363010878598580992668890908358513721126301573515429221049621756421901146694496238209906189396136235327951684182417061059905545612671168864760392758377800704068580036149907403811285526123795408876294904785652305687269390629945071951458326179047921021218125616806178024551933654755126107057870989727003921352623922047261130158529076749284281839552832921655818948259130987887774376668968210757543631372443840709171838617538852326191265445481179928168414549835432622766018199977785167117646047158979569839155773759370081795416246763421604163952582119857217168591696337545118365130458469807678244790679388784568824595414244793698614910915971043332549900998713480510552403417732270735387440400289544953193110803015963607541285194474205659862097000288287309223750539868640332242623674266246839828075683613234794329176217806675216896998776554066911110118703289674062104924990923851848249859485758376159185073645104257572113893405102333032067862408286530363586211116175461205566863107222246310353370225243288642837863373157409527892049268179085435795491555607164612281755295531360146285293931756890602376372747520223351523978830694909145307996786367173682850105157476170221398818141588332003822061949845447330241768628661632167926518931166895828402692295370473200432976976521027564267366706419416078775344644015657605869845469221708512039404751321527540483164844750559820005357522324564625919799312762846141239505638142805432434041620827607108681456337372064904162925087107195985476940201220096508516525793456683720644474308542167471376411406420950999992434649427565595481112373752522060780537299127460995370236543350475830663668153515783435248879286781444277217430649333492472252767640687139514367958733133530254974130358637825998205620338695637360494445575092216585733797292156547441516319546491449631594694631673296889070194306923882549189557741900207052269461287084143339662779738629803186205944833395752418645472401173073383668252526303243296451258549162708356581313760319661281312501910828516235707177664442300404346425098369954512611641079637189234650394812219521775315786145551344169963748531837807627881547339338805742024582224221802542846918437552915690479148339069352178496942650502138704550183354334967771275982856182884883604410345145372474030907962659993307507554028043011230308484260679520355502927328530940632927846584804038007829186241914414858823330039932885024174487550833852362637860238435663513469841404700545557305995183188971052001809861809007650654007262863952970587829673435829178281603698015864532626482859017530106747090266426865042715308420913873597971035153009941906231894746966445141233552962540473763951033070728159677130147626621784768991900336149228381985534257885004149373969911926885797776709997059102752017305358009976344035114024395981487093000314939732250555435897488949287653093321853266571842379830126547153729549036920425736586921429978915546918778516093722156867636325518866722336217535666498331003477638132634627991249213435182091176302670677577565734722399127122126839754873137906979140042897825180773327186107782358301598484429181972437533763096667540336799469916045994912894610236181757835890140456407282093820921331881397198031201806216839610657284536504047281023579371131665734922904783866053235055015484394231764871237521785209393140289972362822884698146735033869769807549548779661871984545890937366100764862752077541471879902725244171355503186858987340568653897720381139435047791688776039301231950529094089817104487021365774884635280722457315018869830090037657039654965257397585689745860848806080722324690454727167134796584337791682015999233300868673456979466278251826600136599720017818848698779758688691918894128748031630893532250123779838884996425955415992574754652695471474767343587245726406182329176580668679631580223267360877256596461563334787944637542846456003351881471892257601671651341308712166270108181805782122982299137666312282824306647583624989073037156649292242893852013070783701226599766146202154238306157049028348480462864932642097446906773742238570133289242826002282946536785782631009525916059738969291259705871715683772568965664699184773740777712280482775715935455756751395498817549793477456695998417768684467983269041614690206698498909725866487702121622536802483618917350587087891384930912518521265889031386250990003952152261722048547638232646168126613432038070424105065485796202996320485568682118016321862991167478455321768014738438128754185596772619279406462443827534130056963704405044935348653225114174790780149887687584785402522884028658283633163787720911708992540575864705914353934417022645514220709046357627647564357425618692995340374864339748045031028032966569698636510582668467236125447745062341617030025111490371401286165137059118074743270736440501258472891346127872462667232679068748804116025413959488157931312477561100145945712612949914862104815594794999249841964321517684673200434567618964243800455864894829894043777275010741006099373491983843077511497917420505703059952495862468361739338812515699756953620334640658192876793829236073434573741656623088407453108097245564725213198272826916289602134142739564249419567762878290463270408574922022076602439982512896910184602997529065846894510496699101826636306655857341162487765985162833363062389559946058083666923986012243148445786523825708285335809402307726828299187452636342562264850250738647008337004073648588663717624964591712796156176051811303587008695802238443000659360262822274201157058989171140605363757262715039711836435267201104911185310881209587787085902214067011120249206920930390092002013926528617002840598652739858626032863148313350990570099636466948315037251279483584298262932251406595483378246785807535611749633763058037897359717040868961405818284099617948849433049436575391579300119851928529756422622723306396869676275970029554443585678951027916894843975060149675530799724137558236286542362269953910096002601935118460926676401647670047620142445433931766004114804178116427565700418306645902126388362468825507459689300060886321266370562693571126749666200854272660692183292992040934302422995705006352074594711460294611939259261990678024511944216638670729114815642321952002090729369791294839378460346154543144485335133251656077032220236396898394049498414051866917754549414591999079474261211591565618751362796416003292400024736984929388629675723337894829694678315572922020740117800916410586433480654470193683502380154010623569116062721330283590512559073440611814680505380164173037776902864905674592267882660788637277151746170675972785796521763743850811174924692847537634127068551433245821239015967841828418808462387269982701615334310642615270000597356296924059014371085566415963366508145631521668442026871730773601632225364810675619141557082650914857422106840779056690605019373338452926911636721603272354085502450891772104100900200203340986151393083430098829384078587811871853218736995410768637701928342702341028551096278610195164544381986282542501180011145924731329800182726709312542976363803939534678835835091124774694956557780540118230307538308952774648215896693134720253916124375172749362746149820510983790565063947896610874257640717747888548524543428355124635426818380492010394012815017012410033244913371895812784414682215359988271517692568379869831496525990733952996020705390426883252871127913736 : 1)
len(str(P)) 
       
27267
27267
 
       

The Rank

E = EllipticCurve([0,0,1,-1,0]) E.rank() 
       
1
1
E.rank? 
       

File: /home/wstein/sage/sage-4.8.alpha5/local/lib/python2.6/site-packages/sage/schemes/elliptic_curves/ell_rational_field.py

Type: <type ‘instancemethod’>

Definition: E.rank(use_database=False, verbose=False, only_use_mwrank=True, algorithm=’mwrank_lib’, proof=None)

Docstring:

Return the rank of this elliptic curve, assuming no conjectures.

If we fail to provably compute the rank, raises a RuntimeError exception.

INPUT:

  • use_database (bool) - (default: False), if True, try to look up the regulator in the Cremona database.
  • verbose - (default: None), if specified changes the verbosity of mwrank computations. algorithm -
  • - 'mwrank_shell' - call mwrank shell command
  • - 'mwrank_lib' - call mwrank c library
  • only_use_mwrank - (default: True) if False try using analytic rank methods first.
  • proof - bool or None (default: None, see proof.elliptic_curve or sage.structure.proof). Note that results obtained from databases are considered proof = True

OUTPUT:

  • rank (int) - the rank of the elliptic curve.

IMPLEMENTATION: Uses L-functions, mwrank, and databases.

EXAMPLES:

sage: EllipticCurve('11a').rank()
0
sage: EllipticCurve('37a').rank()
1
sage: EllipticCurve('389a').rank()
2
sage: EllipticCurve('5077a').rank()
3
sage: EllipticCurve([1, -1, 0, -79, 289]).rank()   # This will use the default proof behavior of True
4
sage: EllipticCurve([0, 0, 1, -79, 342]).rank(proof=False)
5
sage: EllipticCurve([0, 0, 1, -79, 342]).simon_two_descent()[0]
5

Examples with denominators in defining equations:

sage: E = EllipticCurve([0, 0, 0, 0, -675/4])
sage: E.rank()
0
sage: E = EllipticCurve([0, 0, 1/2, 0, -1/5])
sage: E.rank()
1
sage: E.minimal_model().rank()
1

A large example where mwrank doesn’t determine the result with certainty:

sage: EllipticCurve([1,0,0,0,37455]).rank(proof=False)
0
sage: EllipticCurve([1,0,0,0,37455]).rank(proof=True)
Traceback (click to the left of this block for traceback)
...
                                
                            

File: /home/wstein/sage/sage-4.8.alpha5/local/lib/python2.6/site-packages/sage/schemes/elliptic_curves/ell_rational_field.py

Type: <type ‘instancemethod’>

Definition: E.rank(use_database=False, verbose=False, only_use_mwrank=True, algorithm=’mwrank_lib’, proof=None)

Docstring:

Return the rank of this elliptic curve, assuming no conjectures.

If we fail to provably compute the rank, raises a RuntimeError exception.

INPUT:

  • use_database (bool) - (default: False), if True, try to look up the regulator in the Cremona database.
  • verbose - (default: None), if specified changes the verbosity of mwrank computations. algorithm -
  • - 'mwrank_shell' - call mwrank shell command
  • - 'mwrank_lib' - call mwrank c library
  • only_use_mwrank - (default: True) if False try using analytic rank methods first.
  • proof - bool or None (default: None, see proof.elliptic_curve or sage.structure.proof). Note that results obtained from databases are considered proof = True

OUTPUT:

  • rank (int) - the rank of the elliptic curve.

IMPLEMENTATION: Uses L-functions, mwrank, and databases.

EXAMPLES:

sage: EllipticCurve('11a').rank()
0
sage: EllipticCurve('37a').rank()
1
sage: EllipticCurve('389a').rank()
2
sage: EllipticCurve('5077a').rank()
3
sage: EllipticCurve([1, -1, 0, -79, 289]).rank()   # This will use the default proof behavior of True
4
sage: EllipticCurve([0, 0, 1, -79, 342]).rank(proof=False)
5
sage: EllipticCurve([0, 0, 1, -79, 342]).simon_two_descent()[0]
5

Examples with denominators in defining equations:

sage: E = EllipticCurve([0, 0, 0, 0, -675/4])
sage: E.rank()
0
sage: E = EllipticCurve([0, 0, 1/2, 0, -1/5])
sage: E.rank()
1
sage: E.minimal_model().rank()
1

A large example where mwrank doesn’t determine the result with certainty:

sage: EllipticCurve([1,0,0,0,37455]).rank(proof=False)
0
sage: EllipticCurve([1,0,0,0,37455]).rank(proof=True)
Traceback (most recent call last):
...
RuntimeError: Rank not provably correct.

Try a random curve (if you try a different one it could take a long time -- press "escape" with the cursor in the box to interrupt):

E = EllipticCurve([2012,0]) print E print E.rank() print E.gens() 
       
Elliptic Curve defined by y^2 = x^3 + 2012*x over Rational Field
1
[(2311250/580665409 : 39597102455400/13992294360673 : 1)]
Elliptic Curve defined by y^2 = x^3 + 2012*x over Rational Field
1
[(2311250/580665409 : 39597102455400/13992294360673 : 1)]

A family

def F(a): return EllipticCurve([0,(a-1),1,-a,0]) for a in [0..20]: print a, F(a).rank() 
       
0 0
1 1
2 2
3 2
4 3
5 2
6 2
7 3
8 3
9 3
10 2
11 3
12 3
13 3
14 3
15 2
16 4
17 3
18 2
19 3
20 3
0 0
1 1
2 2
3 2
4 3
5 2
6 2
7 3
8 3
9 3
10 2
11 3
12 3
13 3
14 3
15 2
16 4
17 3
18 2
19 3
20 3

Exercise: Find the first a such that F(a) has rank 5.  

 
       

Elkies Curve of Rank (at least) 28

E = EllipticCurve([1,-1,1,-20067762415575526585033208209338542750930230312178956502, 34481611795030556467032985690390720374855944359319180361266008296291939448732243429]) 
       

That the first few good a_p=p+1-\#E(F_p) are negative is evidence that E has high rank:

D = E.discriminant(); [p for p in primes(1000) if D%p==0] 
       
[2, 3, 5, 7, 11, 13, 17, 19]
[2, 3, 5, 7, 11, 13, 17, 19]
for p in primes(20,200): print E.ap(p), 
       
-9 -10 -8 -11 -10 -12 -12 -9 -12 -15 -16 -16 -15 -13 -18 -16 -13 -6 -20
-12 -20 -19 -11 -16 -10 -22 -17 -9 -24 -12 -23 -22 -7 -10 -7 -22 -22 -25
-9 -10 -8 -11 -10 -12 -12 -9 -12 -15 -16 -16 -15 -13 -18 -16 -13 -6 -20 -12 -20 -19 -11 -16 -10 -22 -17 -9 -24 -12 -23 -22 -7 -10 -7 -22 -22 -25

Exercise: What is the smallest good prime p such that a_p>0?

P = [E([-2124150091254381073292137463, 259854492051899599030515511070780628911531]), E([2334509866034701756884754537, 18872004195494469180868316552803627931531]), E([-1671736054062369063879038663, 251709377261144287808506947241319126049131]), E([2139130260139156666492982137, 36639509171439729202421459692941297527531]), E([1534706764467120723885477337, 85429585346017694289021032862781072799531]), E([-2731079487875677033341575063, 262521815484332191641284072623902143387531]), E([2775726266844571649705458537, 12845755474014060248869487699082640369931]), E([1494385729327188957541833817, 88486605527733405986116494514049233411451]), E([1868438228620887358509065257, 59237403214437708712725140393059358589131]), E([2008945108825743774866542537, 47690677880125552882151750781541424711531]), E([2348360540918025169651632937, 17492930006200557857340332476448804363531]), E([-1472084007090481174470008663, 246643450653503714199947441549759798469131]), E([2924128607708061213363288937, 28350264431488878501488356474767375899531]), E([5374993891066061893293934537, 286188908427263386451175031916479893731531]), E([1709690768233354523334008557, 71898834974686089466159700529215980921631]), E([2450954011353593144072595187, 4445228173532634357049262550610714736531]), E([2969254709273559167464674937, 32766893075366270801333682543160469687531]), E([2711914934941692601332882937, 2068436612778381698650413981506590613531]), E([20078586077996854528778328937, 2779608541137806604656051725624624030091531]), E([2158082450240734774317810697, 34994373401964026809969662241800901254731]), E([2004645458247059022403224937, 48049329780704645522439866999888475467531]), E([2975749450947996264947091337, 33398989826075322320208934410104857869131]), E([-2102490467686285150147347863, 259576391459875789571677393171687203227531]), E([311583179915063034902194537, 168104385229980603540109472915660153473931]), E([2773931008341865231443771817, 12632162834649921002414116273769275813451]), E([2156581188143768409363461387, 35125092964022908897004150516375178087331]), E([3866330499872412508815659137, 121197755655944226293036926715025847322531]), E([2230868289773576023778678737, 28558760030597485663387020600768640028531])] 
       
P[0] + P[1] 
       
(3108017602820373171270912268547263377137814553518653/114651172764479849\
0358769 :
180255809065592657084558925414149675357657278492965377853843866121745650\
1493/1227630733053376047702643420235410103 : 1)
(3108017602820373171270912268547263377137814553518653/1146511727644798490358769 : 1802558090655926570845589254141496753576572784929653778538438661217456501493/1227630733053376047702643420235410103 : 1)
time E.regulator_of_points(P[:7]) 
       
3.04313979267944e11
Time: CPU 2.64 s, Wall: 2.77 s
3.04313979267944e11
Time: CPU 2.64 s, Wall: 2.77 s
time E.regulator_of_points(P[:15]) 
       
1.97964758730350e23
Time: CPU 12.00 s, Wall: 12.00 s
1.97964758730350e23
Time: CPU 12.00 s, Wall: 12.00 s

The following takes about 60 seconds (on my laptop), and shows that the 28 points are independent:

time E.regulator_of_points(P) 
       
points([(x,y) for x,y,_ in P]) + plot(E, color='grey', xmax=2e28, ymin=-50) 
       
 
       
 
       

Primes

prime_range(50) 
       
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
primes(50) 
       
<generator object primes at 0x5c53d20>
<generator object primes at 0x5c53d20>
Primes() 
       
Set of all prime numbers: 2, 3, 5, 7, ...
Set of all prime numbers: 2, 3, 5, 7, ...
for p in primes(50): print p, 
       
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
@interact def _(n=(20,30,..,2000)): prime_pi.plot(0, n).show(figsize=[12,3],gridlines=True) 
       

Click to the left again to hide and once more to show the dynamic interactive window

time p = 2^43112609 - 1 
       
Time: CPU 0.00 s, Wall: 0.01 s
Time: CPU 0.00 s, Wall: 0.01 s

It takes a while to compute the string representation of p.

time s_bigp = str(2^43112609 - 1) len(s_bigp) 
       
Time: CPU 11.71 s, Wall: 11.72 s
12978189
Time: CPU 11.71 s, Wall: 11.72 s
12978189
@interact def _(digits = (5,20,..,10000)): print "Showing %.5f percent of the digits"%(100*2.0*digits/len(s_bigp)) print "p = " + s_bigp[:digits] + ' ... ' + s_bigp[-digits:] 
       

Click to the left again to hide and once more to show the dynamic interactive window

 
       
E = EllipticCurve([0,0,1,-1,0]); E 
       
Elliptic Curve defined by y^2 + y = x^3 - x over Rational Field
Elliptic Curve defined by y^2 + y = x^3 - x over Rational Field
E23 = E.change_ring(GF(23)); E23 
       
Elliptic Curve defined by y^2 + y = x^3 + 22*x over Finite Field of size
23
Elliptic Curve defined by y^2 + y = x^3 + 22*x over Finite Field of size 23
E23.plot(pointsize=50, figsize=4, gridlines=True) 
       

Exercise: Make an interact that has a slider letting you select a prime, which plots the graph of E modulo that prime.

 
       
 
       

The L-Series

E = EllipticCurve([0,0,1,-1,0]) L = E.lseries(); L 
       
Complex L-series of the Elliptic Curve defined by y^2 + y = x^3 - x over
Rational Field
Complex L-series of the Elliptic Curve defined by y^2 + y = x^3 - x over Rational Field
show(line([(x,L(x)) for x in [1.5,1.6, .., 8]]), figsize=[8,3], xmin=0, ymin=0) 
       
@interact def _(E = ['y^2 + y = x^3 - x^2', 'y^2 + y = x^3 - x', 'a rank 4 curve', 'elkies rank>=28 curve', '2012'], B = (30..1000)): if E == 'y^2 + y = x^3 - x^2': E = EllipticCurve([0,-1,1,0,0]) r = E.rank() elif E == 'y^2 + y = x^3 - x': E = EllipticCurve([0,0,1,-1,0]) r = E.rank() elif E == 'a rank 4 curve': E = EllipticCurve([1, -1, 0, -79, 289]) r = 4 elif E == 'elkies rank>=28 curve': E = EllipticCurve([1,-1,1, -20067762415575526585033208209338542750930230312178956502, 34481611795030556467032985690390720374855944359319180361266008296291939448732243429]) r = ">=28" elif E == '2012': E = EllipticCurve([0,2012]) r = "?" L_approx = 1 print '%4s%6s%5s%9s%20s'%('p', 'A(p)', 'p/Ap', ' prod p/Ap', 'Rank = %s'%r) v = [] t = '' for p in primes(B): if E.discriminant()%p: Ap = p+1-E.ap(p) L_approx *= float(p/Ap) t += '%4s%4s%8.3f%8.3f\n'%(p, Ap, float(p/Ap), L_approx) v.append((p, L_approx)) (line(v) + points(v,color='black')).show(figsize=[8,2]) print t 
       

Click to the left again to hide and once more to show the dynamic interactive window

 
       
 
       

Natural (analytic) continuation

var('x') f = 1/(1-x) plot(f, -6, 2, figsize=[4,2], ymax=5, ymin=-5) 
       
f.taylor(x,0,5) 
       
x^5 + x^4 + x^3 + x^2 + x + 1
x^5 + x^4 + x^3 + x^2 + x + 1
 
       
 
       

The Birch and Swinnerton-Dyer Conjecture:

A Rank 1 Curve

E = EllipticCurve([0,0,1,-1,0]) L = E.lseries() Lser = L.taylor_series(); Lser 
       
0.305999773834052*z + 0.186547797268162*z^2 - 0.136791463097188*z^3 +
0.0161066468496401*z^4 + 0.0185955175398802*z^5 + O(z^6)
0.305999773834052*z + 0.186547797268162*z^2 - 0.136791463097188*z^3 + 0.0161066468496401*z^4 + 0.0185955175398802*z^5 + O(z^6)
c = Lser[1]; c 
       
0.305999773834052
0.305999773834052
Omega_E = E.period_lattice().omega(); Omega_E 
       
5.98691729246392
5.98691729246392
Reg_E = E.regulator(); Reg_E 
       
0.0511114082399688
0.0511114082399688
# this *uses* the formula; but we do know in this case that Sha_E=1. Sha_E = E.sha().an(); Sha_E 
       
1
1
prod_cp = E.tamagawa_product_bsd(); prod_cp 
       
1
1
T = E.torsion_order()^2; T 
       
1
1
Omega_E * Reg_E * Sha_E * prod_cp / T^2 
       
0.305999773834052
0.305999773834052
 
       
 
       

A Rank 2 Curve

E = EllipticCurve([0,1,1,-2,0]) L = E.lseries() Lser = L.taylor_series(); Lser 
       
-2.69129566562797e-23 + (1.52514901968783e-23)*z + 0.759316500288427*z^2
- 0.430302337583362*z^3 - 0.193509313829981*z^4 + 0.459971558373642*z^5
+ O(z^6)
-2.69129566562797e-23 + (1.52514901968783e-23)*z + 0.759316500288427*z^2 - 0.430302337583362*z^3 - 0.193509313829981*z^4 + 0.459971558373642*z^5 + O(z^6)
E.rank() 
       
2
2

If you solve for the order of the Shafarevich-Tate group in the conjecture:

E.sha().an() 
       
1.00000000000000
1.00000000000000
S = E.sha(); S 
       
Tate-Shafarevich group for the Elliptic Curve defined by y^2 + y = x^3 +
x^2 - 2*x over Rational Field
Tate-Shafarevich group for the Elliptic Curve defined by y^2 + y = x^3 + x^2 - 2*x over Rational Field

The following proves that p=5 does not divide the order of this group:

S.p_primary_bound(5) 
       
0
0

Open Problem: Prove that the Shafarevich-Tate group of the specific curve E given above is finite.

 
       

A Rank 4 Curve

E = EllipticCurve([0,15,1,-16,0]); E 
       
Elliptic Curve defined by y^2 + y = x^3 + 15*x^2 - 16*x over Rational
Field
Elliptic Curve defined by y^2 + y = x^3 + 15*x^2 - 16*x over Rational Field
E.rank() 
       
4
4
E.gens() 
       
[(-15 : 15 : 1), (-14 : 20 : 1), (-51/4 : 187/8 : 1), (22 : 132 : 1)]
[(-15 : 15 : 1), (-14 : 20 : 1), (-51/4 : 187/8 : 1), (22 : 132 : 1)]
L = E.lseries() Lser = L.taylor_series(); Lser 
       
4.32638791417839e-24 + (-1.96674959799307e-23)*z +
(2.05660099586894e-22)*z^2 + (-7.97704812013524e-22)*z^3 +
10.8463853245874*z^4 - 49.3070071384507*z^5 + O(z^6)
4.32638791417839e-24 + (-1.96674959799307e-23)*z + (2.05660099586894e-22)*z^2 + (-7.97704812013524e-22)*z^3 + 10.8463853245874*z^4 - 49.3070071384507*z^5 + O(z^6)
 
       

Open Problem:  Prove that L(E,s) vanishes to order 4 at s=1 for the specific curve E above.   (Or for any curve at all!)