William Stein -- JMM -- Solving Cubic Equations
system:sage


<p>&nbsp;</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">olving Cubic Equations (JMM 2012 Short Course)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">William Stein</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h1 style="text-align: center;">Solving Cubic Equations (JMM 2012 Short Course)</h1>
<h1 style="text-align: center;">William Stein</h1>
<p>This worksheet accompanies <a href="http://wstein.org/talks/2011-gross-stein-cubic/rational.pdf" target="_blank">these slides</a>.</p>

{{{id=7|

///
}}}

{{{id=6|

///
}}}

<h1>Pythagorean triples</h1>

{{{id=122|
@interact
def f(n=5, m=(1..10)):
    print "n*m =", n*m
///
<html><!--notruncate--><div padding=6 id="div-interact-122"> <table width=800px height=20px bgcolor="#c5c5c5"
                 cellpadding=15><tr><td bgcolor="#f9f9f9" valign=top align=left><table>
<tr><td colspan=3><table><tr><td align=right><font color="black">n&nbsp;</font></td><td><input type="text" value="5" size=80 onchange="interact(122, '_interact_.update(\'122\', \'n\', 24, _interact_.standard_b64decode(\''+encode64(this.value)+'\'), globals()); _interact_.recompute(\'122\');')"></input></td>
</tr><tr><td align=right><font color="black">m&nbsp;</font></td><td><table><tr><td>
        <div id="slider-m-122" style="margin:0px; margin-left: 1.0em; margin-right: 1.0em; width: 15.0em;"></div>
        </td><td><font color="black" id="slider-m-122-lbl"></font></td></tr></table><script>(function(){ var values = ["1","2","3","4","5","6","7","8","9","10"]; setTimeout(function() {
    $('#slider-m-122').slider({
        step: 1, min: 0, max: 9, value: 0,
        change: function (e,ui) { var position = ui.value; if(values!=null) $('#slider-m-122-lbl').text(values[position]); interact(122, '_interact_.update(\'122\', \'m\', 25, _interact_.standard_b64decode(\''+encode64(position)+'\'), globals()); _interact_.recompute(\'122\');'); },
        slide: function(e,ui) { if(values!=null) $('#slider-m-122-lbl').text(values[ui.value]); }
    });
    if(values != null) $('#slider-m-122-lbl').text(values[$('#slider-m-122').slider('value')]);
    }, 1); })();</script></td>
</tr></table></td></tr>
<tr><td></td><td style='width: 100%;'><div id="cell-interact-122"><?__SAGE__START>
        <table border=0 bgcolor="white" width=100%>
        <tr><td bgcolor="white" align=left valign=top><pre><?__SAGE__TEXT></pre></td></tr>
        <tr><td  align=left valign=top><?__SAGE__HTML></td></tr>
        </table><?__SAGE__END></div></td><td></td></tr>
<tr><td colspan=3></td></tr>
</table></td>
                 </tr></table></div>
                 </html>
}}}

{{{id=123|
circle((0,0), 1)
///
<html><font color='black'><img src='cell://sage0.png'></font></html>
}}}

{{{id=124|
G = circle((0,0), 1, thickness=3, color='red')
G += arrow((0,0), (1,1))
G.show(figsize=3)
///
<html><font color='black'><img src='cell://sage0.png'></font></html>
}}}

{{{id=5|
@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)
///
<html><!--notruncate--><div padding=6 id="div-interact-5"> <table width=800px height=20px bgcolor="#c5c5c5"
                 cellpadding=15><tr><td bgcolor="#f9f9f9" valign=top align=left><table>
<tr><td colspan=3><table><tr><td align=right><font color="black">t&nbsp;</font></td><td><table><tr><td>
        <div id="slider-t-5" style="margin:0px; margin-left: 1.0em; margin-right: 1.0em; width: 15.0em;"></div>
        </td><td><font color="black" id="slider-t-5-lbl"></font></td></tr></table><script>(function(){ var values = ["1/16","1/8","3/16","1/4","5/16","3/8","7/16","1/2","9/16","5/8","11/16","3/4","13/16","7/8","15/16","1"]; setTimeout(function() {
    $('#slider-t-5').slider({
        step: 1, min: 0, max: 15, value: 3,
        change: function (e,ui) { var position = ui.value; if(values!=null) $('#slider-t-5-lbl').text(values[position]); interact(5, '_interact_.update(\'5\', \'t\', 26, _interact_.standard_b64decode(\''+encode64(position)+'\'), globals()); _interact_.recompute(\'5\');'); },
        slide: function(e,ui) { if(values!=null) $('#slider-t-5-lbl').text(values[ui.value]); }
    });
    if(values != null) $('#slider-t-5-lbl').text(values[$('#slider-t-5').slider('value')]);
    }, 1); })();</script></td>
</tr></table></td></tr>
<tr><td></td><td style='width: 100%;'><div id="cell-interact-5"><?__SAGE__START>
        <table border=0 bgcolor="white" width=100%>
        <tr><td bgcolor="white" align=left valign=top><pre><?__SAGE__TEXT></pre></td></tr>
        <tr><td  align=left valign=top><?__SAGE__HTML></td></tr>
        </table><?__SAGE__END></div></td><td></td></tr>
<tr><td colspan=3></td></tr>
</table></td>
                 </tr></table></div>
                 </html>
}}}

{{{id=4|

///
}}}

<h1>Cubic equations</h1>

{{{id=3|
var('x,y')
implicit_plot(x^3 + y^3 == 1, (x,-2,2), (y,-2,2), aspect_ratio=1, figsize=5, gridlines=True)
///
<html><font color='black'><img src='cell://sage0.png'></font></html>
}}}

{{{id=1|
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)
///
<html><font color='black'><img src='cell://sage0.png'></font></html>
}}}

{{{id=12|
@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)
///
<html><!--notruncate--><div padding=6 id="div-interact-12"> <table width=800px height=20px bgcolor="#c5c5c5"
                 cellpadding=15><tr><td bgcolor="#f9f9f9" valign=top align=left><table>
<tr><td colspan=3><table><tr><td align=right><font color="black">equation&nbsp;</font></td><td><input type="text" value="x^3 + y^3 == 1" size=80 onchange="interact(12, '_interact_.update(\'12\', \'equation\', 3, _interact_.standard_b64decode(\''+encode64(this.value)+'\'), globals()); _interact_.recompute(\'12\');')"></input></td>
</tr><tr><td align=right><font color="black">xmin&nbsp;</font></td><td><input type="text" value="-2" size=80 onchange="interact(12, '_interact_.update(\'12\', \'xmin\', 4, _interact_.standard_b64decode(\''+encode64(this.value)+'\'), globals()); _interact_.recompute(\'12\');')"></input></td>
</tr><tr><td align=right><font color="black">xmax&nbsp;</font></td><td><input type="text" value="2" size=80 onchange="interact(12, '_interact_.update(\'12\', \'xmax\', 5, _interact_.standard_b64decode(\''+encode64(this.value)+'\'), globals()); _interact_.recompute(\'12\');')"></input></td>
</tr><tr><td align=right><font color="black">ymin&nbsp;</font></td><td><input type="text" value="-2" size=80 onchange="interact(12, '_interact_.update(\'12\', \'ymin\', 6, _interact_.standard_b64decode(\''+encode64(this.value)+'\'), globals()); _interact_.recompute(\'12\');')"></input></td>
</tr><tr><td align=right><font color="black">ymax&nbsp;</font></td><td><input type="text" value="2" size=80 onchange="interact(12, '_interact_.update(\'12\', \'ymax\', 7, _interact_.standard_b64decode(\''+encode64(this.value)+'\'), globals()); _interact_.recompute(\'12\');')"></input></td>
</tr><tr><td align=right><font color="black">aspect_ratio&nbsp;</font></td><td><input type="text" value="1" size=80 onchange="interact(12, '_interact_.update(\'12\', \'aspect_ratio\', 8, _interact_.standard_b64decode(\''+encode64(this.value)+'\'), globals()); _interact_.recompute(\'12\');')"></input></td>
</tr><tr><td align=right><font color="black">gridlines&nbsp;</font></td><td><input type="checkbox" checked width=200px onchange="interact(12, '_interact_.update(\'12\', \'gridlines\', 9, _interact_.standard_b64decode(\''+encode64(this.checked)+'\'), globals()); _interact_.recompute(\'12\');')"></input></td>
</tr></table></td></tr>
<tr><td></td><td style='width: 100%;'><div id="cell-interact-12"><?__SAGE__START>
        <table border=0 bgcolor="white" width=100%>
        <tr><td bgcolor="white" align=left valign=top><pre><?__SAGE__TEXT></pre></td></tr>
        <tr><td  align=left valign=top><?__SAGE__HTML></td></tr>
        </table><?__SAGE__END></div></td><td></td></tr>
<tr><td colspan=3></td></tr>
</table></td>
                 </tr></table></div>
                 </html>
}}}

{{{id=11|

///
}}}

<h1>The Group Law</h1>

<p>How the figure in the slide was made:</p>

{{{id=13|
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
<html><font color='black'><img src='cell://sage0.png'></font></html>
}}}

{{{id=16|
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)
}}}

{{{id=10|
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/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)
}}}

<p>Mark Watkins's Curve</p>

{{{id=119|
E = EllipticCurve([0, 0, 1, -5115523309, -140826120488927])
n = 367770537186677506614005642341827170087932269492285584726218770061653546349271015805365134370326743061141306464500052886704651998399766478840791915307861741507273933802628157325092479708268760217101755385871816780548765478502284415627682847192752681899094962659937870630036760359293577021806237483971074931228416346507852381696883227650072039964481597215995993299744934117106289850389364006552497835877740257534533113775202882210048356163645919345794812074571029660897173224370337701056165735008590640297090298709121506266697266461993201825397369999550868142294312756322177410730532828064759604975369242350993568030726937049911607264109782746847951283794119298941214490794330902986582991229569401523519938742746376107190770204010513818349012786637889254711059455555173810904911927619899031855149292325338589831979737026402711049742594116000380601480839982975557506035851728035645241044229165029649347049289119188596869401159325131363345962579503132339847275422440094553824705189225653677459512863117911721838552934309124508134493366437408093924362039749911907416973504142322111757058584200725022632116164720164998641729522677460525999499077942125820428879526063735692685991018516862938796047597323986537154171248316943796373217191993996993714654629536884396057924790938647656663281596178145722116098216500930333824321806726937018190136190556573208807048355335567078793126656928657859036779350593274598717379730880724034301867739443749841809456715884193720328901461552659882628405842209756757167816662139945081864642108533595989975716259259240152834050940654479617147685922500856944449822045386092122409096978544817218847897640513477806598329177604246380812377739049184475550777341620985976570393037880282764967019552408400730754822676441481715385344001979832232652414888335865567377214360456003296961668177481944809066257442596772347829664126972931904101685281128944780074646796760942430959617022257479874089403564965038885379817866920048929814520268493677507059073765902671638087366488496702836326268574593123245107420348878101763123893347657020275591248824247800594270862052082185973393290009189867677259458080676065098703453539525576975639543700507625640729872340789406314394468400584455920683361976200121834430751233901473228497490561998078486251074993528871318797403348087370426900997556442577081254910572185107856605139877331015042842121106080690743578173268489400499056898312621953947967012358414547752897081097091795744203697684046066255663201242292760126759871266004516377432961917272040217147083563399987612420595275792033855676991823368254862159558450043808051481533297270035287382247038279293223946385070118082306958987268603396924054403103857444058848605587415400517670032631121206127732481340391088277796488544415738156553014768406246154666005139690428085145098272500791416214774673484501826722500527091164944262537169595848931680754096774712860490572746224094031187043204526107239201079603468297522895106598567437015083348797875364162797693968819804139548885751282687152237078260358705230284426203064493684250614282879918107733796207067250003823959412935677624093236047038637365577326399589008804507786011973155927731073034706536557461443806622707622411087809371872157210456836892493613836792026761820382217165481998924123604782787923229739171920575447007099501678380795077013113325989801385729993920818301654424251339564606876820121928372246213399859213282792511168043953443839793901139974194479300297566097664539199384651908436188732428818373302383046388859427937893841888014266685177616605644783704135794931830750265686335934066565240944049448213005591997128985560760260399214278635912634351586762354869354021530746189992899582554597632108309638569296964800046983072736238483149014714600896056552029642747991419063454749142059564274298254654925893866404955146903330024475746163543714996249652420171171054231726336493541586971431778944051481059633738399411418574323811770949729726843612672925000631355659834164200554441315451003433452466204707123811663623662837296862948061758759928631763661985185615801886205770721032006304144867787347058316392295671580091655872087209485913286930128858640442589125454268580397484571921012318872311624898317615607628176460097441336323549031828235965636277950827328087547939511112374216436584203379248450122647406094035171130740663723547675939885959363881135893035102018389444212746146250328348242610673524022378994978392020098814721974502062692815736689229759065822093942795318705345275598989426335235935505605311411301560321192269430861733743544402908586497305353600909431214933202522528717109214492959330016065810287623144179288466664888540622702346704213752456372574449563979215782406566937885352945871994541770838871930542220307771671498466518108722622109421676741544945695403509866953167277628280232464839215003474048896968037544660029755740065581270139083249903212572230417942249795467100700393944310325009677179182109970943346807335014446839612282508824324073679584122851208360459166315484891952299449340025896509298935939357721723543933108743241997387447018395925320167637640328407957069845439501381234605867495003402016724626400855369636521155009147176245904149069225438646928549072337653348704931901764847439772432025275648964681387210234070849306330191790380412396115446240832583481366372132300849060835262136832315311052903367503857437920508931305283143379423930601369154572530677278862066638884250221791647123563828956462530983567929499493346622977494903591722345188975062941907415400740881
d = 4255044272974739888318147243888463149102796676262869844129037001939069082536978320669489250948915984539247906005086523932696054371186522388041546915099800544500632766713011953565768977996873028383821265775526344346357123541112589188755147040471997532333827695072210398747506143870850088480631610375575105629402969923379906696883632426726640777829238424687657347645525014899047899951815906638258828268844376147020866010729124602050467189871119197597417729240821079066147681882592877855973838960678143778693770394049052970155019875224052204788541398018355615590746004686807306334375342979728237142659598012537711708303192309484750118781539765280348857873798901748823243463804440411715478920014959236515352089221657498291013202443206177483221913021678256235579893414436481218449503035888524081157406195476643835666127064380642209659344205748056981879653000401688873470706248622814904782273476309064826525609405548233605225179645823497793346631337770093238960301538846226719138651429924452362996719692807033817042217290429195445858873566571767269091258248510098997241843386892960591348792269127155872118132361370012052090648575376001600422257728323075912369868818631162455043825487235531941123620115037512323584244014680824673299882453235229917216799756372612183353210236861955788541952734145558006820535219145300448204001164810277892288105257230476250805684254277696678157719267749527423894682341440235747396742183997177247946449079490990330823304497772932137791366115383255184513570505904177076177300233520471453051372851804227351360933685976190213408007425987495648991648328355841518790233089971640826391421865446416159176533305374315501526687536310287865258225341831409297024404559487986223470061428509852910119956281813557240650373612303806124216826476191582759712062169110751021106200222502921039737582807865453212930003461175559301081459151181543779910592339627452978630170354145224288258324811018569690301921451517013795632224485059295610701352935567534896297148895118420851960225883402515530058117374260152928631522919378979184864047046497461715005662259748200507982418704000034189585130679648460399502892795419432308411176961777683169393789440445404586765622160449971094877274592261820143359041089932670055512981474178136881417476003157917937418370366564607602590842864145040169169286533733737493516731388736973556780735684454625005971249995694287683482906944701313969575867184534505315069252495619031118665012176098178260784016899909892825429476690659575409055152654378882121107387001622680468831012826136445746750138118199895452299627549452761944871112397182275542812517516928333071853473496479471177474588594469094399278566301150327219929702835948186371102871019478295556041049945697905300902151612670328014420769784258843405782906849447056638422038734349468953136934102682055490426413327292140435307812777834009325214610658460505162660636930982933352215314240689644147222987920125050724733503025375041491926808614281199118113561510206345027387417895539605603362871722363164659754529932197179572083803798469762841343018748973041067954703588990548236248494723651739045289521882710298950201026345472967707812057733059495444795253020394607206147343184720128913820279471137168459793296576793911217963424221938088255273195906782364624214705153806102237088023259111661251016558078055448107365117361120157257882079830434627788427533485656242565476771106266450533897646444735950588164991426098055565123345308087041154716116620172732104619949757331380529168978624213449372249365401328137208190879603847948651527305255792412098085899417962189727321732456666040832323196614881188508752637063922635721727888588861006697067295082662856621427895550981270983075947338227409588860804832689778730985756946228133612817693848327597742540052216739363382567028776997268926223424246381649078824848145698957882084132643790230707482558729729822722846435295235634841524505128041497093453481500336383856658648609091424412441302475261926217094416160502075408493720494216372326712489077723971624589353187301664632745253191939259669507578605710768387023661969449344902879751178806889386035847044662250758843856626244205371560027873450866832479574095908011314904455539494729790898211989993923922058120117863241965534093749668627907690962871059220070919266871471817412365375430285359965804594745527651369886073387194293961511036178306538077683719722004972020545664652037380978094038493268487752662394679129427435458023391430136004830903182108442372425264218315757261837807638185861100198403815128178367563386992036547922694358498639362771798041618046013662235878191246173024597377861825966407677879013966448260355004133249471832418523346215677130183097110890998963907589116151288296464688754418004789058613210310227152010490547650753213820137599826132566513659030867731020594559477466913485854520908208415598659344363758912591077035997911074276473287555243814780228662308363850635352393782937914498292574951022872659981964923226850485187083410037527178126285256712196330538305579411947408618370648081044119314858092966789985880558618838749736465935723939056195292855739824197002857471663879298568186432186480787651653279527172759403662173339216050188101734904266785209933959219574028078421130848836017714997715855156161485884192576525411096570236580006784778240115504215083155473114336654532035309712573054076300648084290382624057963622411854452712766764333742741748257176418629938669049475110145831487629518887622732479751575475237265720522099995921350373526902203987716
P = E.lift_x(n/d)
///
}}}

{{{id=121|
P
///
(367770537186677506614005642341827170087932269492285584726218770061653546349271015805365134370326743061141306464500052886704651998399766478840791915307861741507273933802628157325092479708268760217101755385871816780548765478502284415627682847192752681899094962659937870630036760359293577021806237483971074931228416346507852381696883227650072039964481597215995993299744934117106289850389364006552497835877740257534533113775202882210048356163645919345794812074571029660897173224370337701056165735008590640297090298709121506266697266461993201825397369999550868142294312756322177410730532828064759604975369242350993568030726937049911607264109782746847951283794119298941214490794330902986582991229569401523519938742746376107190770204010513818349012786637889254711059455555173810904911927619899031855149292325338589831979737026402711049742594116000380601480839982975557506035851728035645241044229165029649347049289119188596869401159325131363345962579503132339847275422440094553824705189225653677459512863117911721838552934309124508134493366437408093924362039749911907416973504142322111757058584200725022632116164720164998641729522677460525999499077942125820428879526063735692685991018516862938796047597323986537154171248316943796373217191993996993714654629536884396057924790938647656663281596178145722116098216500930333824321806726937018190136190556573208807048355335567078793126656928657859036779350593274598717379730880724034301867739443749841809456715884193720328901461552659882628405842209756757167816662139945081864642108533595989975716259259240152834050940654479617147685922500856944449822045386092122409096978544817218847897640513477806598329177604246380812377739049184475550777341620985976570393037880282764967019552408400730754822676441481715385344001979832232652414888335865567377214360456003296961668177481944809066257442596772347829664126972931904101685281128944780074646796760942430959617022257479874089403564965038885379817866920048929814520268493677507059073765902671638087366488496702836326268574593123245107420348878101763123893347657020275591248824247800594270862052082185973393290009189867677259458080676065098703453539525576975639543700507625640729872340789406314394468400584455920683361976200121834430751233901473228497490561998078486251074993528871318797403348087370426900997556442577081254910572185107856605139877331015042842121106080690743578173268489400499056898312621953947967012358414547752897081097091795744203697684046066255663201242292760126759871266004516377432961917272040217147083563399987612420595275792033855676991823368254862159558450043808051481533297270035287382247038279293223946385070118082306958987268603396924054403103857444058848605587415400517670032631121206127732481340391088277796488544415738156553014768406246154666005139690428085145098272500791416214774673484501826722500527091164944262537169595848931680754096774712860490572746224094031187043204526107239201079603468297522895106598567437015083348797875364162797693968819804139548885751282687152237078260358705230284426203064493684250614282879918107733796207067250003823959412935677624093236047038637365577326399589008804507786011973155927731073034706536557461443806622707622411087809371872157210456836892493613836792026761820382217165481998924123604782787923229739171920575447007099501678380795077013113325989801385729993920818301654424251339564606876820121928372246213399859213282792511168043953443839793901139974194479300297566097664539199384651908436188732428818373302383046388859427937893841888014266685177616605644783704135794931830750265686335934066565240944049448213005591997128985560760260399214278635912634351586762354869354021530746189992899582554597632108309638569296964800046983072736238483149014714600896056552029642747991419063454749142059564274298254654925893866404955146903330024475746163543714996249652420171171054231726336493541586971431778944051481059633738399411418574323811770949729726843612672925000631355659834164200554441315451003433452466204707123811663623662837296862948061758759928631763661985185615801886205770721032006304144867787347058316392295671580091655872087209485913286930128858640442589125454268580397484571921012318872311624898317615607628176460097441336323549031828235965636277950827328087547939511112374216436584203379248450122647406094035171130740663723547675939885959363881135893035102018389444212746146250328348242610673524022378994978392020098814721974502062692815736689229759065822093942795318705345275598989426335235935505605311411301560321192269430861733743544402908586497305353600909431214933202522528717109214492959330016065810287623144179288466664888540622702346704213752456372574449563979215782406566937885352945871994541770838871930542220307771671498466518108722622109421676741544945695403509866953167277628280232464839215003474048896968037544660029755740065581270139083249903212572230417942249795467100700393944310325009677179182109970943346807335014446839612282508824324073679584122851208360459166315484891952299449340025896509298935939357721723543933108743241997387447018395925320167637640328407957069845439501381234605867495003402016724626400855369636521155009147176245904149069225438646928549072337653348704931901764847439772432025275648964681387210234070849306330191790380412396115446240832583481366372132300849060835262136832315311052903367503857437920508931305283143379423930601369154572530677278862066638884250221791647123563828956462530983567929499493346622977494903591722345188975062941907415400740881/4255044272974739888318147243888463149102796676262869844129037001939069082536978320669489250948915984539247906005086523932696054371186522388041546915099800544500632766713011953565768977996873028383821265775526344346357123541112589188755147040471997532333827695072210398747506143870850088480631610375575105629402969923379906696883632426726640777829238424687657347645525014899047899951815906638258828268844376147020866010729124602050467189871119197597417729240821079066147681882592877855973838960678143778693770394049052970155019875224052204788541398018355615590746004686807306334375342979728237142659598012537711708303192309484750118781539765280348857873798901748823243463804440411715478920014959236515352089221657498291013202443206177483221913021678256235579893414436481218449503035888524081157406195476643835666127064380642209659344205748056981879653000401688873470706248622814904782273476309064826525609405548233605225179645823497793346631337770093238960301538846226719138651429924452362996719692807033817042217290429195445858873566571767269091258248510098997241843386892960591348792269127155872118132361370012052090648575376001600422257728323075912369868818631162455043825487235531941123620115037512323584244014680824673299882453235229917216799756372612183353210236861955788541952734145558006820535219145300448204001164810277892288105257230476250805684254277696678157719267749527423894682341440235747396742183997177247946449079490990330823304497772932137791366115383255184513570505904177076177300233520471453051372851804227351360933685976190213408007425987495648991648328355841518790233089971640826391421865446416159176533305374315501526687536310287865258225341831409297024404559487986223470061428509852910119956281813557240650373612303806124216826476191582759712062169110751021106200222502921039737582807865453212930003461175559301081459151181543779910592339627452978630170354145224288258324811018569690301921451517013795632224485059295610701352935567534896297148895118420851960225883402515530058117374260152928631522919378979184864047046497461715005662259748200507982418704000034189585130679648460399502892795419432308411176961777683169393789440445404586765622160449971094877274592261820143359041089932670055512981474178136881417476003157917937418370366564607602590842864145040169169286533733737493516731388736973556780735684454625005971249995694287683482906944701313969575867184534505315069252495619031118665012176098178260784016899909892825429476690659575409055152654378882121107387001622680468831012826136445746750138118199895452299627549452761944871112397182275542812517516928333071853473496479471177474588594469094399278566301150327219929702835948186371102871019478295556041049945697905300902151612670328014420769784258843405782906849447056638422038734349468953136934102682055490426413327292140435307812777834009325214610658460505162660636930982933352215314240689644147222987920125050724733503025375041491926808614281199118113561510206345027387417895539605603362871722363164659754529932197179572083803798469762841343018748973041067954703588990548236248494723651739045289521882710298950201026345472967707812057733059495444795253020394607206147343184720128913820279471137168459793296576793911217963424221938088255273195906782364624214705153806102237088023259111661251016558078055448107365117361120157257882079830434627788427533485656242565476771106266450533897646444735950588164991426098055565123345308087041154716116620172732104619949757331380529168978624213449372249365401328137208190879603847948651527305255792412098085899417962189727321732456666040832323196614881188508752637063922635721727888588861006697067295082662856621427895550981270983075947338227409588860804832689778730985756946228133612817693848327597742540052216739363382567028776997268926223424246381649078824848145698957882084132643790230707482558729729822722846435295235634841524505128041497093453481500336383856658648609091424412441302475261926217094416160502075408493720494216372326712489077723971624589353187301664632745253191939259669507578605710768387023661969449344902879751178806889386035847044662250758843856626244205371560027873450866832479574095908011314904455539494729790898211989993923922058120117863241965534093749668627907690962871059220070919266871471817412365375430285359965804594745527651369886073387194293961511036178306538077683719722004972020545664652037380978094038493268487752662394679129427435458023391430136004830903182108442372425264218315757261837807638185861100198403815128178367563386992036547922694358498639362771798041618046013662235878191246173024597377861825966407677879013966448260355004133249471832418523346215677130183097110890998963907589116151288296464688754418004789058613210310227152010490547650753213820137599826132566513659030867731020594559477466913485854520908208415598659344363758912591077035997911074276473287555243814780228662308363850635352393782937914498292574951022872659981964923226850485187083410037527178126285256712196330538305579411947408618370648081044119314858092966789985880558618838749736465935723939056195292855739824197002857471663879298568186432186480787651653279527172759403662173339216050188101734904266785209933959219574028078421130848836017714997715855156161485884192576525411096570236580006784778240115504215083155473114336654532035309712573054076300648084290382624057963622411854452712766764333742741748257176418629938669049475110145831487629518887622732479751575475237265720522099995921350373526902203987716 : 69507750532472367085346084912337228746816178387837305902145724990902740340906261453493181804983430954270352259318933339387663156553428977498257013788940854433875185077221541485329956941977852865228080385414325106576023043707183388455767666475760765964319171505416875758671870768626584933302663281333628704221173357732057389226499062837029509240952418376496174333892762603803062589285384322488953831431223003177508330860555239582742272499038198585218373288140815589621627484527559782229865952011217334954035920452990810018789369275957576167027755769537257879405184883984812137916446685315849149286115745766302906515505892173226915138635438510954569402243927233775051686506883472076083782064279980621264242730214739031345347222817679216851559544053578420629522958316973099844554944579111679475138982953553270312148750062945079246456995494583137319128756155523401806300210307752535816228313429423977772936418028455279862548216402692037127117587757768589280004272213589772980626157994273078319661417398611639976372137654340244375630487188935828825111531336866948322323123611477413685818666573527829021861361763437450857514341231100572444209295161667751658626948853805976740474596416451452057658726796766240200785376597638020531768736233288505744136858404441478618787650578097033772614341900470557542692778723420687211791142405032497776321129910520949836073729186723381178962179362827439758696096187396427689588801311566158931907156063431796294397591765921160203174904125078559339693430105188328844303833599797184752179795746119372810255876016918018401819830489591630660273884512697193925067545733267534582450019631974246555351372162615780242867158041648697427590855704627248056665372254007843398372145577373175765363847920463756133728297635758112057910126175856185235411835470142008684377433645699503393780376559818793145615518301626928761723329436008209339863055694239120401457092277138349621054634952092109321286736481803474867377549268227779584475351134911343993493364272770297984733322334676990951799552080657832676618570041383364583120166166116745183343724426675889570592690986446595990970242265541386599096766684211858651299950041036328082546391910636649969526404375416474754061315458458139965646012795883594117940695682624851163977114696072969143325472191850907163838698568773130922974212061179628694872164965401628798128664935264332812349055974120407121940523138887814043024839983000696680706040001557889676322240868002030960892723279992331745728915425607321411183362340366682176783400999618131787068796855842303047412293500544514610874847962206784879134802099687095703124995075766582699781411589883742234358664638767651172407552562961327781091388684006047334275720898105172085057995286056319393766006291596225804239742452630094267506837419692187598138957282758298173115657168011974773099627223014879164751294021666281080445015817233190948994444744518424442213335364691266278304151159472398065196037443859630276316933952342288624146806174930052151885903574627596971708968028931843673971013790485554941462692701879762617892987618335783130002836960406638024330733514220533961967001879389859595147279243206246266640175834315224688760181851613344606845336663669423967885059290526464453132121026804948563400700753960284388171234942967295267207409524951580408435243057012628113151473228307721643246050162931260734194754710112140695064853658748642315263267494229421206402289872414048076471788766914859431027325092081078063621341888230204494665344839152954827956746475248959868803688125951992195778914878321839058140246703160300605826428593691333523930353914662904456361040193422855364003104026560061840896998883773505156279140043190042981637174915411798799529821470223103525943766006355129608908148476427803311477211501935176253256738261751532579460332175454051434513150804978515018069453045662599267964506330671037452591657801519392715007830752050438795304433868695751157017374699087965029392221978913268126237431778766156569688977365122122803856585984206580438251177754052310277336590944035796482467984697747272419319772197805004492827622652216188915396079819312133966512047979487817528024953833862674058828026638076554779780843985764088332730079617781750828506464285532054451868949364376106752076558556087550457569857063710079645650198442338255810667410440559133069398374903941341039922353328522621534292525726538154121663371983140095660504409618666986595246724105858947424037939571311515894576932547010037710061207221217346162929470715147339181762380554827606734032265417830216580373918166393712434462653072346690104439789558210376833872094918428032326543248162130403742141246556470895170882433625540254526364977444458000864319419194855017759191838004197849553360788369518021247711742650832793637470227481445251250978117257446628838561481765638394505113577925269354007779628525160787777543871166861820536365336166341355026965853604070175182664966868591758136199026937672151571954750724849503533289016095167445658027871655758040360474523902252287836998788883218899658130469564205756267413204681011741698833501592309035016353417333777685868241124346988718866906349971250404042639595109617391160183719719894675920495719562484108306133858805522224319694608226493892061606008935774112529210975202370407410288127048869998501429748431136210553701493374644425322973333525110516082135495023336186729678731857163280816532022070396244956474529081424985703030201734727543508257498664848101462256420597348374166250720722809496710683488377485785130767564966353610399973674344887170567649554955036409412690622500029993934929530421467498029813339533715856418760116124721125395298269635766425651639598691626691527533426294779491484263272375002244708959326201987552862985393045789035964492396688328434780989892618267840623796833713673436465999493280197076619387460108691150923262456770051311170985770154905741599447783242779059200515502199797043178638384131404958502402988063204604717718646656284772808821812206983123469747508958807752033816696237486285066004641675187945881640497873087679717335445071094849905861768623887225099688086890975427767345883355328143553362985782222468045258348160731139496831534553454370489551663219076005351153487952513534499927474498658853928236855862372625169149695529189568449318891056687941863624172673715076550226082571989521608648933659873174280096718721938773918749544422183409609624800246765088423102362668998809822459007427297054524034890044286637512265496038851993669309549218368237894443130459784806040944439170445495884305658972055239720995455202354165784486223331685523750815028186499512092486226257874216000338091462328449784621347921273199394954235385802411515213769650212700808241905692538101763847750360508281342422002822842802751936385008839742826318125213269542740772581239138042436660812095273669289761838119561517626395509219637437490678499808728547836858318967471502961171897947868805509290278279311470678545082900063601310734157624412072149605527499442556960103346662859233160306196730397619437523016954868454533186194828123281435190615576684727517000705074853925325774238319639256908277626329483424264615374884108116306603373133045929498548972356473420692418712055266113171991201673627231331253210005582572579351726627709586859810733202627397133508849107645666641146569255408888823171461563103213706163932863577620323753286614134220599031758795263463594128855607768070654342005542580377587082287631458400135550067852988208767019597154387996978045390280954485771181249958398437829016818257731883610784060056291018564875620522668784012392010520034854036651934698488672269836641294949095154573709942290686610739263559669752244896231760732786264150749587867898289940946397508824396827150433987864137717889413661009106873000761782754546059043323030849555338899081715590539449404631134729457578698852732483286407467300630405001905200995401758357091766725822278860658671246099367572015400713354177678857584281301297881065376863666336067412755068819251037222309384757400952931933209838672800224695756998843499464612217100399574171341338082383707485744905354113099619097787422322830556829548081792439012630322275204904499208309802796914330228346915476674874534906864040477139694992367218230062522482019551541290583043160067178278665250512843536545830339/8777202634664656418469613948469354291704622175910658071356199118316010734605696462497329486590903726043612843363724455454661009401031810060216360047370291360842926875313821329603712963845729236886972414838352558622929233016128780065259918292155318914197166486507187314938175006100395275290517180882837068087197147646346123434829073054722011670096999945131371395341875867852323298714154216709417333618835639489915542575784112183324185210279876856737632402160455382326916487212420887503424696490429115386152192981615096697672884536766192190242787744290770449249176030685750707848192363623902143556784814121338184954557748596391619524781253269290863423981388715760864281546685485317611923844265340835105037308434515072422039377874879738535777257040200046733567274143386638869124925732846043181181042668456596921149689489036826908433736314341335658517443246166402713000862828322836759767108796623935508156328808266666345608474282019681784371068067363010878598580992668890908358513721126301573515429221049621756421901146694496238209906189396136235327951684182417061059905545612671168864760392758377800704068580036149907403811285526123795408876294904785652305687269390629945071951458326179047921021218125616806178024551933654755126107057870989727003921352623922047261130158529076749284281839552832921655818948259130987887774376668968210757543631372443840709171838617538852326191265445481179928168414549835432622766018199977785167117646047158979569839155773759370081795416246763421604163952582119857217168591696337545118365130458469807678244790679388784568824595414244793698614910915971043332549900998713480510552403417732270735387440400289544953193110803015963607541285194474205659862097000288287309223750539868640332242623674266246839828075683613234794329176217806675216896998776554066911110118703289674062104924990923851848249859485758376159185073645104257572113893405102333032067862408286530363586211116175461205566863107222246310353370225243288642837863373157409527892049268179085435795491555607164612281755295531360146285293931756890602376372747520223351523978830694909145307996786367173682850105157476170221398818141588332003822061949845447330241768628661632167926518931166895828402692295370473200432976976521027564267366706419416078775344644015657605869845469221708512039404751321527540483164844750559820005357522324564625919799312762846141239505638142805432434041620827607108681456337372064904162925087107195985476940201220096508516525793456683720644474308542167471376411406420950999992434649427565595481112373752522060780537299127460995370236543350475830663668153515783435248879286781444277217430649333492472252767640687139514367958733133530254974130358637825998205620338695637360494445575092216585733797292156547441516319546491449631594694631673296889070194306923882549189557741900207052269461287084143339662779738629803186205944833395752418645472401173073383668252526303243296451258549162708356581313760319661281312501910828516235707177664442300404346425098369954512611641079637189234650394812219521775315786145551344169963748531837807627881547339338805742024582224221802542846918437552915690479148339069352178496942650502138704550183354334967771275982856182884883604410345145372474030907962659993307507554028043011230308484260679520355502927328530940632927846584804038007829186241914414858823330039932885024174487550833852362637860238435663513469841404700545557305995183188971052001809861809007650654007262863952970587829673435829178281603698015864532626482859017530106747090266426865042715308420913873597971035153009941906231894746966445141233552962540473763951033070728159677130147626621784768991900336149228381985534257885004149373969911926885797776709997059102752017305358009976344035114024395981487093000314939732250555435897488949287653093321853266571842379830126547153729549036920425736586921429978915546918778516093722156867636325518866722336217535666498331003477638132634627991249213435182091176302670677577565734722399127122126839754873137906979140042897825180773327186107782358301598484429181972437533763096667540336799469916045994912894610236181757835890140456407282093820921331881397198031201806216839610657284536504047281023579371131665734922904783866053235055015484394231764871237521785209393140289972362822884698146735033869769807549548779661871984545890937366100764862752077541471879902725244171355503186858987340568653897720381139435047791688776039301231950529094089817104487021365774884635280722457315018869830090037657039654965257397585689745860848806080722324690454727167134796584337791682015999233300868673456979466278251826600136599720017818848698779758688691918894128748031630893532250123779838884996425955415992574754652695471474767343587245726406182329176580668679631580223267360877256596461563334787944637542846456003351881471892257601671651341308712166270108181805782122982299137666312282824306647583624989073037156649292242893852013070783701226599766146202154238306157049028348480462864932642097446906773742238570133289242826002282946536785782631009525916059738969291259705871715683772568965664699184773740777712280482775715935455756751395498817549793477456695998417768684467983269041614690206698498909725866487702121622536802483618917350587087891384930912518521265889031386250990003952152261722048547638232646168126613432038070424105065485796202996320485568682118016321862991167478455321768014738438128754185596772619279406462443827534130056963704405044935348653225114174790780149887687584785402522884028658283633163787720911708992540575864705914353934417022645514220709046357627647564357425618692995340374864339748045031028032966569698636510582668467236125447745062341617030025111490371401286165137059118074743270736440501258472891346127872462667232679068748804116025413959488157931312477561100145945712612949914862104815594794999249841964321517684673200434567618964243800455864894829894043777275010741006099373491983843077511497917420505703059952495862468361739338812515699756953620334640658192876793829236073434573741656623088407453108097245564725213198272826916289602134142739564249419567762878290463270408574922022076602439982512896910184602997529065846894510496699101826636306655857341162487765985162833363062389559946058083666923986012243148445786523825708285335809402307726828299187452636342562264850250738647008337004073648588663717624964591712796156176051811303587008695802238443000659360262822274201157058989171140605363757262715039711836435267201104911185310881209587787085902214067011120249206920930390092002013926528617002840598652739858626032863148313350990570099636466948315037251279483584298262932251406595483378246785807535611749633763058037897359717040868961405818284099617948849433049436575391579300119851928529756422622723306396869676275970029554443585678951027916894843975060149675530799724137558236286542362269953910096002601935118460926676401647670047620142445433931766004114804178116427565700418306645902126388362468825507459689300060886321266370562693571126749666200854272660692183292992040934302422995705006352074594711460294611939259261990678024511944216638670729114815642321952002090729369791294839378460346154543144485335133251656077032220236396898394049498414051866917754549414591999079474261211591565618751362796416003292400024736984929388629675723337894829694678315572922020740117800916410586433480654470193683502380154010623569116062721330283590512559073440611814680505380164173037776902864905674592267882660788637277151746170675972785796521763743850811174924692847537634127068551433245821239015967841828418808462387269982701615334310642615270000597356296924059014371085566415963366508145631521668442026871730773601632225364810675619141557082650914857422106840779056690605019373338452926911636721603272354085502450891772104100900200203340986151393083430098829384078587811871853218736995410768637701928342702341028551096278610195164544381986282542501180011145924731329800182726709312542976363803939534678835835091124774694956557780540118230307538308952774648215896693134720253916124375172749362746149820510983790565063947896610874257640717747888548524543428355124635426818380492010394012815017012410033244913371895812784414682215359988271517692568379869831496525990733952996020705390426883252871127913736 : 1)
}}}

{{{id=118|
len(str(P))
///
27267
}}}

{{{id=19|

///
}}}

<h1>The Rank</h1>

{{{id=18|
E = EllipticCurve([0,0,1,-1,0])
E.rank()
///
1
}}}

{{{id=17|
E.rank?
///
<html><!--notruncate-->

<div class="docstring">
    
  <p><strong>File:</strong> /home/wstein/sage/sage-4.8.alpha5/local/lib/python2.6/site-packages/sage/schemes/elliptic_curves/ell_rational_field.py</p>
<p><strong>Type:</strong> &lt;type &#8216;instancemethod&#8217;&gt;</p>
<p><strong>Definition:</strong> E.rank(use_database=False, verbose=False, only_use_mwrank=True, algorithm=&#8217;mwrank_lib&#8217;, proof=None)</p>
<p><strong>Docstring:</strong></p>
<blockquote>
<div><p>Return the rank of this elliptic curve, assuming no conjectures.</p>
<p>If we fail to provably compute the rank, raises a RuntimeError
exception.</p>
<p>INPUT:</p>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre">use_database</span> <span class="pre">(bool)</span></tt> - (default: False), if
True, try to look up the regulator in the Cremona database.</li>
<li><tt class="docutils literal"><span class="pre">verbose</span></tt> - (default: None), if specified changes
the verbosity of mwrank computations. algorithm -</li>
<li><tt class="docutils literal"><span class="pre">-</span> <span class="pre">'mwrank_shell'</span></tt> - call mwrank shell command</li>
<li><tt class="docutils literal"><span class="pre">-</span> <span class="pre">'mwrank_lib'</span></tt> - call mwrank c library</li>
<li><tt class="docutils literal"><span class="pre">only_use_mwrank</span></tt> - (default: True) if False try
using analytic rank methods first.</li>
<li><tt class="docutils literal"><span class="pre">proof</span></tt> - bool or None (default: None, see
proof.elliptic_curve or sage.structure.proof). Note that results
obtained from databases are considered proof = True</li>
</ul>
<p>OUTPUT:</p>
<ul class="simple">
<li><tt class="docutils literal"><span class="pre">rank</span> <span class="pre">(int)</span></tt> - the rank of the elliptic curve.</li>
</ul>
<p>IMPLEMENTATION: Uses L-functions, mwrank, and databases.</p>
<p>EXAMPLES:</p>
<div class="highlight-python"><div class="highlight"><pre class="literal-block"><span class="gp">sage: </span><span class="n">EllipticCurve</span><span class="p">(</span><span class="s">&#39;11a&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">rank</span><span class="p">()</span>
<span class="go">0</span>
<span class="gp">sage: </span><span class="n">EllipticCurve</span><span class="p">(</span><span class="s">&#39;37a&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">rank</span><span class="p">()</span>
<span class="go">1</span>
<span class="gp">sage: </span><span class="n">EllipticCurve</span><span class="p">(</span><span class="s">&#39;389a&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">rank</span><span class="p">()</span>
<span class="go">2</span>
<span class="gp">sage: </span><span class="n">EllipticCurve</span><span class="p">(</span><span class="s">&#39;5077a&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">rank</span><span class="p">()</span>
<span class="go">3</span>
<span class="gp">sage: </span><span class="n">EllipticCurve</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">79</span><span class="p">,</span> <span class="mi">289</span><span class="p">])</span><span class="o">.</span><span class="n">rank</span><span class="p">()</span>   <span class="c"># This will use the default proof behavior of True</span>
<span class="go">4</span>
<span class="gp">sage: </span><span class="n">EllipticCurve</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">79</span><span class="p">,</span> <span class="mi">342</span><span class="p">])</span><span class="o">.</span><span class="n">rank</span><span class="p">(</span><span class="n">proof</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
<span class="go">5</span>
<span class="gp">sage: </span><span class="n">EllipticCurve</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">79</span><span class="p">,</span> <span class="mi">342</span><span class="p">])</span><span class="o">.</span><span class="n">simon_two_descent</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span>
<span class="go">5</span>
</pre></div>
</div>
<p>Examples with denominators in defining equations:</p>
<div class="highlight-python"><div class="highlight"><pre class="literal-block"><span class="gp">sage: </span><span class="n">E</span> <span class="o">=</span> <span class="n">EllipticCurve</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">675</span><span class="o">/</span><span class="mi">4</span><span class="p">])</span>
<span class="gp">sage: </span><span class="n">E</span><span class="o">.</span><span class="n">rank</span><span class="p">()</span>
<span class="go">0</span>
<span class="gp">sage: </span><span class="n">E</span> <span class="o">=</span> <span class="n">EllipticCurve</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="o">/</span><span class="mi">5</span><span class="p">])</span>
<span class="gp">sage: </span><span class="n">E</span><span class="o">.</span><span class="n">rank</span><span class="p">()</span>
<span class="go">1</span>
<span class="gp">sage: </span><span class="n">E</span><span class="o">.</span><span class="n">minimal_model</span><span class="p">()</span><span class="o">.</span><span class="n">rank</span><span class="p">()</span>
<span class="go">1</span>
</pre></div>
</div>
<p>A large example where mwrank doesn&#8217;t determine the result with certainty:</p>
<div class="highlight-python"><div class="highlight"><pre class="literal-block"><span class="gp">sage: </span><span class="n">EllipticCurve</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">37455</span><span class="p">])</span><span class="o">.</span><span class="n">rank</span><span class="p">(</span><span class="n">proof</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
<span class="go">0</span>
<span class="gp">sage: </span><span class="n">EllipticCurve</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">37455</span><span class="p">])</span><span class="o">.</span><span class="n">rank</span><span class="p">(</span><span class="n">proof</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
<span class="gt">Traceback (most recent call last):</span>
<span class="c">...</span>
<span class="nc">RuntimeError</span>: <span class="n-Identifier">Rank not provably correct.</span>
</pre></div>
</div>
</div></blockquote>


</div>
</html>
}}}

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

{{{id=24|
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)]
}}}

<p>A family</p>

{{{id=25|
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
}}}

<p><strong>Exercise:</strong> Find the first $a$ such that $F(a)$ has rank $5$. &nbsp;</p>

{{{id=31|

///
}}}

<p>Elkies Curve of Rank (at least) 28</p>

{{{id=27|
E = EllipticCurve([1,-1,1,-20067762415575526585033208209338542750930230312178956502,
34481611795030556467032985690390720374855944359319180361266008296291939448732243429])
///
}}}

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

{{{id=38|
D = E.discriminant(); [p for p in primes(1000) if D%p==0]
///
[2, 3, 5, 7, 11, 13, 17, 19]
}}}

{{{id=29|
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
}}}

<p><strong>Exercise: </strong>What is the smallest good prime $p$ such that $a_p&gt;0$?</p>

{{{id=36|
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])]
///
}}}

{{{id=42|
P[0] + P[1]
///
(3108017602820373171270912268547263377137814553518653/1146511727644798490358769 : 1802558090655926570845589254141496753576572784929653778538438661217456501493/1227630733053376047702643420235410103 : 1)
}}}

{{{id=43|
time E.regulator_of_points(P[:7])
///
3.04313979267944e11
Time: CPU 2.64 s, Wall: 2.77 s
}}}

{{{id=45|
time E.regulator_of_points(P[:15])
///
1.97964758730350e23
Time: CPU 12.00 s, Wall: 12.00 s
}}}

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

{{{id=46|
time E.regulator_of_points(P)
///
}}}

{{{id=47|
points([(x,y) for x,y,_ in P]) + plot(E, color='grey', xmax=2e28, ymin=-50)
///
<html><font color='black'><img src='cell://sage0.png'></font></html>
}}}

{{{id=52|

///
}}}

{{{id=51|

///
}}}

<h1>Primes</h1>

{{{id=50|
prime_range(50)
///
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
}}}

{{{id=48|
primes(50)
///
<generator object primes at 0x5c53d20>
}}}

{{{id=125|
Primes()
///
Set of all prime numbers: 2, 3, 5, 7, ...
}}}

{{{id=54|
for p in primes(50):
    print p,
///
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
}}}

{{{id=55|
@interact
def _(n=(20,30,..,2000)):
    prime_pi.plot(0, n).show(figsize=[12,3],gridlines=True)
///
<html><!--notruncate--><div padding=6 id="div-interact-55"> <table width=800px height=20px bgcolor="#c5c5c5"
                 cellpadding=15><tr><td bgcolor="#f9f9f9" valign=top align=left><table>
<tr><td colspan=3><table><tr><td align=right><font color="black">n&nbsp;</font></td><td><table><tr><td>
        <div id="slider-n-55" style="margin:0px; margin-left: 1.0em; margin-right: 1.0em; width: 15.0em;"></div>
        </td><td><font color="black" id="slider-n-55-lbl"></font></td></tr></table><script>(function(){ var values = ["20","30","40","50","60","70","80","90","100","110","120","130","140","150","160","170","180","190","200","210","220","230","240","250","260","270","280","290","300","310","320","330","340","350","360","370","380","390","400","410","420","430","440","450","460","470","480","490","500","510","520","530","540","550","560","570","580","590","600","610","620","630","640","650","660","670","680","690","700","710","720","730","740","750","760","770","780","790","800","810","820","830","840","850","860","870","880","890","900","910","920","930","940","950","960","970","980","990","1000","1010","1020","1030","1040","1050","1060","1070","1080","1090","1100","1110","1120","1130","1140","1150","1160","1170","1180","1190","1200","1210","1220","1230","1240","1250","1260","1270","1280","1290","1300","1310","1320","1330","1340","1350","1360","1370","1380","1390","1400","1410","1420","1430","1440","1450","1460","1470","1480","1490","1500","1510","1520","1530","1540","1550","1560","1570","1580","1590","1600","1610","1620","1630","1640","1650","1660","1670","1680","1690","1700","1710","1720","1730","1740","1750","1760","1770","1780","1790","1800","1810","1820","1830","1840","1850","1860","1870","1880","1890","1900","1910","1920","1930","1940","1950","1960","1970","1980","1990","2000"]; setTimeout(function() {
    $('#slider-n-55').slider({
        step: 1, min: 0, max: 198, value: 0,
        change: function (e,ui) { var position = ui.value; if(values!=null) $('#slider-n-55-lbl').text(values[position]); interact(55, '_interact_.update(\'55\', \'n\', 27, _interact_.standard_b64decode(\''+encode64(position)+'\'), globals()); _interact_.recompute(\'55\');'); },
        slide: function(e,ui) { if(values!=null) $('#slider-n-55-lbl').text(values[ui.value]); }
    });
    if(values != null) $('#slider-n-55-lbl').text(values[$('#slider-n-55').slider('value')]);
    }, 1); })();</script></td>
</tr></table></td></tr>
<tr><td></td><td style='width: 100%;'><div id="cell-interact-55"><?__SAGE__START>
        <table border=0 bgcolor="white" width=100%>
        <tr><td bgcolor="white" align=left valign=top><pre><?__SAGE__TEXT></pre></td></tr>
        <tr><td  align=left valign=top><?__SAGE__HTML></td></tr>
        </table><?__SAGE__END></div></td><td></td></tr>
<tr><td colspan=3></td></tr>
</table></td>
                 </tr></table></div>
                 </html>
}}}

{{{id=58|
time p = 2^43112609 - 1
///
Time: CPU 0.00 s, Wall: 0.01 s
}}}

<p>It takes a while to compute the string representation of $p$.</p>

{{{id=61|
time s_bigp = str(2^43112609 - 1)
len(s_bigp)
///
Time: CPU 11.71 s, Wall: 11.72 s
12978189
}}}

{{{id=57|
@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:]
///
<html><!--notruncate--><div padding=6 id="div-interact-57"> <table width=800px height=20px bgcolor="#c5c5c5"
                 cellpadding=15><tr><td bgcolor="#f9f9f9" valign=top align=left><table>
<tr><td colspan=3><table><tr><td align=right><font color="black">digits&nbsp;</font></td><td><table><tr><td>
        <div id="slider-digits-57" style="margin:0px; margin-left: 1.0em; margin-right: 1.0em; width: 15.0em;"></div>
        </td><td><font color="black" id="slider-digits-57-lbl"></font></td></tr></table><script>(function(){ var values = ["5","20","35","65","80","95","125","140","155","185","200","215","245","260","275","305","320","335","365","380","395","425","440","455","485","500","515","545","560","575","605","620","635","665","680","695","725","740","755","785","800","815","845","860","875","905","920","935","965","980","995","1025","1040","1055","1085","1100","1115","1145","1160","1175","1205","1220","1235","1265","1280","1295","1325","1340","1355","1385","1400","1415","1445","1460","1475","1505","1520","1535","1565","1580","1595","1625","1640","1655","1685","1700","1715","1745","1760","1775","1805","1820","1835","1865","1880","1895","1925","1940","1955","1985","2000","2015","2045","2060","2075","2105","2120","2135","2165","2180","2195","2225","2240","2255","2285","2300","2315","2345","2360","2375","2405","2420","2435","2465","2480","2495","2525","2540","2555","2585","2600","2615","2645","2660","2675","2705","2720","2735","2765","2780","2795","2825","2840","2855","2885","2900","2915","2945","2960","2975","3005","3020","3035","3065","3080","3095","3125","3140","3155","3185","3200","3215","3245","3260","3275","3305","3320","3335","3365","3380","3395","3425","3440","3455","3485","3500","3515","3545","3560","3575","3605","3620","3635","3665","3680","3695","3725","3740","3755","3785","3800","3815","3845","3860","3875","3905","3920","3935","3965","3980","3995","4025","4040","4055","4085","4100","4115","4145","4160","4175","4205","4220","4235","4265","4280","4295","4325","4340","4355","4385","4400","4415","4445","4460","4475","4505","4520","4535","4565","4580","4595","4625","4640","4655","4685","4700","4715","4745","4760","4775","4805","4820","4835","4865","4880","4895","4925","4940","4955","4985","5000","5030","5045","5060","5090","5105","5120","5150","5165","5180","5210","5225","5240","5270","5285","5300","5330","5345","5360","5390","5405","5420","5450","5465","5480","5510","5525","5540","5570","5585","5600","5630","5645","5660","5690","5705","5720","5750","5765","5780","5810","5825","5840","5870","5885","5900","5930","5945","5960","5990","6005","6020","6050","6065","6080","6110","6125","6140","6170","6185","6200","6230","6245","6260","6290","6305","6320","6350","6365","6380","6410","6425","6440","6470","6485","6500","6530","6545","6560","6590","6605","6620","6650","6665","6680","6710","6725","6740","6770","6785","6800","6830","6845","6860","6890","6905","6920","6950","6965","6980","7010","7025","7040","7070","7085","7100","7130","7145","7160","7190","7205","7220","7250","7265","7280","7310","7325","7340","7370","7385","7400","7430","7445","7460","7490","7505","7520","7550","7565","7580","7610","7625","7640","7670","7685","7700","7730","7745","7760","7790","7805","7820","7850","7865","7880","7910","7925","7940","7970","7985","8000","8030","8045","8060","8090","8105","8120","8150","8165","8180","8210","8225","8240","8270","8285","8300","8330","8345","8360","8390","8405","8420","8450","8465","8480","8510","8525","8540","8570","8585","8600","8630","8645","8660","8690","8705","8720","8750","8765","8780","8810","8825","8840","8870","8885","8900","8930","8945","8960","8990","9005","9020","9050","9065","9080","9110","9125","9140","9170","9185","9200","9230","9245","9260","9290","9305","9320","9350","9365","9380","9410","9425","9440","9470","9485","9500","9530","9545","9560","9590","9605","9620","9650","9665","9680","9710","9725","9740","9770","9785","9800","9830","9845","9860","9890","9905","9920","9950","9965","9995"]; setTimeout(function() {
    $('#slider-digits-57').slider({
        step: 1, min: 0, max: 499, value: 0,
        change: function (e,ui) { var position = ui.value; if(values!=null) $('#slider-digits-57-lbl').text(values[position]); interact(57, '_interact_.update(\'57\', \'digits\', 10, _interact_.standard_b64decode(\''+encode64(position)+'\'), globals()); _interact_.recompute(\'57\');'); },
        slide: function(e,ui) { if(values!=null) $('#slider-digits-57-lbl').text(values[ui.value]); }
    });
    if(values != null) $('#slider-digits-57-lbl').text(values[$('#slider-digits-57').slider('value')]);
    }, 1); })();</script></td>
</tr></table></td></tr>
<tr><td></td><td style='width: 100%;'><div id="cell-interact-57"><?__SAGE__START>
        <table border=0 bgcolor="white" width=100%>
        <tr><td bgcolor="white" align=left valign=top><pre><?__SAGE__TEXT></pre></td></tr>
        <tr><td  align=left valign=top><?__SAGE__HTML></td></tr>
        </table><?__SAGE__END></div></td><td></td></tr>
<tr><td colspan=3></td></tr>
</table></td>
                 </tr></table></div>
                 </html>
}}}

{{{id=63|

///
}}}

{{{id=64|
E = EllipticCurve([0,0,1,-1,0]); E
///
Elliptic Curve defined by y^2 + y = x^3 - x over Rational Field
}}}

{{{id=62|
E23 = E.change_ring(GF(23)); E23
///
Elliptic Curve defined by y^2 + y = x^3 + 22*x over Finite Field of size 23
}}}

{{{id=56|
E23.plot(pointsize=50, figsize=4, gridlines=True)
///
<html><font color='black'><img src='cell://sage0.png'></font></html>
}}}

<p><strong>Exercise:</strong>&nbsp;Make an interact that has a slider letting you select a prime, which plots the graph of $E$ modulo that prime.</p>

{{{id=66|

///
}}}

{{{id=68|

///
}}}

<h1>The <em>L</em>-Series</h1>

{{{id=72|
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
}}}

{{{id=71|
show(line([(x,L(x)) for x in [1.5,1.6, .., 8]]), figsize=[8,3], xmin=0, ymin=0)
///
<html><font color='black'><img src='cell://sage0.png'></font></html>
}}}

{{{id=70|
@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
///
<html><!--notruncate--><div padding=6 id="div-interact-70"> <table width=800px height=20px bgcolor="#c5c5c5"
                 cellpadding=15><tr><td bgcolor="#f9f9f9" valign=top align=left><table>
<tr><td colspan=3><table><tr><td align=right><font color="black">E&nbsp;</font></td><td><table style="border:1px solid #dfdfdf; background-color:#efefef;">
<tr><td><button style="border-style:inset;" value="0" onclick="$('BUTTON', this.parentNode).css('border-style', 'outset'); $(this).css('border-style', 'inset'); interact(70, '_interact_.update(\'70\', \'E\', 11, _interact_.standard_b64decode(\''+encode64(this.value)+'\'), globals()); _interact_.recompute(\'70\');')">y^2 + y = x^3 - x^2</button>
<button style="border-style:outset;" value="1" onclick="$('BUTTON', this.parentNode).css('border-style', 'outset'); $(this).css('border-style', 'inset'); interact(70, '_interact_.update(\'70\', \'E\', 11, _interact_.standard_b64decode(\''+encode64(this.value)+'\'), globals()); _interact_.recompute(\'70\');')">y^2 + y = x^3 - x</button>
<button style="border-style:outset;" value="2" onclick="$('BUTTON', this.parentNode).css('border-style', 'outset'); $(this).css('border-style', 'inset'); interact(70, '_interact_.update(\'70\', \'E\', 11, _interact_.standard_b64decode(\''+encode64(this.value)+'\'), globals()); _interact_.recompute(\'70\');')">a rank 4 curve</button>
<button style="border-style:outset;" value="3" onclick="$('BUTTON', this.parentNode).css('border-style', 'outset'); $(this).css('border-style', 'inset'); interact(70, '_interact_.update(\'70\', \'E\', 11, _interact_.standard_b64decode(\''+encode64(this.value)+'\'), globals()); _interact_.recompute(\'70\');')">elkies rank>=28 curve</button>
<button style="border-style:outset;" value="4" onclick="$('BUTTON', this.parentNode).css('border-style', 'outset'); $(this).css('border-style', 'inset'); interact(70, '_interact_.update(\'70\', \'E\', 11, _interact_.standard_b64decode(\''+encode64(this.value)+'\'), globals()); _interact_.recompute(\'70\');')">2012</button>
</td></tr></table></td>
</tr><tr><td align=right><font color="black">B&nbsp;</font></td><td><table><tr><td>
        <div id="slider-B-70" style="margin:0px; margin-left: 1.0em; margin-right: 1.0em; width: 15.0em;"></div>
        </td><td><font color="black" id="slider-B-70-lbl"></font></td></tr></table><script>(function(){ var values = ["30","31","33","35","37","39","41","43","45","47","49","51","53","55","57","59","61","63","64","66","68","70","72","74","76","78","80","82","84","86","88","90","92","94","96","98","99","101","103","105","107","109","111","113","115","117","119","121","123","125","127","129","131","133","134","136","138","140","142","144","146","148","150","152","154","156","158","160","162","164","166","168","169","171","173","175","177","179","181","183","185","187","189","191","193","195","197","199","201","203","204","206","208","210","212","214","216","218","220","222","224","226","228","230","232","234","236","237","239","241","243","245","247","249","251","253","255","257","259","261","263","265","267","269","271","272","274","276","278","280","282","284","286","288","290","292","294","296","298","300","302","304","306","307","309","311","313","315","317","319","321","323","325","327","329","331","333","335","337","339","341","342","344","346","348","350","352","354","356","358","360","362","364","366","368","370","372","374","376","377","379","381","383","385","387","389","391","393","395","397","399","401","403","405","407","409","411","412","414","416","418","420","422","424","426","428","430","432","434","436","438","440","442","444","445","447","449","451","453","455","457","459","461","463","465","467","469","471","473","475","477","479","480","482","484","486","488","490","492","494","496","498","500","502","504","506","508","510","512","514","515","517","519","521","523","525","527","529","531","533","535","537","539","541","543","545","547","549","550","552","554","556","558","560","562","564","566","568","570","572","574","576","578","580","582","584","585","587","589","591","593","595","597","599","601","603","605","607","609","611","613","615","617","618","620","622","624","626","628","630","632","634","636","638","640","642","644","646","648","650","652","653","655","657","659","661","663","665","667","669","671","673","675","677","679","681","683","685","687","688","690","692","694","696","698","700","702","704","706","708","710","712","714","716","718","720","722","723","725","727","729","731","733","735","737","739","741","743","745","747","749","751","753","755","757","758","760","762","764","766","768","770","772","774","776","778","780","782","784","786","788","790","792","793","795","797","799","801","803","805","807","809","811","813","815","817","819","821","823","825","826","828","830","832","834","836","838","840","842","844","846","848","850","852","854","856","858","860","861","863","865","867","869","871","873","875","877","879","881","883","885","887","889","891","893","895","896","898","900","902","904","906","908","910","912","914","916","918","920","922","924","926","928","930","931","933","935","937","939","941","943","945","947","949","951","953","955","957","959","961","963","965","966","968","970","972","974","976","978","980","982","984","986","988","990","992","994","996","998","1000"]; setTimeout(function() {
    $('#slider-B-70').slider({
        step: 1, min: 0, max: 499, value: 0,
        change: function (e,ui) { var position = ui.value; if(values!=null) $('#slider-B-70-lbl').text(values[position]); interact(70, '_interact_.update(\'70\', \'B\', 12, _interact_.standard_b64decode(\''+encode64(position)+'\'), globals()); _interact_.recompute(\'70\');'); },
        slide: function(e,ui) { if(values!=null) $('#slider-B-70-lbl').text(values[ui.value]); }
    });
    if(values != null) $('#slider-B-70-lbl').text(values[$('#slider-B-70').slider('value')]);
    }, 1); })();</script></td>
</tr></table></td></tr>
<tr><td></td><td style='width: 100%;'><div id="cell-interact-70"><?__SAGE__START>
        <table border=0 bgcolor="white" width=100%>
        <tr><td bgcolor="white" align=left valign=top><pre><?__SAGE__TEXT></pre></td></tr>
        <tr><td  align=left valign=top><?__SAGE__HTML></td></tr>
        </table><?__SAGE__END></div></td><td></td></tr>
<tr><td colspan=3></td></tr>
</table></td>
                 </tr></table></div>
                 </html>
}}}

{{{id=96|

///
}}}

{{{id=95|

///
}}}

<h1>Natural (analytic) continuation</h1>

{{{id=94|
var('x')
f = 1/(1-x)
plot(f, -6, 2, figsize=[4,2], ymax=5, ymin=-5)
///
<html><font color='black'><img src='cell://sage0.png'></font></html>
}}}

{{{id=97|
f.taylor(x,0,5)
///
x^5 + x^4 + x^3 + x^2 + x + 1
}}}

{{{id=99|

///
}}}

{{{id=80|

///
}}}

<h1>The Birch and Swinnerton-Dyer Conjecture:</h1>
<h2>A Rank 1 Curve</h2>

{{{id=82|
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)
}}}

{{{id=83|
c = Lser[1]; c
///
0.305999773834052
}}}

{{{id=85|
Omega_E = E.period_lattice().omega(); Omega_E
///
5.98691729246392
}}}

{{{id=84|
Reg_E = E.regulator(); Reg_E
///
0.0511114082399688
}}}

{{{id=65|
# this *uses* the formula; but we do know in this case that Sha_E=1.
Sha_E = E.sha().an(); Sha_E
///
1
}}}

{{{id=89|
prod_cp = E.tamagawa_product_bsd(); prod_cp
///
1
}}}

{{{id=88|
T = E.torsion_order()^2; T
///
1
}}}

{{{id=87|
Omega_E * Reg_E * Sha_E * prod_cp / T^2
///
0.305999773834052
}}}

{{{id=91|

///
}}}

{{{id=90|

///
}}}

<h1></h1>

<h1>A Rank 2 Curve</h1>

{{{id=78|
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)
}}}

{{{id=100|
E.rank()
///
2
}}}

<p>If you solve for the order of the Shafarevich-Tate group in the conjecture:</p>

{{{id=101|
E.sha().an()
///
1.00000000000000
}}}

{{{id=105|
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
}}}

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

{{{id=103|
S.p_primary_bound(5)
///
0
}}}

<p><strong>Open Problem: </strong>Prove that the Shafarevich-Tate group of the specific curve $E$ given above is <em>finite.</em></p>

{{{id=109|

///
}}}

<h1>A Rank 4 Curve</h1>

{{{id=108|
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
}}}

{{{id=107|
E.rank()
///
4
}}}

{{{id=115|
E.gens()
///
[(-15 : 15 : 1), (-14 : 20 : 1), (-51/4 : 187/8 : 1), (22 : 132 : 1)]
}}}

{{{id=112|
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)
}}}

{{{id=117|

///
}}}

<p><strong>Open Problem: &nbsp;</strong><em>Prove</em>&nbsp;that $L(E,s)$ vanishes to order $4$ at $s=1$ for the specific curve $E$ above. &nbsp; (Or for any curve at all!)</p>
<p>&nbsp;</p>

{{{id=113|

///
}}}