$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ $ $ apecs (arithmetic of plane elliptic curves) $ $ -- a program written in Maple -- $ $ $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Contents of this file: -- history of changes/corrections made to apecs; (For history prior to 1997 see READ_ME.old) -- upecs - the ubasic version of apecs. For the procedure to obtain apecs see the file install.txt. ^^^^^^^^^^^ ============================================================================ Notes: Please send queries, remarks etc. to connell@math.mcgill.ca ## !! I'll be out of the country until Dec. 20/00, and ** won't be able to respond to e-mail @@ Chapters 1--5 of Elliptic Curve Handbook now available by anonymous ftp: go to pub/ECH1 Note that the Appendix to Chapter 1 is a beginner's tutorial for apecs. For John Cremona's tables greatly extending and amplifying AntwerpIV (a smaller version of which used to be at this ftp site), the URL is http://www.maths.nott.ac.uk/personal/jec/ftp/data (note the s on maths) and for his programs pertaining to the arithmetic of elliptic curves/Q http://www.maths.nott.ac.uk/personal/jec/ftp/progs. ============================================================================ The directories are now labeled Apecs3 (for MapleV Release 3), Apecs5 (for Releases 4, 5 and 5.1), Apecs6 (for Maple6) NO LONGER MAINTAINED: Apecs2 (for Release 2 and earlier) ___________ | HISTORY | of improvements/corrections: ^^^^^^^^^^^ Nov. 21, 2000 Latest version 6 Finally: apecs for Maple6 is now in place. Two changes from the previous version worth noting: --- A modest beginning on Heegner points: the canonical height of a Heegner point is calculated, hence an upper bound on the naive height. See Menu(Heeg). --- The apecs integer factorization procedure afac has been enhanced. As a non-scientific test we ran the following program: shim:=time(); for itest to 10 do ein(1,1,0,10^itest-9^itest+17,7^itest-8^itest-19); isog();tw(-7);rkNC(); od; time()-shim; The approx. running times in sec.'s on my 475 mhz. PC were | previously | now, with version 6 MapleV, release 3 | 140 | 50 " " 5.1 | 50 | 21 Maple6 | 55 | 24 See Menu(afac). --- Several new entries in the table of "best known" (i.e., smallest conductor) E/Q with given torsion and rank. Call the apecs command Exam(4). Sep. 19, 2000 Version 5.8 A number of necessary "revisions". Aug. 15, 2000 Version 5.7 1. Oops, that should have been Gcub(1,0,0,1,0,T^2,0,0,0,1,0,-1); in the June 12 paragraph below. 2. Thanks to Jesper Petersen (Aarhus) for a suggestion: Apecs can sometimes take forever factoring a large DD (discriminant) or large denom(jay) of an E/Q. He asked if apecs could be enabled to "learn" factorizations supplied by the user. For a while I thought this would be rather troublesome to implement, but then I saw an easy way. Hence the new command Afac (see Menu(afac)). 3. Thanks to Nikos Tzanakis for pointing out a bug in apecs, at least when run in recent releases of Maple. It was tracked down to a problem with Maple's function taylor, which we can illustate with an example. In MapleV Release 3, taylor(sqrt(-2+X),X);===> I2^(1/2) - (1/4)I2^(1/2)X + .. whereas later Releases don't like sqrt(-2) and issue an Error message, and suggest the function series. (series(sqrt(-2+X),X);===> an amusing reult). The problem was easy to program around. 4. A number of new "record" curves are in the table displayed by the command Exam(4);, including quite a few from Tom Womack. The apecs starter catalog has been enlarged accordingly. 5. Some of the infrastructure of apecs has been retooled so it now works better. And I still find the occasional bug, e.g. (for E/Q) Expr(z) expresses the point z in the form n1*P1+...+T where RR=[P1,...] is the list of indep. points and T is a torsion point. Well, T somehow came out as -T, but that's now repaired. Still don't have apecs for Maple 6 (#*!! licensing agreement with the Maple people..), but "soon". June 12, 2000 Latest version 5.6 The version of apecs for Maple 6 has been delayed --- I'll get it out as soon as I can. John McKay (Concordia) wanted to calculate the j-invariant of a number of cubics whose coeff.'s involved a transcendental T, a simple example being U^3 + V^3 +T^2*U*V + 1 = 0. Apecs ver. 5.5 couldn't do this, but now the procedure Gcub will accept coefficients from "any" field of char. 0. Taking the point [U,V]=[0,-1], Gcub(1,0,0,1,0,T,0,0,0,1,0,-1);#produces a birat. equiv. Weier. eqn. factor(jay);#displays the j-invar. in convenient form. As before, one can call Tor(). Also, Trcw and Trwc are now available "in general" to transfer points between the cubic and Weier. curve (eg, Trcw(T,-1) in the above example). Tom Womack (Nottingham) sent me an example of an E/Q with rank(E(Q))=6 that is better (ie, smaller conductor) than the one I had listed under the apecs command Exam(4). He also pointed out that I had the wrong curve number there for rank=7, moreover he has supplied a better one. Exam(4) is now updated and corrected; also there are a number of new entries, e.g., an E/Q with torsion gp. of order 16 and rank/Q = 3. Kevin Buzzard found an error in the catalog entry for the curve C11! It listed the degree of the isogeny C11--> A11 as 25, not -25 which implies, according to the convention used by apecs (see Menu(isog)), that all 25 points in the kernel are defined over Q. This must have been lurking in the cat. since the time isog was still being debugged --- some 10 years ago. To allay my fears, I went to the next example of a curve like A11, ie with both a point of order 5 and an isogeny of degree 25 defined over Q, namely Cremona's K3 of conductor 550: Ein(1,1,1,-30328,2020281); # ===> Weier. E not in apecs starter cat Isog(); # works fine: the degrees of the isogenies are OK for all 3 E. Naturally I ran a test through the whole cat for silmilar errors and found one more: E38--->D58 had degree +3, yet |E38(Q)|=1. Thus the file cat has been corrected --- first time in two years; also Womack's curves and several other new curves listed by Exam(4) have been added. Because of a spate of minor corrections and enhancements (for example every E now carries with it a list RR of points of infinite order --- see Menu(Lin)), many of the 16 files comprising the apecs package have been altered, as can be seen from the update table in install.txt. A new command Quarm (see Menu(Quarm)) should be occasionally useful to those working with E/quadratic fields. Thanks to Tony Shaska (Erlangen) for pointing out some typo.'s in Nota(), which has now been corrected and updated. Feb. 14, 2000 Version 5.5 A couple of bug fixes --- thanks to Odile Lecacheux (Univ. Pierre et Marie Curie) and Jesper Petersen (Univ. of Denmark, Aarhus). Dave Rusin (Northern Illinois Univ.) sent some examples, which you can see by calling Menu(rk) in an apecs session, that prompted a major re-write of rk. Now rk looks not only at the "present curve" E but also at all curves (rationally) isogenous to E; this is especially important in 2-descent. Menu(rk) gives a fairly detailed account of what goes on. And there are numerous small improvements; as you can see in the update table in install.txt, many of the apecs files have been changed. I don't think I mentioned the new command Seekb made one or two versions ago, which is occasionally useful; see Menu(Seekb). June 28, 1999 Version 5.41 One error, two oversights, and two omissions: 1. Isom could miss some isomorphisms between two E defined over the rational function field Q(T). The bug has been corrected. 2. Minf got gummed up in MapleV Release 5 (only) since the Maple type `string' changed meaning in that release. (I wish they'd stop.) Now fixed. 3. Checking out some examples from Kida (Acta Arith., 77(1996), 157--171), Ein(0,0,0,0,-111^3);Isog();Seek(100); got into trouble. Silly me, I expected that, e.g., simplify((-1)^(1/3)); would yield -1; in fact it delivers 1/2+(1/2)*I*3^(1/2). Of course "simplify" was there to deal with more complicated situations. This has been programmed around. 4. Menu(Isom) is now in place. I forgot to do this in version 5.3. 5. I forgot to mention earlier the sometimes handy command Cld which clears denominators of the coeff.'s of an E/Q. See Menu(Cld). June 16, 1999 Version 5.4 ENHANCEMENTS to existing procedures: 1. FnL (L function and its derivatives) This procedure is now much more "robust", and the args are now more flexible; see Menu(fnL). Thanks to three people, in chronological order -- Belated thanks to Dave Rusin (Northern Illinois U.) for sending me the example Ein(0,1,0,-581,-7751) several years ago. The L series at s=1 takes a long time to settle down, and for a while looks like it might be 0 (which it should not be since the apecs procedure Crem() proves the rank of E(Q) is 0, without using any conjectures). In this latest version, FnL(1) gives the value .47383 (whence Sha() calculates the order of the Shafarevich- Tate group to be .999880 -- "deemed to be 1"), but apecs is satisfied with this approximation only after calculating 57872 terms of the L series. Such calculations are not unreasonably time consuming on today's faster PC's. Thanks to Jesper Petersen (Aarhus, Denmark), for letting me know about some deficiencies in the procedure. For example, now Ein(0,0,1,-7,6);FnL(3,30); confirms the value for L^{3}(1) to 30 decimal places obtained by Buhler, Gross and Zagier, Math. Comp. 44(1985), 473--481. Thanks to Odile Lecacheux (jussieu.fr) for pointing out difficulties with FnL applied to the curve E generated by the apecs procedure Exam(7,21/40). The rank of E(Q) is 3, yet in previous versions apecs concluded that L'(1)<>0 -- another apparent counterexample to part (a) of Birch, Swinnerton-Dyer! This led to the correction of an obscure bug, and now apecs finds that L'(1)=0. 2. The procedure Crem has been speeded up (but is still no competition for John Cremona's mwrank written in C++, available by ftp (see his URL's at top of this file). Other enhancements to Crem: (i) when E has a point of order 2 one can "force" Crem to carry on rather than divert to RkNC. (ii) Crem data is stored in the "stack" so that repeated calls to Crem (in the same apecs session) with appropriate args will just carry on the search for rational points on the associated quartics. See Menu(crem). 3. Thanks again to Jesper Petersen, this time for a trying example of 2-decent: the calculation of the Selmer group involves the set of square-free divisors of an integer with 25 distinct prime factors. All RkNC can do at present is state that rank<=22, while Rk says that conjecturally rank<=20. At least it no longer grinds to a halt with a Maple error message. Anyway, Seek (and Seek1 and Search) have been re-tuned to slog on when it runs into such curves with a point of order 2, without dealing with the whole set of square-free divisors. 4. Thanks to a suggestion of Lecacheux, Seek, Seek1 and Search also have been broadened to work on E/Q introduced by Ell: it can be more efficient to work on a Weierstrass equation for E that hasn't been transformed into restricted type over Z (i.e., a1=0 or 1, etc.). For example Lecacheux's curve mentioned above was actually given to me in the form Ell(1999/1600,8379/64000,8379/64000,0,0); If we apply Seek1(200000); Ein(cur); (see Menu(Seek1) etc. for updated descriptions of these procedures) then we find that RR contains 3 independent points. It would have taken longer to find 3 indep. points by applying Seek1 to the curve of restricted type given by Ein(cur) (= the curve given by Exam(7,40/19)). (Of course usually one has to use Seek rather than Seek1; there happens to be 3 indep. integral points in this example.) April 9, 1999 Version 5.3 bis A tiresome little technical change to the lprint command in MapleV Release 5 makes the Apecs file menuF unreadable in that Release. If you're using an earlier Release no correction is necessary. For Release 5 users, you can either manually edit menuF: in line 601 delete the backslash symbol \, or ftp from the site ftp.math.mcgill.ca either menuF from ftp/pub/apecs/Apecs4/Apecs or the whole kaboodle Apecs.tar.Z from ftp/pub/apecs/Apecs4. I didn't bother changing the version number. April 7, 1999 Version 5.3 IMPROVEMENTS: --- Thanks to Jesper Petersen for some examples which prompted me to re-write some fragments of old code. Now ein handles "large" E with j=0 or 1728 more efficiently. --- Thanks to Masanari Kida for urging me to have another look at the algorithms for minimal Weierstrass equations in the number field case; more efficient algorithms are being written up for section 5.6.2 of Elliptic Curve Handbook (and a revised Chap. 5 will be posted soon on ftp/pub/ECH1). For Apecs this means that the command Minf works much better for E/quadratic fields with class number = 1. NEW: The command Isom (and its less verbose companion isom) which lists the isomorphisms between two E's (over the ground field indicated by the field code K_ -- see Menu(Isom)), in particular the automorphisms of a single E. This is particularly useful for E over quadratic fields. Mar. 20, 1999 Version 5.21 Thanks to Odile Lecacheux for uncovering a bug with Ein(0,1,0,-409,1895);Crem(); now corrected. This bug, which was rarely encountered, resulted in an error condition, not in misleading output. Thanks also to Roelof Stroeker and Benjamin de Weger. The example Ein(0,0,0,-700,90100);Bas(); from their paper in Acta Arith. 87(1999), p.351 led to a corrected (better) estimate for the index in Siksek's sieve (see Menu(bas)). Feb. 3, 1999 Version 5.2 CORRECTIONS made in this version: 1. MAJOR BLUNDER: When I rewrote the procedure "tor" last March (see version 4.37 below), the case of torsion subgroup = cyclic order 9 "slipped through the cracks". Thanks to Jim Buddenhagen for spotting this. 2. Thanks to Takaaki Kagawa for pointing out that FnL could report inconsistent answers (a variable was not properly reset so a second call to FnL could give a different result). ENHANCEMENTS 1. The new file "legen" --- for Legendre --- which is now one of the 16 files comprising the apecs package contains code kindly supplied by Dave Rusin. His procedures can often solve quadratic form equations a*x^2+b*y^2+c*z^2=0 (which arise in apecs's "2-nd descent" to determine the rank) that would be inaccessible by straightforward methods. With an editor, see the top of "legen" for references. 2. For an ell. curve E defined over K=Q(sqrt(m)) (in particular, for E defined over Q), the torsion subgroup of E(K) can now be determined whether the class number of K is 1 or not. And "Ell" has much greater flexibility to facilitate the input of such E --- see Menu(ell) for details. ********** On Dec. 19/98 a hacker broke into the server and wiped out (in particular) the ftp site for apecs and the Elliptic Curve Handbook. It was only on Feb. 3/99 that I was able to reinstate the files. ************************ Oct. 13, 1998 Version 5.11 Corrected an oversight in the procedure ZPSOLV in the file biraF. This can affect the result of "2nd 2-descent" in determining the rank of E(Q) in certain, fairly rare, cases. We are now in a new ftp site, which has required minor revisions in the file install.txt. July 5, 1998 Version 5.1 Maple changed their library routine factorset so that in releases 4 and 5, factorset(-1)={1}, whereas in earlier releases, factorset(-1)={-1} (which seems more logical to me); this results in 5 "corrections" to the apecs files for releases 4 and 5. But I'm to blame for a fault in apecs version 5 for release 2 (and earlier): an out of date file was put in the ftp site by mistake. May 13, 1998 Version 5 A major simplification of the apecs files: apecsw, startup, update and all .m files have been eliminated --- as explained in the file install.txt, after downloading the new set of files, apecs is ready to go without using "startup" or "update". In particular, if you edit the file f you don't need to read f in a fresh Maple session, since there is no longer a file f.m Also, using apecs in the Windows environment has been simplified. Secondly, apecs can now determine the torsion subgroup of an elliptic curve defined over a quadratic field (for now only when class number = 1 --- because of a programming problem, not because of a mathematical difficulty). Thanks to Peter Mueller for getting me to move on this. All the ingredients were already at hand. For example, Corollary 2.10.5 of Elliptic Curve Handbook explains what kernels can occur in reduction mod p. See Menu(Qfin) for details. Mar. 26, 1998 Version 4.51 My thanks to J.B. Tunnell (Rutgers) for pointing out an obscure bug in the procedure nrs (in the file f) that's been there for years, and so must have been a problem only rarely. His example ein(0,4,0,-4,0);Rk(); caused nrs(-2,2), with SS={}, to return the value NULL instead of the expected vaue nr=1. This resulted in an incorrect determination of the rank and an apecs "trouble" message. All that had to be done was add the line nr; just before end: in nrs. (If you make this correction yourself by editing f, remember to maple read f; quit The corrected file f.m is then automatically saved.) Mar. 17, 1998 Version 4.5 Trying out the rank 4 example y^2=x^3-66688704 from Gebel, Peth\"{o} and Zimmer, On Mordell's equation, Compos. Math. 110(1998), 335--367, I discovered a really stupid programming error in the apecs procedure bas. The procedure gave a Mordell-Weil basis alright, but it incorrectly identified a point as one of the successive minima. Since this error could possibly "certify" a non-basis as a basis, please get this new version. Mar. 12, 1998 Version 4.4 Breakthrough! E. Halberstadt has obtained formulas for the local root number W_p for p=2,3 for E/Q that have additive reduction at p and for which j is p-integral. This means that now apecs can calculate for ALL E/Q the global root number, i.e. the sign SFE of the functional equation, hence (conjecturally) the parity of the rank of E(Q). The formulas for W_3 in certain cases depend on the assumption that a finite set of auxilliary E'/Q that are not semi-stable at 3 are modular; these E' are not (yet) covered by the work of Diamond et al. But anyway we assume the Birch, Swinnerton-Dyer conj. when we use SFE to determine the parity of the rank. The apecs procedures Rohr and rohr no longer exist; they have been replaced by Roha and roha. Cf. Menu(roha). The procedures Sfe and sfe have been retained, but presumably will see little use. I believe that Halberstadt's results will appear in the Comptes Rendus, Paris. Mar. 2, 1998 Version 4.37 If you used update (rather than startup) in the last few days you'll find that it takes a very long time to find the torsion subgroup of one of the new curves because Nagell-Lutz has about 36,000 candidate divisors, none of which gives a point of finite order. (The upper limit to the order of the torsion subgroup as determined by reducing E mod p for various p is falsely inflated by a curve isogenous to E with a larger torsion group.) I've rewritten the apecs procedure tor to get around this sort of problem by relying on the division poly.'s rather than Nagell-Lutz. So to get the improved tor you can use startup or update --- the latter only if you want to keep your existing catalog to preserve some of your own curves --- update takes as long as startup. Feb. 25, 1998 Version 4.36 A number of enhancements/minor bug corrections and I thank the following people for their input: *** P. M\"{u}ller, Heidelberg, for finding a bug that sometimes caused a problem in Isog when E has two 5-isogenies defined over Q. *** A. Nitaj, Saarbr\"{u}cken, for sending examples, one with shaf:=|Shaf.-Tate group|=1832^2 (!) --- for details use the apecs command Exam(5); another with Szpiro ratio 8.8 (!) --- use the (new) Exam(6). Nitaj's examples led me to make apecs more systematic, when calculating shaf, about borrowing the value of shaf of an isogenous curve, when available. Ref: A. Nitaj, D\'{e}termination de courbes elliptiques pour la conjecture de Szpiro, Acta Arith., to appear. *** M. Kida, Tokyo, for inquiring how to deal with certain examples of E defined over quadratic fields. E.g., E defined by ep:=8+3*sqrt(7);Ell(0,2*(1+2*ep^2), 0,1,0); has a 7-isogeny defined over Q(sqrt(7)). To find it one can proceed as follows. div(7); #this calculates al7 (essentially the #7-division poly.) --- see Nota(); x:=factor(al7); #one spots a factor of degree 3 #in position op(3,x) #the roots of this poly. are the #X-coords's of the 6 nonzero points #of a 7-isogeny Velu(op(3,x)); # does the job: the new "present #curve" is the isogenous curve E', and #the explicit isogeny is [X,Y]--->[x7,y7] #where x7,y7 are Q(sqrt(7))-rational #functions of X,Y --- see Menu(Velu); Kida's examples prompted me to bring Menu(Velu) up to date, and to strengthen several apecs procedures (Ford, Half, Subg, Velu) so that they can deal with E defined over "any" field of char. 0 --- well, at least they're more robust than before. Ref: M. Kida, Reduction of elliptic curves over certain real quadratic number fields, Math. Comp., to appear. Nov. 11, 1997 Version 4.35 Masanari Kida at the Univ. of Electro-Communications, Tokyo, using apecs in MapleV release 4 ran into the following problem: Ell(0,63+24*sqrt(7),0,2032+768*sqrt(7),0); factor(al4); ===> ...(X-32-12*sqrt(7))... P1:=absc(32+12*sqrt(7)); ===> P1=[32+12*sqrt(7),508+192*sqrt(7)]; Velu(P1); ===> maple ERROR message Its the same story with MapleV rel.3; but rel.2 can't even figure out the y-coord. of P1 --- it's left as 4*(32257+12192*sqrt(7))^(1/2). Similarly if one uses RO:=RootOf(_Z^2-7) instead of sqrt(7), all releases leave you with 4*(32257+12192*RO)^(1/2). Moral: use sqrt, not RootOf when working in quadratic fields. However RootOf has the advantage that denominators are automatically rationalized. So to keep with the sqrt notation I've had to add to apecs readlib(rationalize); and then rationalize( ... ) in a couple of places. Kida's example now works fine. Sep. 18, 1997 Version 4.34 Those of you who subscribe to NMBRTHRY@LISTSERV.NODAK. EDU will have noticed 3 messages concerning the quartic V^2 = -31790U^4 + 36941U^3 -56158U^2 + 28849U + 22030 which Elkies used in "On A^4+B^4+C^4=D^4" (Math. Comp., 51(1988)). He found a rational point with U=-31/467. So I confidently went to apecs and entered Quar(-31790,..,22030) only to uncover a stupid omission in the code that prevented quar from reacting when a point with U<0 is found. This is now corrected. Incidentally if you use the above Quar command with 5 args. you must first set the search limit parameter lquar:=500; say --- cf. Menu(quar). Then it will find Elkies point (I've got to write some smarter code to speed this search up), and then RkNC() quickly finds the rank is 3 with 3 independent points using the recently written 2nd 2-descent. Sep. 2, 1997 Nils Bruin (@Leiden) discovered the following bug in Apecs4, that is, in the version of apecs for MapleV Release 4 --- no problem if you're using Release <=3: ein(1,2,3,4,5);Allp(19); ===> "... non-cyclic order 8 X 7/4". (The last should be "8 X 2"). I tracked it down to the fact that in R4 the Legendre symbol L(0,p) = 0 (the Mathematician's choice), whereas for R<=3, L(0,p) = 1 (the Computer Scientist's choice "since L(a,p) = 1 means that x^2==a mod p has a sol'n."). I knew this about L, but apecs has become so big that ... . I haven't assigned a new version number to this fix since it only involves R4 and since it can be corrected by an easy edit of one line (line 204) of the file modpF: if L(f,p)=1 then |===> if f=0 or L(f,p)=1 then Of course if you ftp modpF from ~ftp/pub/apecs/Apecs4/Apecs or the whole enchilada Apecs.tar.Z from ~ftp/pub/apecs/Apecs4 you will get the corrected file. Thanks Nils. Aug. 22,1997 Version 4.33 John Cremona suggested that in Siksek's fast algorithm (see Version 4.0 below), instead of relying completely on Maple's factoring routines, which makes for slick programming, instead use Legendre symbols in a number of obvious places. I thought Maple's routines were pretty fast, so I didn't expect much. I was astounded to get a 4 to 6-fold reduction in the running time of ZPSOLV. So the new ZPSOLV is now in place (in biraF). Two or three other enhancements have been made. For example Sha now accepts an (optional) argument: Sha(X) for any X<>NULL obliges apecs to calculate the order shaf of the Shafarevich-Tate group on the assumption that RR constitutes a Mordell-Weil basis, despite any misgivings of apecs. All that apecs requires is that the sign SFE=+-1 of the functional equation is determined (by Rohr or Sfe), and that the parity of the number of points in the putative basis coincide with that of (1-SFE)/2. Aug. 15,1997 Version 4.32 Additions to Exam(5), concomitant additions to the catalog. Incremental improvements to several procedures. Aug. 10, 1997 Version 4.31 A bug, or in Microsoft-speak, undocumented behavior, caused the files cat and catcorr to be incorrect. If you already got version 4.3 PLEASE do startup or update again. Aug. 8, 1997 Version 4.3 My thanks to Jim Buddenhagen for e-mailing to me examples of curves of ranks 7 an 9 that are earlier, i.e. have smaller conductor, than the ones I had in Exam(4); (The apecs command Exam(4); displays the earliest known curves of rank r4=1,2,.. . Of course better examples for any of the Exam(i) are always welcome: connell@math.mcgill.ca. Exam(); gives a menu of the various Exam(i).) So Exam(4) has been updated. Secondly, thanks to Benne deWeger and John Cremona, Exam(5) now gives the record high for shaf/sqrt(Nc), where shaf = order of the Shaf.-Tate group and Nc = conductor, and early examples of various shaf. In the process I found that Sha(); was deficient. It now goes back to calc. L^{(r4)}(1) to greater accuracy until shaf is reasonably close to a square. A number of other corrections (it never ends): ZPSOLV has been re-written from scratch, the call to the LLL lattice alg. is now properly implemented in the MapleV R2 version of apecs, ... Apr. 29, 1997 Version 4.2 I am indebted to Dave Rusin who found an example for which apecs reported rank 0 when in fact the rank is 1. I tracked it down to an incorrect entry in nrp, which is a matrix for table look up of norm residue symbols. This table came early to apecs, and so this incorrect norm residue symbol lay undetected for many years. Of course I rechecked all the tables (nr2, nrp and nrq). It's a little too complicated to correct the problem by hand since it shows up when apecs reads the Maple compiled file apecsD.m. So it's necessary to ftp Apecs.tar.Z, and, as usual, either startup or update will give you this corrected version. Apr. 22, 1997 Latest version 4.1 A few bugs removed. If you have version 4.0 you can upgrade to 4.1 without ftp-ing the whole (binary) file Apecs.tar.Z. All you need to ftp is the (ascii) file biraF in the directory ftp/pub/apecs/Apecsx/Apecs where x=2, 3 or 4 (for MapleV release x) to overwrite the file biraF of version 4.0. Apr. 3, 1997 Version 4.0 The speed of both the first and 2nd 2-descent are now much improved. I've rewritten some old procedures so that they now avoid as far as possible factoring big integers, and most importantly I've borrowed some Maple code of Dave Rusin for the following. 1. His implementation of Siksek's fast algor. for checking the local sol. in Q_p of quartics (i.e. a quartic in x = y^2). See Merriman, Siksek and Smart, Acta Arith., 77('96), p.401. At least this is used for p>maxP, the latter being a parameter which has been arbitrarily set at 31. (You can reset it to any value you like during an apecs session). For p<=maxP apecs uses the "classical" algor. as described in Cremona, Algorithms for Modular Elliptic curves, Camb. U. Press --- see the new 2nd ed. when it comes out. 2. His code to find efficiently small nontrivial rational soln.s of a*x^2+b*y^2+c*z^2=0. This uses Maple's procedure lattice which is based on the LLL algor. Mar. 25,1997 Version 3.91 As usual a bunch of bugs fixed, also some improvements in speed. Thanks to John Cremona for pointing out to me that my use of the term 2-descent is nonstandard: a lift of an isogeny \phi is in my terminology a \deg(\phi)-descent, so for example a lift of the multiplication by n isogeny, [n]:E--->E, is an n^2-descent. Most (all?) other writers call this an n-descent. It is in the sense of this definition that apecs can carry out a 2nd 2-descent (for E with a point of order 2). John also pointed out that the 2nd descent in Birch, Swinnerton-Dyer II (see Mar. 11 below) is in fact the same 2nd descent as here, but couched in different terms. Mar. 11, 1997 Version 3.9 2nd 2-descent has been implemented for E with 2-torsion. So now the rank of many such E can be determined without using any conjectures (the parity conj., i.e., parity of rank=sign of func. eqn.; Birch, Swinnerton-Dyer conj.; Riemann hypoth. for L). This involves finding rational points on the descendant quartics of the 2nd 2-descent (at least those that pass the Hensel sieve), and then translating these points to points on E. The points on the quartics are often easily found and can lead to spectacular points on E. For example, going thro' the unfinished cases of E_D:y^2=x^3-D*x in the tables of Birch & Swinnerton Dyer (J. reine & angew. Math., 218(1965), 79--108), for D=103823, ein(0,0,0,-103823,0);Rk(5000) (the parameter 5000 is more than enough --- see Menu(Rk)) finds that r4 (the rank of E(Q)) =1 and that a point of infinite order has x-coord.= 532668183842541246553052224/1448485392925817227712025 (the y-coord. has even larger naive height --- don't ask). Of course there are cases that would require a third and more 2-descents (D=113, 3773, ..). As far as I can tell, a third 2-descent, (and 2nd 2-descent in the absence of 2-torsion --- the new apecs command Crem does the 1st 2-descent when there's no 2-torsion) necessarily involves working in algebraic number fields. That is not something that I forsee being implemented in apecs anytime soon. Thanks to Dave Rusin who sent me his Maple code which showed me how to do the 2nd 2-descent (in the 2-torsion case), which in turn was explained to him by Samir Siksek. The idea is remarkably straightforward and simple. (Why didn't I see this years ago when I was young? Oh well.) I don't immediately see a relationship with the 2nd 2-descent of Birch and Swinnerton-Dyer (Lemma 10 in the paper quoted above), and why is it that the apecs imple- mentaion easily fills many gaps in their table? I plan to add a section to Chapter 3 of the Elliptic Curve Handbook (this ftp site at pub/ECH1) describing the method. For a description of 2nd 2-descent in the general, non-2- torsion situation, see Merriman, Siksek and Smart, Explicit 4-descents on an elliptic curve, Acta Arith. 77('96), 385--404. Jan. 23, 1997 Version 3.8 New command: Crem which applies to a given E defined over Q the Birch&Swinnerton-Dyer algorithm to enumerate the isom. classes of associated quartics y^2=aU^4+bU^3+..+e as refined by John Cremona, especially his recently discovered test for isomorphism. (This test will be described in the 2nd edition of his book "Algorithms for Modular Elliptic Curves", Cambridge U. Press.) These quartics form the Selmer group S^{(2)} associated with mult. by 2 on E, thus give an upper bound for the rank, and in favorable cases (when sha[2] is trivial), determine the rank, and then you may wish to invoke the apecs command Bas. Of course the Weierstrass coefficients must be reasonable for Crem to finish in reasonable time. Jan. 8, 1997 Yesterday I had the wrong files for apecsw in Apecs2 and Apecs3; these are now corrected. Jan. 7, 1997 Version 3.71 My thanks to Dave Rusin for bringing the following bug to my attention: If an E/Q is stored in the catalog with the torsion subgroup undetermined, then when this subgroup is calculated in a subsequent apecs session, in certain circumstances the result was wrong. This has been fixed, and several other corrections/improvements have also been made. For earlier history down to version 1.1: Bug in procedure isog corrected. see the file .README.old ============================================================================= ========================================================================== upecs (latest version of Sept. 1993): the ubasic version of apecs for your pc. Procedure to obtain it from this ftp file is 1. go back to previous directory then go to directory upecs (i.e. ~ftp/pub/upecs) 2. get upecs.doc binary get upecs.ub get ts1.ubd Read upecs.doc to get oriented. 3. if you don't have ubasic8.21 (earlier versions won't do) binary get ubas821.zip This file must be `unzipped' so if you don't have that program then get pkunzip.exe (you can also get pkzip.exe if you like) and then on your pc pkunzip ubas821.zip which should produce the ubasic program plus a bunch of programs for factoring etc., also document files. Follow the instructions in ubhelp.doc 4. On your pc ubibm open "fea" as file1(5000) word 2 open "ts1" as file2(21) word 45 (these two open commands have to be done just once - and not every time you use upecs) load "upecs run ============================================================================