John Cremona on Thu, 06 Aug 2015 10:35:56 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: new GP function ellisomat


Sounds good!  Has this yet been tested on (for example) all the isogeny classes in my database?

Between (approx.) 1990 and 2010 or so I used a gp script of my own to compute isogeny classes (I also had/have a c++ version which was less reliable with respect to precision issues).  Since then I have used a different approach -- as Bill knows -- involving no floating point arithmetic, and implemented in Sage.

Since someone is bound to ask:  in the early years of making tables of elliptic curves I was not very systematic about labelling the curves in each class, and there is not going to be any simple way of matching the curves as computed by Bill's new function to their C. labels, except by using ellidentify.

For complete disclosure I have attached \a file I wrote (last touched in 2006 it seems) with more details of the historic story.  Since then I have adopted a completely different approach to ordering te cruves in each class which has nothing at all to do with the order in which the curves are found, but just uses lexicographical ordering on the reduced global minimal models.  This is the ordering used in the so-called LMFDB labels.  It is simple and deterministic, but one loses the information that the first curve is the strong Weil / Gamma_0(N)-optimal curve, and one also sometimes gets the curves listed in an order which humans dislike (see http://www.lmfdb.org/EllipticCurve/Q/11/a/ for example).

John

PS For your amusement I also attach a page showing all possible isogeny class diagrams over Q.  Of course, proving that this is complete requires very deep results of Mazur and others.

On 5 August 2015 at 21:53, Bill Allombert <Bill.Allombert@math.u-bordeaux.fr> wrote:
Dear PARI developers,

I have added a new experimental GP function ellisomat(), to compute the isogeny
matrix of an elliptict curve, but it actually do more.

For example:
? E=ellinit("11a1");
? [L,M] = ellisomat(E); M
%2 = [1,5,5;5,1,25;5,25,1]

(So E is 5-isogenous to two curves E2 and E3 which are 25-isogenous).
Of course E2 and E3 are isomorphic to the curves "11a2" and "11a3" in John
Cremona's table, but the function also work for curves too large to be in the
table.
For example the curve E2 is given by [a4,a6] as follow:
? L[2][1]
%3 = [-23461/3,-28748141/108]
? ellidentify(ellinit(L[2][1]))
%4 = [["11a2",[0,-1,1,-7820,-263580],[]],[1,-1/3,0,1/2]]

Furthermore, let P a 5-torsion point on E:
? P=elltors(E)[3][1]
%3 = [5,5]
The isogeny from E to E2 is give by
? iso2=L[2][2]
%4 = [x^5-127/3*x^4+2177*x^3-91861/3*x^2+171618*x-980197/3,(y+1/2)*x^6+(-63*y-63/2)*x^5+(y+1/2)*x^4+(1977*y+1977/2)*x^3+(7626*y+3813)*x^2+(11654*y+5827)*x+(6682*y+3341),x^2-21*x+80]

and
? ellisogenyapply(iso2,P)
%5 = [0]
So P is in the kernel of the isogeny.
For E3 we get the following model
? L[3][1]
%6 = [-625/3,296875/108]
The isogeny from E to E3 is given by
? iso3=L[3][2]
%7 = [x^5+5/3*x^4+85/3*x^3-935/3*x^2-2245/3*x-3166/3,(y+1/2)*x^6+(3*y+3/2)*x^5+(-54*y-27)*x^4+(613*y+613/2)*x^3+(1752*y+876)*x^2+(8585*y+8585/2)*x+(6451*y+6451/2),x^2+x-29/5]

and

? P3=ellisogenyapply(iso3,P)
%8 = [-25/3,125/2]
is a rational point on E3:
? E3=ellinit(L[3][1]);ellisoncurve(E3,P3)
%9 = 1
? ellorder(E3,P3)
%22 = 5

which is of order 5 as expected.

This is the documentation:

 Given an elliptic curve E defined over Q, compute representatives of the
isomorphism classes of elliptic curves isogenous to E.  The function returns a
vector [L,M] where L is a list of couples [E_i, f_i], where E_i is an elliptic
curve and f_i is a rationale isogeny from E to E_i, and M is the matrix such
that M_{i,j} is the degree of the isogeny between E_i and E_j.  Furthermore the
first curve E_1 is isomorphic to E by f_1.

Example

? E = ellinit("14a1");
? [L,M]=ellisomat(E);
? L
? apply(x->x[1],L)
%3 = [[215/48,-5291/864],[-675/16,6831/32],[-8185/48,-742643/864],
? L[2]
%4 = [[-675/16,6831/32],[x^3+3/4*x^2+19/2*x-311/12,
       1/2*x^4+(y+1)*x^3+(y-4)*x^2+(-9*y+23)*x+(55*y+55/2),x+1/3]]
? M
%5 = [1,3,3,2,6,6;3,1,9,6,2,18;3,9,1,6,18,2;2,6,6,1,3,3;6,2,18,3,1,9;6,18,2,3,9,1]
? apply(E->ellidentify(ellinit(E[1]))[1][1],L)
%6 = ["14a1","14a4","14a3","14a2","14a6","14a5"]

Cheers,
Bill.


	      Ordering the curves in each isogeny class

The order of the curves in each isogeny class is determined by two
things: (1) which curve is first, and (2) the order in which the
curves isogenous to a given curve via an isogeny of prime degree are
listed.

Once these two have been decided, the algorithm for listing the curves
in an isogeny class is as follows:

(1) Place the first curve at the top of the list.
(2) For each curve in the list not yet considered, in turn:
   (2.1) Find the l-isogenous curves for l=2,3,5,7,...
   (2.2) Add these to the end of the list in order, if they are not
   already in the list

Determining which curve is first
--------------------------------

In every isogeny class there is a unique curve distinguished by being
"optimal", more precisely Gamma_0(N)-optimal (the Gamma_1(N)-optimal
curve can be different).  Because of the way I construct the curves
this is always, with a single exception, curve #1 in the class.  The
exception is class 990h where 990h3 is the optimal one (owing to a
glitch not discovered before the first edition of my tables was
published).

Finding the isogenous curves in a deterministic order
-----------------------------------------------------

In each class there is a finite list of prime l such that every curve
in the class has at least one rational l-isogeny.  The number of
l-isogenous curves from any given curve in the class is then 1 or 2
(for odd l) or 1 or 3 (for l=2).   [Remark: this holds for any
subfield of the reals;  otherwise the number of l-isogenies for odd l
is 0,1,2 or l+1.]

When we list the curves isogenous to a given curve E by an isogeny of
prime degree l, we list those with l-2, then l=3, and so on.  Hence
the only possible ambiguity in the ordering is caused by a choice of
ordering of the l-isogenous curves when there is more than one.

Our choice of ordering has been a consequence of the method used for
finding l-isogenies, which we briefly describe, separating the cases
l=2 and l odd.

l=2
---

Period lattice method: When Delta<0 there is only one real 2-isogeny
so suppose that Delta>0.  If w1,w2 are a Z-basis for the period
lattice then the 2-isogenies have kernel w1/2, w2/2, (w1+w2)/2.  Both
the C++ and the gp program use the lattice basis such that w1 is the
real period and w2 is pure imaginary, so the order agrees.  The first
isogeny listed has kernel in the identity component of the real locus.

If the X-coordinates of the real 2-torsion points are e1 < e2 < e3
then we are using these in the order e3, e1, e2.

Division Polynomial method:  e1, e2, e3 are the roots of the cubic
2-division polynomial.  We order these so that |e1| <= |e2| <= |e3|
(in both programs), which is (a) consistent between the prgrams, (b)
different from the periods methos order BUT (c) still ambiguous if two
ei are equal in absolute value.  In these cases the ordering is NOT
deterministic! 

The allisog.* tables (as of 2006-07-17) contain 22 classes (all with
N>50000) where the order differs from that in the main curve tables,
all because of this.

odd l:  There are always exactly two real l-isogenies.

Period lattice method: When Delta>0, let w1,w2 be the Z-basis for the
period lattice with w1 real and w2 pure imaginary.  The two real
l-isogenies have kernels generated by w1/l, w2/l.  When Delta<0 let w1
be a real period and w2 such that Re(w2/w1)=1/2, so w1-2*w2 is pure
imaginary.  Now the real l-isogenies have kernels generated by w1/l
and (w1-2*w2)/l.  In both cases, the first isogeny listed has kernel
consisting of real points; the other has points with only the
X-coordinate real.  Both the C++ and the gp program use them in this
order.

Division polynomial method (only implemented for l=3): the 3-division
polynomial has exactly 2 real roots, and at most 2 rational roots
(with denominator 1 or 3).  When there are two rational roots, NEITHER
program orders them in any special way, so the order is determined by
the order the factors appear in the factorization of integer
polynomials in NTL or PARI.

The allisog.* tables (as of 2006-07-17) contain 82 classes (all with
N>50000) where the order differs from that in the main curve tables,
all because of this.


Appendix:

The 210 curves for which there is a potential ambiguity in the order
of the three 2-isogenous curves.

Here, x2s is the list of ei scaled by 8.

0
e=21a1 = [1, 0, 0, -4, -1] x2s = [-1, 8, -8]
e=24a1 = [0, -1, 0, -4, 4] x2s = [4, 8, -8]
e=32a2 = [0, 0, 0, -1, 0] x2s = [0, 4, -4]
e=39a1 = [1, 1, 0, -4, -5] x2s = [-5, 8, -8]
e=48a1 = [0, 1, 0, -4, -4] x2s = [-4, 8, -8]
e=55a1 = [1, -1, 0, -4, 3] x2s = [3, 8, -8]
e=63a2 = [1, -1, 0, -36, 27] x2s = [3, 24, -24]
e=64a1 = [0, 0, 0, -4, 0] x2s = [0, 8, -8]
e=120b2 = [0, 1, 0, -16, -16] x2s = [-4, 16, -16]
e=192a2 = [0, -1, 0, -9, 9] x2s = [4, 12, -12]
e=192b2 = [0, 1, 0, -9, -9] x2s = [-4, 12, -12]
e=222c2 = [1, 1, 0, -64, -80] x2s = [-5, 32, -32]
e=240c2 = [0, -1, 0, -16, 16] x2s = [4, 16, -16]
e=288d1 = [0, 0, 0, -9, 0] x2s = [0, 12, -12]
e=336e2 = [0, -1, 0, -64, 64] x2s = [4, 32, -32]
e=345d2 = [1, 0, 0, -36, -9] x2s = [-1, 24, -24]
e=462c2 = [1, 1, 0, -16, -20] x2s = [-5, 16, -16]
e=494b2 = [1, -1, 0, -16, 12] x2s = [3, 16, -16]
e=510f2 = [1, 0, 0, -16, -4] x2s = [-1, 16, -16]
e=525b2 = [1, 1, 0, -100, -125] x2s = [-5, 40, -40]
e=576h2 = [0, 0, 0, -36, 0] x2s = [0, 24, -24]
e=800a1 = [0, 0, 0, -25, 0] x2s = [0, 20, -20]
e=840e2 = [0, -1, 0, -36, 36] x2s = [4, 24, -24]
e=960b2 = [0, -1, 0, -81, 81] x2s = [4, 36, -36]
e=960k2 = [0, -1, 0, -25, 25] x2s = [4, 20, -20]
e=960l2 = [0, 1, 0, -81, -81] x2s = [-4, 36, -36]
e=960n2 = [0, 1, 0, -25, -25] x2s = [-4, 20, -20]
e=1035f2 = [1, -1, 0, -324, 243] x2s = [3, 72, -72]
e=1310b2 = [1, -1, 0, -1024, 768] x2s = [3, 128, -128]
e=1320i2 = [0, -1, 0, -100, 100] x2s = [4, 40, -40]
e=1344b2 = [0, -1, 0, -49, 49] x2s = [4, 28, -28]
e=1344t2 = [0, 1, 0, -49, -49] x2s = [-4, 28, -28]
e=1530e2 = [1, -1, 0, -144, 108] x2s = [3, 48, -48]
e=1560i2 = [0, -1, 0, -676, 676] x2s = [4, 104, -104]
e=1568g1 = [0, 0, 0, -49, 0] x2s = [0, 28, -28]
e=1600o2 = [0, 0, 0, -100, 0] x2s = [0, 40, -40]
e=1653b2 = [1, 1, 0, -36, -45] x2s = [-5, 24, -24]
e=1680f2 = [0, 1, 0, -36, -36] x2s = [-4, 24, -24]
e=1725d2 = [1, 1, 0, -900, -1125] x2s = [-5, 120, -120]
e=1974h2 = [1, 0, 0, -144, -36] x2s = [-1, 48, -48]
e=2030a2 = [1, -1, 0, -64, 48] x2s = [3, 32, -32]
e=2046i2 = [1, 0, 0, -64, -16] x2s = [-1, 32, -32]
e=2370n2 = [1, 0, 0, -400, -100] x2s = [-1, 80, -80]
e=2550a2 = [1, 1, 0, -400, -500] x2s = [-5, 80, -80]
e=2640n2 = [0, 1, 0, -100, -100] x2s = [-4, 40, -40]
e=2730y2 = [1, 0, 0, -256, -64] x2s = [-1, 64, -64]
e=3120g2 = [0, 1, 0, -676, -676] x2s = [-4, 104, -104]
e=3136t2 = [0, 0, 0, -196, 0] x2s = [0, 56, -56]
e=3264i2 = [0, -1, 0, -289, 289] x2s = [4, 68, -68]
e=3264be2 = [0, 1, 0, -289, -289] x2s = [-4, 68, -68]
e=3432d2 = [0, 1, 0, -144, -144] x2s = [-4, 48, -48]
e=3872b1 = [0, 0, 0, -121, 0] x2s = [0, 44, -44]
e=4080t2 = [0, -1, 0, -256, 256] x2s = [4, 64, -64]
e=4872g2 = [0, 1, 0, -784, -784] x2s = [-4, 112, -112]
e=5408a1 = [0, 0, 0, -169, 0] x2s = [0, 52, -52]
e=5520p2 = [0, -1, 0, -576, 576] x2s = [4, 96, -96]
e=5922f2 = [1, -1, 0, -1296, 972] x2s = [3, 144, -144]
e=6138d2 = [1, -1, 0, -576, 432] x2s = [3, 96, -96]
e=6720e3 = [0, -1, 0, -2401, 2401] x2s = [4, 196, -196]
e=6720k2 = [0, -1, 0, -225, 225] x2s = [4, 60, -60]
e=6720ca4 = [0, 1, 0, -2401, -2401] x2s = [-4, 196, -196]
e=6720cf2 = [0, 1, 0, -225, -225] x2s = [-4, 60, -60]
e=6864c2 = [0, -1, 0, -144, 144] x2s = [4, 48, -48]
e=7110i2 = [1, -1, 0, -3600, 2700] x2s = [3, 240, -240]
e=7200bg1 = [0, 0, 0, -225, 0] x2s = [0, 60, -60]
e=7744t2 = [0, 0, 0, -484, 0] x2s = [0, 88, -88]
e=7752g2 = [0, -1, 0, -324, 324] x2s = [4, 72, -72]
e=7955b2 = [1, -1, 0, -100, 75] x2s = [3, 40, -40]
e=7995j2 = [1, 0, 0, -100, -25] x2s = [-1, 40, -40]
e=8142b2 = [1, 1, 0, -256, -320] x2s = [-5, 64, -64]
e=8174a2 = [1, -1, 0, -256, 192] x2s = [3, 64, -64]
e=8190p2 = [1, -1, 0, -2304, 1728] x2s = [3, 192, -192]
e=9248e1 = [0, 0, 0, -289, 0] x2s = [0, 68, -68]
e=9744a2 = [0, -1, 0, -784, 784] x2s = [4, 112, -112]
1
e=10560bl2 = [0, -1, 0, -121, 121] x2s = [4, 44, -44]
e=10560cf2 = [0, 1, 0, -121, -121] x2s = [-4, 44, -44]
e=10686b2 = [1, 1, 0, -300304, -375380] x2s = [-5, 2192, -2192]
e=10816bb2 = [0, 0, 0, -676, 0] x2s = [0, 104, -104]
e=10920k2 = [0, -1, 0, -196, 196] x2s = [4, 56, -56]
e=11552h1 = [0, 0, 0, -361, 0] x2s = [0, 76, -76]
e=11850d2 = [1, 1, 0, -10000, -12500] x2s = [-5, 400, -400]
e=12480m2 = [0, -1, 0, -625, 625] x2s = [4, 100, -100]
e=12480cz2 = [0, 1, 0, -625, -625] x2s = [-4, 100, -100]
e=13650l2 = [1, 1, 0, -6400, -8000] x2s = [-5, 320, -320]
e=13674b2 = [1, 1, 0, -144, -180] x2s = [-5, 48, -48]
e=14112x1 = [0, 0, 0, -441, 0] x2s = [0, 84, -84]
e=14280bp2 = [0, -1, 0, -2500, 2500] x2s = [4, 200, -200]
e=14400dn2 = [0, 0, 0, -900, 0] x2s = [0, 120, -120]
e=15477a2 = [1, 1, 0, -324, -405] x2s = [-5, 72, -72]
e=15504k2 = [0, 1, 0, -324, -324] x2s = [-4, 72, -72]
e=15549a2 = [1, 0, 0, -324, -81] x2s = [-1, 72, -72]
e=15792w2 = [0, -1, 0, -2304, 2304] x2s = [4, 192, -192]
e=15960j2 = [0, 1, 0, -400, -400] x2s = [-4, 80, -80]
e=16368p2 = [0, -1, 0, -1024, 1024] x2s = [4, 128, -128]
e=16928e1 = [0, 0, 0, -529, 0] x2s = [0, 92, -92]
e=17472n2 = [0, -1, 0, -169, 169] x2s = [4, 52, -52]
e=17472bb2 = [0, 1, 0, -169, -169] x2s = [-4, 52, -52]
e=17472cg2 = [0, -1, 0, -729, 729] x2s = [4, 108, -108]
e=17472co2 = [0, 1, 0, -729, -729] x2s = [-4, 108, -108]
e=18240b2 = [0, -1, 0, -361, 361] x2s = [4, 76, -76]
e=18240bg2 = [0, 1, 0, -361, -361] x2s = [-4, 76, -76]
e=18496i2 = [0, 0, 0, -1156, 0] x2s = [0, 136, -136]
e=18960p2 = [0, -1, 0, -6400, 6400] x2s = [4, 320, -320]
e=19635v2 = [1, 0, 0, -900, -225] x2s = [-1, 120, -120]
2
e=21777a2 = [1, 1, 0, -196, -245] x2s = [-5, 56, -56]
e=21840p2 = [0, 1, 0, -196, -196] x2s = [-4, 56, -56]
e=21840bg2 = [0, -1, 0, -4096, 4096] x2s = [4, 256, -256]
e=21889a2 = [1, -1, 0, -196, 147] x2s = [3, 56, -56]
e=21945y2 = [1, 0, 0, -196, -49] x2s = [-1, 56, -56]
e=23104bo2 = [0, 0, 0, -1444, 0] x2s = [0, 152, -152]
e=23529d2 = [1, 1, 0, -3844, -4805] x2s = [-5, 248, -248]
e=23985e2 = [1, -1, 0, -900, 675] x2s = [3, 120, -120]
e=26912a1 = [0, 0, 0, -841, 0] x2s = [0, 116, -116]
e=28224fp2 = [0, 0, 0, -1764, 0] x2s = [0, 168, -168]
e=28560bs2 = [0, 1, 0, -2500, -2500] x2s = [-4, 200, -200]
e=29274bn2 = [1, 0, 0, -5184, -1296] x2s = [-1, 288, -288]
e=29760f2 = [0, -1, 0, -961, 961] x2s = [4, 124, -124]
e=29760cr2 = [0, 1, 0, -961, -961] x2s = [-4, 124, -124]
3
e=30752f1 = [0, 0, 0, -961, 0] x2s = [0, 124, -124]
e=31080i2 = [0, 1, 0, -1296, -1296] x2s = [-4, 144, -144]
e=31920j2 = [0, -1, 0, -400, 400] x2s = [4, 80, -80]
e=32718c2 = [1, 1, 0, -1024, -1280] x2s = [-5, 128, -128]
e=32766o2 = [1, 0, 0, -1024, -256] x2s = [-1, 128, -128]
e=33856ba2 = [0, 0, 0, -2116, 0] x2s = [0, 184, -184]
e=34848ca1 = [0, 0, 0, -1089, 0] x2s = [0, 132, -132]
e=34935e2 = [1, 0, 0, -1156, -289] x2s = [-1, 136, -136]
e=35904k2 = [0, -1, 0, -1089, 1089] x2s = [4, 132, -132]
e=35904de2 = [0, 1, 0, -1089, -1089] x2s = [-4, 132, -132]
e=39200f1 = [0, 0, 0, -1225, 0] x2s = [0, 140, -140]
e=39360i2 = [0, -1, 0, -6561, 6561] x2s = [4, 324, -324]
e=39360ct2 = [0, 1, 0, -6561, -6561] x2s = [-4, 324, -324]
e=39975i2 = [1, 1, 0, -2500, -3125] x2s = [-5, 200, -200]
4
e=40326h2 = [1, 1, 0, -16384, -20480] x2s = [-5, 512, -512]
e=41664l2 = [0, -1, 0, -3969, 3969] x2s = [4, 252, -252]
e=41664eb2 = [0, 1, 0, -3969, -3969] x2s = [-4, 252, -252]
e=42504q2 = [0, -1, 0, -484, 484] x2s = [4, 88, -88]
e=42798c2 = [1, 1, 0, -65536, -81920] x2s = [-5, 1024, -1024]
e=43674a2 = [1, 1, 0, -4096, -5120] x2s = [-5, 256, -256]
e=43808a1 = [0, 0, 0, -1369, 0] x2s = [0, 148, -148]
e=45591b2 = [1, 0, 0, -1764, -441] x2s = [-1, 168, -168]
e=46647f2 = [1, -1, 0, -2916, 2187] x2s = [3, 216, -216]
e=46761b2 = [1, 1, 0, -676, -845] x2s = [-5, 104, -104]
e=46830ba2 = [1, 0, 0, -3136, -784] x2s = [-1, 224, -224]
e=48576d2 = [0, -1, 0, -529, 529] x2s = [4, 92, -92]
e=48576dw2 = [0, 1, 0, -529, -529] x2s = [-4, 92, -92]
e=48672bt1 = [0, 0, 0, -1521, 0] x2s = [0, 156, -156]
e=49350h2 = [1, 1, 0, -3600, -4500] x2s = [-5, 240, -240]
5
e=51150g2 = [1, 1, 0, -1600, -2000] x2s = [-5, 160, -160]
e=51240f2 = [0, 1, 0, -59536, -59536] x2s = [-4, 976, -976]
e=53792e1 = [0, 0, 0, -1681, 0] x2s = [0, 164, -164]
e=53824r2 = [0, 0, 0, -3364, 0] x2s = [0, 232, -232]
e=55146d2 = [1, 1, 0, -576, -720] x2s = [-5, 96, -96]
e=55290w2 = [1, 0, 0, -576, -144] x2s = [-1, 96, -96]
e=56760g2 = [0, 1, 0, -1936, -1936] x2s = [-4, 176, -176]
e=58254bc2 = [1, 0, 0, -16384, -4096] x2s = [-1, 512, -512]
e=58422b2 = [1, 1, 0, -784, -980] x2s = [-5, 112, -112]
e=58905r2 = [1, -1, 0, -8100, 6075] x2s = [3, 360, -360]
e=59168e1 = [0, 0, 0, -1849, 0] x2s = [0, 172, -172]
6
e=61504bn2 = [0, 0, 0, -3844, 0] x2s = [0, 248, -248]
e=62160g2 = [0, -1, 0, -1296, 1296] x2s = [4, 144, -144]
e=62643b2 = [1, 1, 0, -1444, -1805] x2s = [-5, 152, -152]
e=63624e2 = [0, -1, 0, -58564, 58564] x2s = [4, 968, -968]
e=63910a2 = [1, -1, 0, -400, 300] x2s = [3, 80, -80]
e=65835bl2 = [1, -1, 0, -1764, 1323] x2s = [3, 168, -168]
e=69696gm2 = [0, 0, 0, -4356, 0] x2s = [0, 264, -264]
e=69960u2 = [0, -1, 0, -2916, 2916] x2s = [4, 216, -216]
7
e=70688c1 = [0, 0, 0, -2209, 0] x2s = [0, 188, -188]
e=73920k2 = [0, -1, 0, -9801, 9801] x2s = [4, 396, -396]
e=73920bm2 = [0, -1, 0, -3025, 3025] x2s = [4, 220, -220]
e=73920ci2 = [0, 1, 0, -9801, -9801] x2s = [-4, 396, -396]
e=73920ee2 = [0, -1, 0, -441, 441] x2s = [4, 84, -84]
e=73920gz2 = [0, 1, 0, -441, -441] x2s = [-4, 84, -84]
e=73920hp2 = [0, 1, 0, -3025, -3025] x2s = [-4, 220, -220]
e=78400gt2 = [0, 0, 0, -4900, 0] x2s = [0, 280, -280]
8
e=81672g2 = [0, -1, 0, -6724, 6724] x2s = [4, 328, -328]
e=83232n1 = [0, 0, 0, -2601, 0] x2s = [0, 204, -204]
e=84909i2 = [1, 1, 0, -484, -605] x2s = [-5, 88, -88]
e=85008q2 = [0, 1, 0, -484, -484] x2s = [-4, 88, -88]
e=85085d2 = [1, -1, 0, -484, 363] x2s = [3, 88, -88]
e=85173g2 = [1, 0, 0, -484, -121] x2s = [-1, 88, -88]
e=86457b2 = [1, 1, 0, -2116, -2645] x2s = [-5, 184, -184]
e=87616z2 = [0, 0, 0, -5476, 0] x2s = [0, 296, -296]
e=87822f2 = [1, -1, 0, -46656, 34992] x2s = [3, 864, -864]
e=89888a1 = [0, 0, 0, -2809, 0] x2s = [0, 212, -212]
9
e=96800bm1 = [0, 0, 0, -3025, 0] x2s = [0, 220, -220]
e=97344fa2 = [0, 0, 0, -6084, 0] x2s = [0, 312, -312]
e=98175i2 = [1, 1, 0, -22500, -28125] x2s = [-5, 600, -600]
e=98298k2 = [1, -1, 0, -9216, 6912] x2s = [3, 384, -384]
10
e=102315b2 = [1, 0, 0, -8100, -2025] x2s = [-1, 360, -360]
e=102480f2 = [0, -1, 0, -59536, 59536] x2s = [4, 976, -976]
e=103845j2 = [1, 0, 0, -7396, -1849] x2s = [-1, 344, -344]
e=103968bz1 = [0, 0, 0, -3249, 0] x2s = [0, 228, -228]
e=104805d2 = [1, -1, 0, -10404, 7803] x2s = [3, 408, -408]
e=106680p2 = [0, -1, 0, -15876, 15876] x2s = [4, 504, -504]
e=107584h2 = [0, 0, 0, -6724, 0] x2s = [0, 328, -328]
e=107880j2 = [0, -1, 0, -900, 900] x2s = [4, 120, -120]
e=109725k2 = [1, 1, 0, -4900, -6125] x2s = [-5, 280, -280]
11
e=111392b1 = [0, 0, 0, -3481, 0] x2s = [0, 236, -236]
e=113520b2 = [0, -1, 0, -1936, 1936] x2s = [4, 176, -176]
e=114240bz2 = [0, -1, 0, -1225, 1225] x2s = [4, 140, -140]
e=114240fa2 = [0, 1, 0, -1225, -1225] x2s = [-4, 140, -140]
e=118336bd2 = [0, 0, 0, -7396, 0] x2s = [0, 344, -344]
e=119072c1 = [0, 0, 0, -3721, 0] x2s = [0, 244, -244]
12
e=124266b2 = [1, 1, 0, -1296, -1620] x2s = [-5, 144, -144]
e=124410bs2 = [1, 0, 0, -1296, -324] x2s = [-1, 144, -144]
e=127248i2 = [0, 1, 0, -58564, -58564] x2s = [-4, 968, -968]
e=127920bl2 = [0, -1, 0, -1600, 1600] x2s = [4, 160, -160]
e=128832a2 = [0, -1, 0, -59049, 59049] x2s = [4, 972, -972]
e=128832t2 = [0, 1, 0, -59049, -59049] x2s = [-4, 972, -972]
e=129720o2 = [0, -1, 0, -2116, 2116] x2s = [4, 184, -184]

Attachment: isogenies.pdf
Description: Adobe PDF document