forked from ciaran-schembri/Shimura
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCM1equation.m
574 lines (489 loc) · 41.2 KB
/
CM1equation.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
_<x> := PolynomialRing(Rationals());
intrinsic CMList() -> Any
{}
//L26 := < 1,-1,3,-3,QuadraticField(5).1,-QuadraticField(5).1,QuadraticField(-3).1,QuadraticField(-3).1,0,9/5,-9/5>;
L26 := < Rationals()!1,Rationals()!-1,Rationals()!3,Rationals()!-3,NumberField(x^2-5).1,-NumberField(x^2-5).1,QuadraticField(-3).1,QuadraticField(-3).1,0,9/5,-9/5>;
L38 := < 1,-1,0,QuadraticField(-1).1,-QuadraticField(-1).1,QuadraticField(-3).1,-QuadraticField(-3).1,3,-3,2/9,-2/9,
QuadraticField(-19).1/3,-QuadraticField(-19).1/3,QuadraticField(29).1/9,-QuadraticField(29).1/9,
3*QuadraticField(-1).1/7,-3*QuadraticField(-1).1/7,
3*QuadraticField(-19).1/4,-3*QuadraticField(-19).1/4>;
L39 := <0,(1+QuadraticField(5).1)/2,(1-QuadraticField(5).1)/2,1,-1,1-QuadraticField(2).1,1+QuadraticField(2).1,-1/2,2,
(-1+QuadraticField(5).1)/2,(-1-QuadraticField(5).1)/2,-1/3,3,(2+QuadraticField(13).1)/3,(2-QuadraticField(13).1)/3,
(4+QuadraticField(11).1)/5,(4-QuadraticField(11).1)/5,-5/7,7/5,2+QuadraticField(5).1,2-QuadraticField(5).1,
(-8+QuadraticField(89).1)/5,(-8-QuadraticField(89).1)/5,
(1+5*QuadraticField(2).1)/7,(1-5*QuadraticField(2).1)/7,
(-6+5*QuadraticField(13).1)/17,(-6-5*QuadraticField(13).1)/17>;
L51 := <1,-1,0,-1/QuadraticField(-3).1,1/QuadraticField(-3).1,1/3,-1/3,QuadraticField(-3).1,-QuadraticField(-3).1,1/4,-1/4,
QuadraticField(-11).1/3,-QuadraticField(-11).1/3,-5/QuadraticField(-3).1,5/QuadraticField(-3).1,
-1/QuadraticField(-6).1,1/QuadraticField(-6).1>;
L55 :=<
1/2,-2,0,
(1+QuadraticField(5).1)/2,(1-QuadraticField(5).1)/2,1,-1,(-1+QuadraticField(5).1)/2,(-1-QuadraticField(5).1)/2,
-1/3,3,-1+QuadraticField(2).1,-1-QuadraticField(2).1,
-2+QuadraticField(5).1,-2-QuadraticField(5).1,-3/2,2/3,
(1+QuadraticField(17).1)/4,(1-QuadraticField(17).1)/4,
(-2+5*QuadraticField(5).1)/11,(-2-5*QuadraticField(5).1)/11,
(-2+QuadraticField(13).1)/3,(-2-QuadraticField(13).1)/3>;
L58 := < 3*QuadraticField(-3).1,-3*QuadraticField(-3).1,QuadraticField(-11).1,-QuadraticField(-11).1,
QuadraticField(-19).1,-QuadraticField(-19).1,QuadraticField(-3).1,-QuadraticField(-3).1,QuadraticField(5).1,-QuadraticField(5).1,
QuadraticField(-43).1,-QuadraticField(43).1,5*QuadraticField(-1).1,-5*QuadraticField(-1).1,
QuadraticField(-163).1/5,-QuadraticField(-163).1/5,0>;
L62 := <0,1,-1,QuadraticField(-1).1,-QuadraticField(-1).1,1/QuadraticField(-2).1,-1/QuadraticField(-2).1,1/2,-1/2,5,-5,
2*QuadraticField(-1).1/3,-2*QuadraticField(-1).1/3,QuadraticField(-13).1/2,-QuadraticField(-13).1/2>;
L69 := < 1,-1,0,QuadraticField(-3).1,-QuadraticField(-3).1,3/QuadraticField(5).1,-3/QuadraticField(5).1,
QuadraticField(5).1,-QuadraticField(5).1,1/QuadraticField(-3).1,-1/QuadraticField(-3).1,
3/QuadraticField(-7).1,-3/QuadraticField(-7).1,5/3,-5/3,3*QuadraticField(-3).1,-3*QuadraticField(-3).1>;
L74 := < 1,-1,QuadraticField(5).1,-QuadraticField(5).1,QuadraticField(-3).1,-QuadraticField(-3).1,
2+QuadraticField(5).1,-2+QuadraticField(5).1,2-QuadraticField(5).1,-2-QuadraticField(5).1,3,-3,
2+QuadraticField(-3).1,-2+QuadraticField(-3).1,2-QuadraticField(-3).1,-2-QuadraticField(-3).1,
QuadraticField(13).1,-QuadraticField(13).1,QuadraticField(-11).1,QuadraticField(-11).1,
2+QuadraticField(13).1,-2+QuadraticField(13).1,2-QuadraticField(13).1,-2-QuadraticField(13).1,0,7,-7>;
L86 := <1,-1,QuadraticField(-3).1,-QuadraticField(-3).1,
2+QuadraticField(5).1,-2+QuadraticField(5).1,2-QuadraticField(5).1,-2-QuadraticField(5).1,
QuadraticField(5).1,-QuadraticField(5).1,0,QuadraticField(-1).1,-QuadraticField(-1).1,
Roots(x^4-10*x^2-7,SplittingField(x^4-10*x^2-7))[1,1],Roots(x^4-10*x^2-7,SplittingField(x^4-10*x^2-7))[2,1],
Roots(x^4-10*x^2-7,SplittingField(x^4-10*x^2-7))[3,1],Roots(x^4-10*x^2-7,SplittingField(x^4-10*x^2-7))[4,1],
3,-3,
Roots(x^4-8*x^2-1,SplittingField(x^4-8*x^2-1))[1,1],Roots(x^4-8*x^2-1,SplittingField(x^4-8*x^2-1))[2,1],
Roots(x^4-8*x^2-1,SplittingField(x^4-8*x^2-1))[3,1],Roots(x^4-8*x^2-1,SplittingField(x^4-8*x^2-1))[4,1],
Roots(x^4-14*x^2+961,SplittingField((x^2-19)*(x^2+3)))[1,1],Roots(x^4-14*x^2+961,SplittingField((x^2-19)*(x^2+3)))[2,1],
Roots(x^4-14*x^2+961,SplittingField((x^2-19)*(x^2+3)))[3,1],Roots(x^4-14*x^2+961,SplittingField((x^2-19)*(x^2+3)))[4,1],
QuadraticField(29).1,-QuadraticField(29).1>;
L87 := <0, QuadraticField(-3).1,-QuadraticField(-3).1,1,-1,3,-3,QuadraticField(-1).1,-QuadraticField(-1).1,
QuadraticField(-3).1/3,-QuadraticField(-3).1/3,
3/QuadraticField(-7).1,-3/QuadraticField(-7).1,
QuadraticField(-15).1/3,-QuadraticField(-15).1/3>;
L94 := <2,-2,0,QuadraticField(2).1,-QuadraticField(2).1,1,-1,
(1+QuadraticField(17).1)/2,(1-QuadraticField(17).1)/2,(-1+QuadraticField(17).1)/2,(-1-QuadraticField(17).1)/2,
Roots(x^4 - 5*x^2 + 8,SplittingField(x^4 - 5*x^2 + 8))[1,1],Roots(x^4 - 5*x^2 + 8,SplittingField(x^4 - 5*x^2 + 8))[2,1],
Roots(x^4 - 5*x^2 + 8,SplittingField(x^4 - 5*x^2 + 8))[3,1],Roots(x^4 - 5*x^2 + 8,SplittingField(x^4 - 5*x^2 + 8))[4,1],
Roots(x^4 - 3*x^2 + 4,SplittingField((x^2+1)*(x^2-7)))[1,1],Roots(x^4 - 3*x^2 + 4,SplittingField((x^2+1)*(x^2-7)))[2,1],
Roots(x^4 - 3*x^2 + 4,SplittingField((x^2+1)*(x^2-7)))[3,1],Roots(x^4 - 3*x^2 + 4,SplittingField((x^2+1)*(x^2-7)))[4,1],
1+QuadraticField(5).1,-1+QuadraticField(5).1,1-QuadraticField(5).1,-1-QuadraticField(5).1,
2*QuadraticField(-1).1,-2*QuadraticField(-1).1,
Roots(x^4 - 6*x^2 + 16,SplittingField(x^4 - 6*x^2 + 16))[1,1],Roots(x^4 - 6*x^2 + 16,SplittingField(x^4 - 6*x^2 + 16))[2,1],
Roots(x^4 - 6*x^2 + 16,SplittingField(x^4 - 6*x^2 + 16))[3,1],Roots(x^4 - 6*x^2 + 16,SplittingField(x^4 - 6*x^2 + 16))[4,1],
4/QuadraticField(5).1,-4/QuadraticField(5).1>;
L95 := <0,QuadraticField(-1).1,-QuadraticField(-1).1,-2,1/2,(1+QuadraticField(5).1)/2,(1-QuadraticField(5).1)/2,1,-1,
(-1+QuadraticField(5).1)/2,(-1-QuadraticField(5).1)/2,-1/3,3,-2+QuadraticField(5).1,-2+QuadraticField(5).1,
(1+5*QuadraticField(2).1)/7,(1-5*QuadraticField(2).1)/7>;
L111 := < (-1 + QuadraticField(5).1)/2, (-1 - QuadraticField(5).1)/2, 0,
1 + QuadraticField(2).1, 1- QuadraticField(2).1, 1, -1, (1 + QuadraticField(17).1)/4,
(1-QuadraticField(17).1)/4, (-1 + QuadraticField(-1).1)/2, (-1-QuadraticField(-1).1)/2,
(1-QuadraticField(-1).1), (1+QuadraticField(-1).1), (1+QuadraticField(5).1)/2, (1-QuadraticField(5).1)/2,
QuadraticField(-1).1,-QuadraticField(-1).1,-1/2,2,(5 + QuadraticField(89).1)/8,
(5 - QuadraticField(89).1)/8, -2 + QuadraticField(5).1, -2 - QuadraticField(5).1 >;
L119 := < 1, -1, 0, QuadraticField(-3).1, -QuadraticField(-3).1,
Roots(x^4 - 10*x^2 - 7,SplittingField(x^4 - 10*x^2 - 7))[1,1],Roots(x^4 - 10*x^2 - 7,SplittingField(x^4 - 10*x^2 - 7))[2,1],
Roots(x^4 - 10*x^2 - 7,SplittingField(x^4 - 10*x^2 - 7))[3,1],Roots(x^4 - 10*x^2 - 7,SplittingField(x^4 - 10*x^2 - 7))[4,1],
Roots(3*x^4 +6*x^2 + 7,SplittingField(3*x^4 +6*x^2 + 7))[1,1],Roots(3*x^4 +6*x^2 + 7,SplittingField(3*x^4 +6*x^2 + 7))[2,1],
Roots(3*x^4 +6*x^2 + 7,SplittingField(3*x^4 +6*x^2 + 7))[3,1],Roots(3*x^4 +6*x^2 + 7,SplittingField(3*x^4 +6*x^2 + 7))[4,1],
QuadraticField(-7).1,-QuadraticField(-7).1,
Roots(x^4-2*x^2 + 49,SplittingField(x^4-2*x^2 + 49))[1,1],Roots(x^4-2*x^2 + 49,SplittingField(x^4-2*x^2 + 49))[2,1],
Roots(x^4-2*x^2 + 49,SplittingField(x^4-2*x^2 + 49))[3,1],Roots(x^4-2*x^2 + 49,SplittingField(x^4-2*x^2 + 49))[4,1],
QuadraticField(-1).1,-QuadraticField(-1).1,3, -3,
(1 + 2*QuadraticField(-2).1)/3, (-1 + 2*QuadraticField(-2).1)/3,
(1 - 2*QuadraticField(-2).1)/3, (-1 - 2*QuadraticField(-2).1)/3, QuadraticField(5).1, -QuadraticField(5).1>;
L134 := < 1, 0, (1+QuadraticField(-3).1)/2, (1-QuadraticField(-3).1)/2,
(1+QuadraticField(5).1)/2, (-1+QuadraticField(5).1)/2,
(1-QuadraticField(5).1)/2, (-1-QuadraticField(5).1)/2,
(3+QuadraticField(5).1)/2, (3-QuadraticField(5).1)/2, -1,
(5+QuadraticField(-11).1)/6, (5-QuadraticField(-11).1)/6,
(-1+QuadraticField(13).1)/2, (-1-QuadraticField(13).1)/2,
(1+QuadraticField(13).1)/6, (1-QuadraticField(13).1)/6,
QuadraticField(-1).1,-QuadraticField(-1).1,
1/2,2 >;
L146 := < 0, (1+QuadraticField(5).1)/2,(1-QuadraticField(5).1)/2,
(-1+QuadraticField(5).1)/2,(-1-QuadraticField(5).1)/2,
1, -1,
(1+QuadraticField(-3).1)/2, (-1+QuadraticField(-3).1)/2,
(1-QuadraticField(-3).1)/2,(-1-QuadraticField(-3).1)/2,
(3+QuadraticField(13).1)/2, (3-QuadraticField(13).1)/2,
1 + QuadraticField(2).1, 1- QuadraticField(2).1,
Roots(x^4 - x^2 + 1,SplittingField((x^2+1)*(x^2-3)))[1,1],Roots(x^4 - x^2 + 1,SplittingField((x^2+1)*(x^2-3)))[2,1],
Roots(x^4 - x^2 + 1,SplittingField((x^2+1)*(x^2-3)))[3,1],Roots(x^4 - x^2 + 1,SplittingField((x^2+1)*(x^2-3)))[4,1],
(5+QuadraticField(29).1)/2,(5-QuadraticField(29).1)/2,
QuadraticField(-1).1,-QuadraticField(-1).1>;
L159 := < 0, 1, -1, Roots(3*x^4 + 14*x^2 - 1,SplittingField(3*x^4 + 14*x^2 - 1))[1,1],Roots(3*x^4 + 14*x^2 - 1,SplittingField(3*x^4 + 14*x^2 - 1))[2,1],
Roots(3*x^4 + 14*x^2 - 1,SplittingField(3*x^4 + 14*x^2 - 1))[3,1],Roots(3*x^4 + 14*x^2 - 1,SplittingField(3*x^4 + 14*x^2 - 1))[4,1],
QuadraticField(-1).1,-QuadraticField(-1).1,
1/QuadraticField(-3).1,-1/QuadraticField(-3).1,
1/3,-1/3,1/QuadraticField(5).1,-1/QuadraticField(5).1,
Roots(9*x^4 + 22*x^2 + 1,SplittingField((x^2+1)*(x^2+7)))[1,1],Roots(9*x^4 + 22*x^2 + 1,SplittingField((x^2+1)*(x^2+7)))[2,1],
Roots(9*x^4 + 22*x^2 + 1,SplittingField((x^2+1)*(x^2+7)))[3,1],Roots(9*x^4 + 22*x^2 + 1,SplittingField((x^2+1)*(x^2+7)))[4,1],
Roots(9*x^4 - 26*x^2 + 1,SplittingField((x^2-2)*(x^2-5)))[1,1],Roots(9*x^4 - 26*x^2 + 1,SplittingField((x^2-2)*(x^2-5)))[2,1],
Roots(9*x^4 - 26*x^2 + 1,SplittingField((x^2-2)*(x^2-5)))[3,1],Roots(9*x^4 - 26*x^2 + 1,SplittingField((x^2-2)*(x^2-5)))[4,1],
Roots(27*x^4-10*x^2 - 1,SplittingField(27*x^4-10*x^2 - 1))[1,1],Roots(27*x^4-10*x^2 - 1,SplittingField(27*x^4-10*x^2 - 1))[2,1],
Roots(27*x^4-10*x^2 - 1,SplittingField(27*x^4-10*x^2 - 1))[3,1],Roots(27*x^4-10*x^2 - 1,SplittingField(27*x^4-10*x^2 - 1))[4,1],
Roots(81*x^4+14*x^2+1,SplittingField(81*x^4+14*x^2+1))[1,1],Roots(81*x^4+14*x^2+1,SplittingField(81*x^4+14*x^2+1))[2,1],
Roots(81*x^4+14*x^2+1,SplittingField(81*x^4+14*x^2+1))[3,1],Roots(81*x^4+14*x^2+1,SplittingField(81*x^4+14*x^2+1))[4,1],
QuadraticField(-3).1,-QuadraticField(-3).1,
QuadraticField(5).1,QuadraticField(5).1>;
L194 := <0, (1+QuadraticField(5).1)/2,(1-QuadraticField(5).1)/2,(-1+QuadraticField(5).1)/2,(-1-QuadraticField(5).1)/2,
(1+QuadraticField(-3).1)/2,(1-QuadraticField(-3).1)/2,(-1+QuadraticField(-3).1)/2,(-1-QuadraticField(-3).1)/2,
(-3+QuadraticField(13).1)/2,(-3-QuadraticField(13).1)/2,1,-1,
(-3+QuadraticField(-3).1)/2,(-3-QuadraticField(-3).1)/2,(3+QuadraticField(-3).1)/6,(3-QuadraticField(-3).1)/6,
(-1+QuadraticField(37).1)/6,(-1-QuadraticField(37).1)/6,
(5+QuadraticField(29).1)/2,(5-QuadraticField(29).1)/2,
(3+QuadraticField(5).1)/2,(3-QuadraticField(5).1)/2,(-3+QuadraticField(5).1)/2,(-3-QuadraticField(5).1)/2,
QuadraticField(-1).1,-QuadraticField(-1).1>;
L206 := <0,1,-1,QuadraticField(-1).1,-QuadraticField(-1).1,
Roots(x^4+x^2+2,SplittingField(x^4+x^2+2))[1,1],Roots(x^4+x^2+2,SplittingField(x^4+x^2+2))[2,1],
Roots(x^4+x^2+2,SplittingField(x^4+x^2+2))[3,1],Roots(x^4+x^2+2,SplittingField(x^4+x^2+2))[4,1],
Roots(x^4+3*x^2+4,SplittingField(x^4+3*x^2+4))[1,1],Roots(x^4+3*x^2+4,SplittingField(x^4+3*x^2+4))[2,1],
Roots(x^4+3*x^2+4,SplittingField(x^4+3*x^2+4))[3,1],Roots(x^4+3*x^2+4,SplittingField(x^4+3*x^2+4))[4,1],
Roots(x^4-x^2+4,SplittingField(x^4-x^2+4))[1,1],Roots(x^4-x^2+4,SplittingField(x^4-x^2+4))[2,1],
Roots(x^4-x^2+4,SplittingField(x^4-x^2+4))[3,1],Roots(x^4-x^2+4,SplittingField(x^4-x^2+4))[4,1],
Roots(x^4-7*x^2+4,SplittingField((x^2-3)*(x^2-11)))[1,1],Roots(x^4-7*x^2+4,SplittingField((x^2-3)*(x^2-11)))[2,1],
Roots(x^4-7*x^2+4,SplittingField((x^2-3)*(x^2-11)))[3,1],Roots(x^4-7*x^2+4,SplittingField((x^2-3)*(x^2-11)))[4,1],
2,-2,
Roots(x^4+3*x^2+8,SplittingField(x^4+3*x^2+8))[1,1],Roots(x^4+3*x^2+8,SplittingField(x^4+3*x^2+8))[2,1],
Roots(x^4+3*x^2+8,SplittingField(x^4+3*x^2+8))[3,1],Roots(x^4+3*x^2+8,SplittingField(x^4+3*x^2+8))[4,1],
QuadraticField(-2).1,-QuadraticField(-2).1,
2+QuadraticField(5).1,2-QuadraticField(5).1,-2+QuadraticField(5).1,-2-QuadraticField(5).1,
Roots(x^4+x^2+1,SplittingField(x^4+x^2+1))[1,1],Roots(x^4+x^2+1,SplittingField(x^4+x^2+1))[2,1],
Roots(x^4+x^2+1,SplittingField(x^4+x^2+1))[3,1],Roots(x^4+x^2+1,SplittingField(x^4+x^2+1))[4,1],
Roots(x^4+3*x^2-8,SplittingField(x^4+3*x^2-8))[1,1],Roots(x^4+3*x^2-8,SplittingField(x^4+3*x^2-8))[2,1],
Roots(x^4+3*x^2-8,SplittingField(x^4+3*x^2-8))[3,1],Roots(x^4+3*x^2-8,SplittingField(x^4+3*x^2-8))[4,1],
Roots(x^4+14*x^2+1,SplittingField((x^2+1)*(x^2+3)))[1,1],Roots(x^4+14*x^2+1,SplittingField((x^2+1)*(x^2+3)))[2,1],
Roots(x^4+14*x^2+1,SplittingField((x^2+1)*(x^2+3)))[3,1],Roots(x^4+14*x^2+1,SplittingField((x^2+1)*(x^2+3)))[4,1]>;
//w66 is the hyperelliptic involution, for X<6,11>/<w66>, x is unchanged, use table for X<6,11>/<w66>
L6x11 := <-1,0,1,-1+QuadraticField(2).1,-1-QuadraticField(2).1,
-2+QuadraticField(5).1,-2-QuadraticField(5).1,(-1+QuadraticField(5).1)/2,(-1-QuadraticField(5).1)/2,
-3,-2,1/3,1/2,
(-3+QuadraticField(17).1)/4,(-3-QuadraticField(17).1)/4,(-3+QuadraticField(17).1)/2,(-3+QuadraticField(17).1)/2,
(-3+QuadraticField(13).1)/2,(-3-QuadraticField(13).1)/2,(-2+QuadraticField(13).1)/3,(-2-QuadraticField(13).1)/3,
Roots(x^4 + 3*x^3 + 2*x^2 - 3*x + 1,SplittingField((x^2-21)*(x^2+7)))[1,1],Roots(x^4 + 3*x^3 + 2*x^2 - 3*x + 1,SplittingField((x^2-21)*(x^2+7)))[2,1],
Roots(x^4 + 3*x^3 + 2*x^2 - 3*x + 1,SplittingField((x^2-21)*(x^2+7)))[3,1],Roots(x^4 + 3*x^3 + 2*x^2 - 3*x + 1,SplittingField((x^2-21)*(x^2+7)))[4,1],
1+QuadraticField(2).1,1-QuadraticField(2).1,
Roots(x^4 + x^3 + 2*x^2 - x + 1,SplittingField((x^2-5)*(x^2+15)))[1,1],Roots(x^4 + x^3 + 2*x^2 - x + 1,SplittingField((x^2-5)*(x^2+15)))[2,1],
Roots(x^4 + x^3 + 2*x^2 - x + 1,SplittingField((x^2-5)*(x^2+15)))[3,1],Roots(x^4 + x^3 + 2*x^2 - x + 1,SplittingField((x^2-5)*(x^2+15)))[4,1],
(-5+QuadraticField(41).1)/2,(-5-QuadraticField(41).1)/2,(-5+QuadraticField(41).1)/8,(-5-QuadraticField(41).1)/8,
QuadraticField(-1).1,-QuadraticField(-1).1>;
L6x19 := < 1,-1,0,(1+QuadraticField(5).1)/2,(-1+QuadraticField(5).1)/2,(1-QuadraticField(5).1)/2,(-1-QuadraticField(5).1)/2,
(1+QuadraticField(-3).1)/2,(1-QuadraticField(-3).1)/2,(-1+QuadraticField(-3).1)/2,(-1-QuadraticField(-3).1)/2,
(3+QuadraticField(13).1)/2,(3-QuadraticField(13).1)/2,(-3+QuadraticField(13).1)/2,(-3-QuadraticField(13).1)/2,
2,-2,1/2,-1/2,
Roots(x^4-5*x^2+1,SplittingField((x^2-3)*(x^2-7)))[1,1],Roots(x^4-5*x^2+1,SplittingField((x^2-3)*(x^2-7)))[2,1],
Roots(x^4-5*x^2+1,SplittingField((x^2-3)*(x^2-7)))[3,1],Roots(x^4-5*x^2+1,SplittingField((x^2-3)*(x^2-7)))[4,1],
1+QuadraticField(2).1,1-QuadraticField(2).1,-1+QuadraticField(2).1,-1-QuadraticField(2).1,
Roots(x^4-x^2+1,SplittingField((x^2+1)*(x^2-3)))[1,1],Roots(x^4-x^2+1,SplittingField((x^2+1)*(x^2-3)))[2,1],
Roots(x^4-x^2+1,SplittingField((x^2+1)*(x^2-3)))[3,1],Roots(x^4-x^2+1,SplittingField((x^2+1)*(x^2-3)))[4,1],
(1+QuadraticField(37).1)/6,(1-QuadraticField(37).1)/6,(-1+QuadraticField(37).1)/6,(-1-QuadraticField(37).1)/6,
QuadraticField(-1).1,QuadraticField(-1).1>;
L6x29 := < 0, QuadraticField(2).1,-QuadraticField(2).1,
(3+QuadraticField(17).1)/2,(3-QuadraticField(17).1)/2,(-3+QuadraticField(17).1)/2,(3-QuadraticField(17).1)/2,
QuadraticField(-1).1,-QuadraticField(-1).1,2*QuadraticField(-1).1,-2*QuadraticField(-1).1,
1,-1,2,-2,
QuadraticField(2).1/2,-QuadraticField(2).1/2,2*QuadraticField(2).1,-2*QuadraticField(2).1,
Roots(x^4-x^2+4,SplittingField(x^4-x^2+4))[1,1],Roots(x^4-x^2+4,SplittingField(x^4-x^2+4))[2,1],
Roots(x^4-x^2+4,SplittingField(x^4-x^2+4))[3,1],Roots(x^4-x^2+4,SplittingField(x^4-x^2+4))[4,1],
(3+QuadraticField(41).1)/4,(3-QuadraticField(41).1)/4,(-3+QuadraticField(41).1)/4,(-3-QuadraticField(41).1)/4,
Roots(x^4-7*x^2+4,SplittingField((x^2-3)*(x^2-11)))[1,1],Roots(x^4-7*x^2+4,SplittingField((x^2-3)*(x^2-11)))[2,1],
Roots(x^4-7*x^2+4,SplittingField((x^2-3)*(x^2-11)))[3,1],Roots(x^4-7*x^2+4,SplittingField((x^2-3)*(x^2-11)))[4,1],
Roots(2*x^4+x^2+8,SplittingField((x^2+2)*(x^2-14)))[1,1],Roots(2*x^4+x^2+8,SplittingField((x^2+2)*(x^2-14)))[2,1],
Roots(2*x^4+x^2+8,SplittingField((x^2+2)*(x^2-14)))[3,1],Roots(2*x^4+x^2+8,SplittingField((x^2+2)*(x^2-14)))[4,1],
Roots(x^4+23*x^2+4,SplittingField((x^2+3)*(x^2+19)))[1,1],Roots(x^4+23*x^2+4,SplittingField((x^2+3)*(x^2+19)))[2,1],
Roots(x^4+23*x^2+4,SplittingField((x^2+3)*(x^2+19)))[3,1],Roots(x^4+23*x^2+4,SplittingField((x^2+3)*(x^2+19)))[4,1],
QuadraticField(-2).1,-QuadraticField(-2).1,
(9+QuadraticField(89).1)/2,(9-QuadraticField(89).1)/2,(-9+QuadraticField(89).1)/2,(-9-QuadraticField(89).1)/2>;
L6x31 := < 0, QuadraticField(-3).1,-QuadraticField(-3).1,3,-3,1,-1,
4+QuadraticField(13).1,4-QuadraticField(13).1,-4+QuadraticField(13).1,-4-QuadraticField(13).1,
Roots(3*x^4-46*x^2+27,SplittingField((x^2-3)*(x^2-21)))[1,1],Roots(3*x^4-46*x^2+27,SplittingField((x^2-3)*(x^2-21)))[2,1],
Roots(3*x^4-46*x^2+27,SplittingField((x^2-3)*(x^2-21)))[3,1],Roots(3*x^4-46*x^2+27,SplittingField((x^2-3)*(x^2-21)))[4,1],
(4+QuadraticField(-11).1)/3, (4-QuadraticField(-11).1)/3,(-4+QuadraticField(-11).1)/3,(-4-QuadraticField(-11).1)/3,
Roots(x^4-26*x^2+9,SplittingField((x^2-2)*(x^2-5)))[1,1],Roots(x^4-26*x^2+9,SplittingField((x^2-2)*(x^2-5)))[2,1],
Roots(x^4-26*x^2+9,SplittingField((x^2-2)*(x^2-5)))[3,1],Roots(x^4-26*x^2+9,SplittingField((x^2-2)*(x^2-5)))[4,1],
3*QuadraticField(-3).1,-3*QuadraticField(-3).1,QuadraticField(-3).1/3,-QuadraticField(-3).1/3,
(8+QuadraticField(-37).1)/3,(8-QuadraticField(-37).1)/3,(-8+QuadraticField(-37).1)/3,(-8-QuadraticField(-37).1)/3,
Roots(3*x^4-14*x^2+27,SplittingField((x^2-6)*(x^2+3)))[1,1],Roots(3*x^4-14*x^2+27,SplittingField((x^2-6)*(x^2+3)))[2,1],
Roots(3*x^4-14*x^2+27,SplittingField((x^2-6)*(x^2+3)))[3,1],Roots(3*x^4-14*x^2+27,SplittingField((x^2-6)*(x^2+3)))[4,1],
Roots(x^4+70*x^2+9,SplittingField((x^2+1)*(x^2+19)))[1,1],Roots(x^4+70*x^2+9,SplittingField((x^2+1)*(x^2+19)))[2,1],
Roots(x^4+70*x^2+9,SplittingField((x^2+1)*(x^2+19)))[3,1],Roots(x^4+70*x^2+9,SplittingField((x^2+1)*(x^2+19)))[4,1],
1+QuadraticField(-2).1,1-QuadraticField(-2).1,-1+QuadraticField(-2).1,-1-QuadraticField(-2).1,
QuadraticField(3).1,-QuadraticField(3).1,
(5+2*QuadraticField(13).1)/3,(5-2*QuadraticField(13).1)/3,(-5+2*QuadraticField(13).1)/3,(-5-2*QuadraticField(13).1)/3>;
//w222 is the hyperelliptic involution, for X<6,37>/<w222>, x is unchanged, we use the table for X<6,37>/<w222>
L6x37 := < 1,-1,0, QuadraticField(-2).1/2, -QuadraticField(-2).1/2,QuadraticField(-2).1,-QuadraticField(-2).1,
1/2,-1/2,2,-2,
Roots(x^4 + 1/4*x^2 + 1,SplittingField((x^2+1)*(x^2-7)))[1,1],Roots(x^4 + 1/4*x^2 + 1,SplittingField((x^2+1)*(x^2-7)))[2,1],
Roots(x^4 + 1/4*x^2 + 1,SplittingField((x^2+1)*(x^2-7)))[3,1],Roots(x^4 + 1/4*x^2 + 1,SplittingField((x^2+1)*(x^2-7)))[4,1],
Roots(x^4 + 11/8*x^2 + 1,SplittingField((x^2-10)*(x^2+6)))[1,1],Roots(x^4 + 11/8*x^2 + 1,SplittingField((x^2-10)*(x^2+6)))[2,1],
Roots(x^4 + 11/8*x^2 + 1,SplittingField((x^2-10)*(x^2+6)))[3,1],Roots(x^4 + 11/8*x^2 + 1,SplittingField((x^2-10)*(x^2+6)))[4,1],
(1+QuadraticField(-3).1)/2,(1-QuadraticField(-3).1)/2,(-1+QuadraticField(-3).1)/2,(-1-QuadraticField(-3).1)/2,
Roots(x^4 + 19/4*x^2 + 1,SplittingField((x^2+3)*(x^2+11)))[1,1],Roots(x^4 + 19/4*x^2 + 1,SplittingField((x^2+3)*(x^2+11)))[2,1],
Roots(x^4 + 19/4*x^2 + 1,SplittingField((x^2+3)*(x^2+11)))[3,1],Roots(x^4 + 19/4*x^2 + 1,SplittingField((x^2+3)*(x^2+11)))[4,1],
QuadraticField(-1).1,-QuadraticField(-1).1,
QuadraticField(-2).1/4,-QuadraticField(-2).1/4,2*QuadraticField(-2).1,-2*QuadraticField(-2).1,
Roots(x^4 - 5/4*x^2 + 1,SplittingField((x^2-13)*(x^2+3)))[1,1],Roots(x^4 - 5/4*x^2 + 1,SplittingField((x^2-13)*(x^2+3)))[2,1],
Roots(x^4 - 5/4*x^2 + 1,SplittingField((x^2-13)*(x^2+3)))[3,1],Roots(x^4 - 5/4*x^2 + 1,SplittingField((x^2-13)*(x^2+3)))[4,1],
Roots(x^4 - 13/2*x^2 + 1,SplittingField((x^2-2)*(x^2-34)))[1,1],Roots(x^4 - 13/2*x^2 + 1,SplittingField((x^2-2)*(x^2-34)))[2,1],
Roots(x^4 - 13/2*x^2 + 1,SplittingField((x^2-2)*(x^2-34)))[3,1],Roots(x^4 - 13/2*x^2 + 1,SplittingField((x^2-2)*(x^2-34)))[4,1],
Roots(x^4 - 5/16*x^2 + 1,SplittingField((x^2-37)*(x^2+3)))[1,1],Roots(x^4 - 5/16*x^2 + 1,SplittingField((x^2-37)*(x^2+3)))[2,1],
Roots(x^4 - 5/16*x^2 + 1,SplittingField((x^2-37)*(x^2+3)))[3,1],Roots(x^4 - 5/16*x^2 + 1,SplittingField((x^2-37)*(x^2+3)))[4,1]>;
//w110 is the hyperelliptic involution, we use the table for X<10,11>/<w110>
L10x11 := <0,(1+QuadraticField(-7).1)/2,(1-QuadraticField(-7).1)/2,(-1+QuadraticField(-7).1)/2,(-1-QuadraticField(-7).1)/2,
QuadraticField(-2).1,-QuadraticField(-2).1,
2,-2,1,-1,
2*QuadraticField(-1).1,-2*QuadraticField(-1).1,QuadraticField(-1).1,-QuadraticField(-1).1,
QuadraticField(2).1,-QuadraticField(2).1,
Roots(x^4 - x^2 + 4,SplittingField((x^2-5)*(x^2+3)))[1,1],Roots(x^4 - x^2 + 4,SplittingField((x^2-5)*(x^2+3)))[2,1],
Roots(x^4 - x^2 + 4,SplittingField((x^2-5)*(x^2+3)))[3,1],Roots(x^4 - x^2 + 4,SplittingField((x^2-5)*(x^2+3)))[4,1],
Roots(x^4 + 7*x^2 + 4,SplittingField((x^2+3)*(x^2+11)))[1,1],Roots(x^4 + 7*x^2 + 4,SplittingField((x^2+3)*(x^2+11)))[2,1],
Roots(x^4 + 7*x^2 + 4,SplittingField((x^2+3)*(x^2+11)))[3,1],Roots(x^4 + 7*x^2 + 4,SplittingField((x^2+3)*(x^2+11)))[4,1],
(3+QuadraticField(17).1)/2,(3-QuadraticField(17).1)/2,(-3+QuadraticField(17).1)/2,(-3-QuadraticField(17).1)/2,
Roots(x^4 + 13*x^2 + 4,SplittingField((x^2+1)*(x^2+17)))[1,1],Roots(x^4 + 13*x^2 + 4,SplittingField((x^2+1)*(x^2+17)))[2,1],
Roots(x^4 + 13*x^2 + 4,SplittingField((x^2+1)*(x^2+17)))[3,1],Roots(x^4 + 13*x^2 + 4,SplittingField((x^2+1)*(x^2+17)))[4,1],
Roots(x^4 + 17/4*x^2 + 4,SplittingField((x^2+1)*(x^2+33)))[1,1],Roots(x^4 + 17/4*x^2 + 4,SplittingField((x^2+1)*(x^2+33)))[2,1],
Roots(x^4 + 17/4*x^2 + 4,SplittingField((x^2+1)*(x^2+33)))[3,1],Roots(x^4 + 17/4*x^2 + 4,SplittingField((x^2+1)*(x^2+33)))[4,1],
Roots(x^4 + 47/13*x^2 + 4,SplittingField((x^2+143)*(x^2-65)))[1,1],Roots(x^4 + 47/13*x^2 + 4,SplittingField((x^2+143)*(x^2-65)))[2,1],
Roots(x^4 + 47/13*x^2 + 4,SplittingField((x^2+143)*(x^2-65)))[3,1],Roots(x^4 + 47/13*x^2 + 4,SplittingField((x^2+143)*(x^2-65)))[4,1]>;
//for X<10,19>/<w5,w38>, x is unchanged
L10x19 := < 1,-1,0,2*QuadraticField(-1).1,-2*QuadraticField(-1).1,2/3,-2/3,
QuadraticField(2).1,-QuadraticField(2).1,QuadraticField(-1).1,-QuadraticField(-1).1,
2/QuadraticField(-3).1,-2/QuadraticField(-3).1,2/QuadraticField(5).1,-2/QuadraticField(5).1,
QuadraticField(-1).1/2,-QuadraticField(-1).1/2,4*QuadraticField(10).1/5,
-4*QuadraticField(10).1/5>;
//w230 is the hyperelliptic involution, we use the table from X<10,23>/<w230>
L10x23 := < QuadraticField(-1).1,-QuadraticField(-1).1,(-1+QuadraticField(5).1)/2,(-1-QuadraticField(5).1)/2,
-1/2,0,2,-3,-1,1/3,1,
(-1+QuadraticField(-11).1)/6,(-1-QuadraticField(-11).1)/6,(1+QuadraticField(-11).1)/2,(1-QuadraticField(-11).1)/2,
2+QuadraticField(5).1,2-QuadraticField(5).1,
Roots(x^4 - 2*x^3 + 5*x^2 + 2*x + 1,SplittingField(x^4 - 2*x^3 + 5*x^2 + 2*x + 1))[1,1],Roots(x^4 - 2*x^3 + 5*x^2 + 2*x + 1,SplittingField(x^4 - 2*x^3 + 5*x^2 + 2*x + 1))[2,1],
Roots(x^4 - 2*x^3 + 5*x^2 + 2*x + 1,SplittingField(x^4 - 2*x^3 + 5*x^2 + 2*x + 1))[3,1],Roots(x^4 - 2*x^3 + 5*x^2 + 2*x + 1,SplittingField(x^4 - 2*x^3 + 5*x^2 + 2*x + 1))[4,1],
(-1+2*QuadraticField(-1).1)/5,(-1-2*QuadraticField(-1).1)/5,1+2*QuadraticField(-1).1,1-2*QuadraticField(-1).1,
(-11+5*QuadraticField(5).1)/2,(-11-5*QuadraticField(5).1)/2,(1+QuadraticField(5).1)/2,(1-QuadraticField(5).1)/2,
Roots(x^4 + 2/3*x^3 + x^2 - 2/3*x + 1,SplittingField((x^2+2)*(x^2-13)))[1,1],Roots(x^4 + 2/3*x^3 + x^2 - 2/3*x + 1,SplittingField((x^2+2)*(x^2-13)))[2,1],
Roots(x^4 + 2/3*x^3 + x^2 - 2/3*x + 1,SplittingField((x^2+2)*(x^2-13)))[3,1],Roots(x^4 + 2/3*x^3 + x^2 - 2/3*x + 1,SplittingField((x^2+2)*(x^2-13)))[4,1]>;
//w14 is the hyperelliptic involution, we use the table for X<14,5>/<w14>
L14x5 := < QuadraticField(-1).1,-QuadraticField(-1).1,(-1+QuadraticField(-11).1)/2,(-1-QuadraticField(-11).1)/2,
(1+QuadraticField(-11).1)/6,(1-QuadraticField(-11).1)/6,(1+QuadraticField(5).1)/2,(1-QuadraticField(5).1)/2,
Roots(x^4 - 2/5*x^3 + 7/5*x^2 + 2/5*x + 1,SplittingField((x^2-21)*(x^2+1)))[1,1],Roots(x^4 - 2/5*x^3 + 7/5*x^2 + 2/5*x + 1,SplittingField((x^2-21)*(x^2+1)))[2,1],
Roots(x^4 - 2/5*x^3 + 7/5*x^2 + 2/5*x + 1,SplittingField((x^2-21)*(x^2+1)))[3,1],Roots(x^4 - 2/5*x^3 + 7/5*x^2 + 2/5*x + 1,SplittingField((x^2-21)*(x^2+1)))[4,1],
Roots(x^4 + 2/51*x^3 + 1645/2601*x^2 - 32/2601*x + 256/2601,SplittingField((x^2-13)*(x^2+7)))[1,1],Roots(x^4 + 2/51*x^3 + 1645/2601*x^2 - 32/2601*x + 256/2601,SplittingField((x^2-13)*(x^2+7)))[2,1],
Roots(x^4 + 2/51*x^3 + 1645/2601*x^2 - 32/2601*x + 256/2601,SplittingField((x^2-13)*(x^2+7)))[3,1],Roots(x^4 + 2/51*x^3 + 1645/2601*x^2 - 32/2601*x + 256/2601,SplittingField((x^2-13)*(x^2+7)))[4,1],
Roots(x^4 + 2/19*x^3 + 41/19*x^2 - 2/19*x + 1,SplittingField((x^2+3)*(x^2-5)))[1,1],Roots(x^4 + 2/19*x^3 + 41/19*x^2 - 2/19*x + 1,SplittingField((x^2+3)*(x^2-5)))[2,1],
Roots(x^4 + 2/19*x^3 + 41/19*x^2 - 2/19*x + 1,SplittingField((x^2+3)*(x^2-5)))[3,1],Roots(x^4 + 2/19*x^3 + 41/19*x^2 - 2/19*x + 1,SplittingField((x^2+3)*(x^2-5)))[4,1],
(-9+QuadraticField(5).1)/2,(-9-QuadraticField(5).1)/2,(9+QuadraticField(5).1)/3,(9-QuadraticField(5).1)/3,
-2+QuadraticField(5).1,-2-QuadraticField(5).1,
Roots(x^4 + 1/31*x^3 + 6239/3844*x^2 - 101/3844*x + 10201/15376,SplittingField((x^2+1)*(x^2-5)))[1,1],Roots(x^4 + 1/31*x^3 + 6239/3844*x^2 - 101/3844*x + 10201/15376,SplittingField((x^2+1)*(x^2-5)))[2,1],
Roots(x^4 + 1/31*x^3 + 6239/3844*x^2 - 101/3844*x + 10201/15376,SplittingField((x^2+1)*(x^2-5)))[3,1],Roots(x^4 + 1/31*x^3 + 6239/3844*x^2 - 101/3844*x + 10201/15376,SplittingField((x^2+1)*(x^2-5)))[4,1],
Roots(x^4 + 18/11*x^3 + 49/11*x^2 - 18/11*x + 1,SplittingField((x^2+35)*(x^2-5)))[1,1],Roots(x^4 + 18/11*x^3 + 49/11*x^2 - 18/11*x + 1,SplittingField((x^2+35)*(x^2-5)))[2,1],
Roots(x^4 + 18/11*x^3 + 49/11*x^2 - 18/11*x + 1,SplittingField((x^2+35)*(x^2-5)))[3,1],Roots(x^4 + 18/11*x^3 + 49/11*x^2 - 18/11*x + 1,SplittingField((x^2+35)*(x^2-5)))[4,1],
Roots(x^4 - 162/61*x^3 - 121/61*x^2 + 162/61*x + 1,SplittingField((x^2-13)*(x^2-5)))[1,1],Roots(x^4 - 162/61*x^3 - 121/61*x^2 + 162/61*x + 1,SplittingField((x^2-13)*(x^2-5)))[2,1],
Roots(x^4 - 162/61*x^3 - 121/61*x^2 + 162/61*x + 1,SplittingField((x^2-13)*(x^2-5)))[3,1],Roots(x^4 - 162/61*x^3 - 121/61*x^2 + 162/61*x + 1,SplittingField((x^2-13)*(x^2-5)))[4,1],
Roots(x^4 - 18/149*x^3 + 271/149*x^2 + 18/149*x + 1,SplittingField((x^2-5)*(x^2+35)))[1,1],Roots(x^4 - 18/149*x^3 + 271/149*x^2 + 18/149*x + 1,SplittingField((x^2-5)*(x^2+35)))[2,1],
Roots(x^4 - 18/149*x^3 + 271/149*x^2 + 18/149*x + 1,SplittingField((x^2-5)*(x^2+35)))[3,1],Roots(x^4 - 18/149*x^3 + 271/149*x^2 + 18/149*x + 1,SplittingField((x^2-5)*(x^2+35)))[4,1]>;
//w15 is the hyperelliptic involution, we use the table from X<15,2>/<w15>
L15x2 := <(1+QuadraticField(-7).1)/2,(1-QuadraticField(-7).1)/2,0,
Roots(x^4 - x^2 + 4,SplittingField((x^2-5)*(x^2+3)))[1,1],Roots(x^4 - x^2 + 4,SplittingField((x^2-5)*(x^2+3)))[2,1],
Roots(x^4 - x^2 + 4,SplittingField((x^2-5)*(x^2+3)))[3,1],Roots(x^4 - x^2 + 4,SplittingField((x^2-5)*(x^2+3)))[4,1],
1,-1,2,-2,
QuadraticField(-2).1,-QuadraticField(-2).1,
QuadraticField(-1).1,-QuadraticField(-1).1,2*QuadraticField(-1).1,-2*QuadraticField(-1).1,
1+QuadraticField(-1).1,1-QuadraticField(-1).1,-1+QuadraticField(-1).1,-1-QuadraticField(-1).1,
QuadraticField(-3).1,-QuadraticField(-3).1,2/QuadraticField(-3).1,-2/QuadraticField(-3).1,
2+QuadraticField(2).1,-2+QuadraticField(2).1,2-QuadraticField(2).1,-2-QuadraticField(2).1,
QuadraticField(2).1,-QuadraticField(2).1,
Roots(x^4 + 8*x^2 + 4,SplittingField((x^2+1)*(x^2+3)))[1,1],Roots(x^4 + 8*x^2 + 4,SplittingField((x^2+1)*(x^2+3)))[2,1],
Roots(x^4 + 8*x^2 + 4,SplittingField((x^2+1)*(x^2+3)))[3,1],Roots(x^4 + 8*x^2 + 4,SplittingField((x^2+1)*(x^2+3)))[4,1],
(1+7*QuadraticField(-1).1)/5,(1-7*QuadraticField(-1).1)/5,(-1+7*QuadraticField(-1).1)/5,(-1-7*QuadraticField(-1).1)/5,
Roots(x^4 + 4/3*x^2 + 4,SplittingField((x^2-6)*(x^2+3)))[1,1],Roots(x^4 + 4/3*x^2 + 4,SplittingField((x^2-6)*(x^2+3)))[2,1],
Roots(x^4 + 4/3*x^2 + 4,SplittingField((x^2-6)*(x^2+3)))[3,1],Roots(x^4 + 4/3*x^2 + 4,SplittingField((x^2-6)*(x^2+3)))[4,1],
Roots(x^4 + 40/9*x^2 + 4,SplittingField((x^2+1)*(x^2+19)))[1,1],Roots(x^4 + 40/9*x^2 + 4,SplittingField((x^2+1)*(x^2+19)))[2,1],
Roots(x^4 + 40/9*x^2 + 4,SplittingField((x^2+1)*(x^2+19)))[3,1],Roots(x^4 + 40/9*x^2 + 4,SplittingField((x^2+1)*(x^2+19)))[4,1],
(12+7*QuadraticField(-2).1)/11,(12-7*QuadraticField(-2).1)/11,(-12+7*QuadraticField(-2).1)/11,(-12-7*QuadraticField(-2).1)/11,
2*QuadraticField(-3).1,-2*QuadraticField(-3).1,QuadraticField(-3).1/3,-QuadraticField(-3).1/3,
Roots(x^4 - 36*x^2 + 4,SplittingField((x^2-2)*(x^2-10)))[1,1],Roots(x^4 - 36*x^2 + 4,SplittingField((x^2-2)*(x^2-10)))[2,1],
Roots(x^4 - 36*x^2 + 4,SplittingField((x^2-2)*(x^2-10)))[3,1],Roots(x^4 - 36*x^2 + 4,SplittingField((x^2-2)*(x^2-10)))[4,1],
Roots(x^4 + 92/25*x^2 + 4,SplittingField((x^2-2)*(x^2+3)))[1,1],Roots(x^4 + 92/25*x^2 + 4,SplittingField((x^2-2)*(x^2+3)))[2,1],
Roots(x^4 + 92/25*x^2 + 4,SplittingField((x^2-2)*(x^2+3)))[3,1],Roots(x^4 + 92/25*x^2 + 4,SplittingField((x^2-2)*(x^2+3)))[4,1],
Roots(x^4 + 32/17*x^2 + 4,SplittingField((x^2+1)*(x^2-17)))[1,1],Roots(x^4 + 32/17*x^2 + 4,SplittingField((x^2+1)*(x^2-17)))[2,1],
Roots(x^4 + 32/17*x^2 + 4,SplittingField((x^2+1)*(x^2-17)))[3,1],Roots(x^4 + 32/17*x^2 + 4,SplittingField((x^2+1)*(x^2-17)))[4,1],
Roots(x^4 + 160/9*x^2 + 4,SplittingField((x^2+1)*(x^2+31)))[1,1],Roots(x^4 + 160/9*x^2 + 4,SplittingField((x^2+1)*(x^2+31)))[2,1],
Roots(x^4 + 160/9*x^2 + 4,SplittingField((x^2+1)*(x^2+31)))[3,1],Roots(x^4 + 160/9*x^2 + 4,SplittingField((x^2+1)*(x^2+31)))[4,1],
Roots(x^4 - 172/25*x^2 + 4,SplittingField((x^2-2)*(x^2-17)))[1,1],Roots(x^4 - 172/25*x^2 + 4,SplittingField((x^2-2)*(x^2-17)))[2,1],
Roots(x^4 - 172/25*x^2 + 4,SplittingField((x^2-2)*(x^2-17)))[3,1],Roots(x^4 - 172/25*x^2 + 4,SplittingField((x^2-2)*(x^2-17)))[4,1],
Roots(x^4 - 8/3*x^2 + 4,SplittingField((x^2-15)*(x^2+3)))[1,1],Roots(x^4 - 8/3*x^2 + 4,SplittingField((x^2-15)*(x^2+3)))[2,1],
Roots(x^4 - 8/3*x^2 + 4,SplittingField((x^2-15)*(x^2+3)))[3,1],Roots(x^4 - 8/3*x^2 + 4,SplittingField((x^2-15)*(x^2+3)))[4,1],
Roots(x^4 + 516/121*x^2 + 4,SplittingField((x^2+2)*(x^2+10)))[1,1],Roots(x^4 + 516/121*x^2 + 4,SplittingField((x^2+2)*(x^2+10)))[2,1],
Roots(x^4 + 516/121*x^2 + 4,SplittingField((x^2+2)*(x^2+10)))[3,1],Roots(x^4 + 516/121*x^2 + 4,SplittingField((x^2+2)*(x^2+10)))[4,1],
Roots(x^4 + 64/11*x^2 + 4,SplittingField((x^2+55)*(x^2+33)))[1,1],Roots(x^4 + 64/11*x^2 + 4,SplittingField((x^2+55)*(x^2+33)))[2,1],
Roots(x^4 + 64/11*x^2 + 4,SplittingField((x^2+55)*(x^2+33)))[3,1],Roots(x^4 + 64/11*x^2 + 4,SplittingField((x^2+55)*(x^2+33)))[4,1],
Roots(x^4 + 3848/121*x^2 + 4,SplittingField((x^2+1)*(x^2+3)))[1,1],Roots(x^4 + 3848/121*x^2 + 4,SplittingField((x^2+1)*(x^2+3)))[2,1],
Roots(x^4 + 3848/121*x^2 + 4,SplittingField((x^2+1)*(x^2+3)))[3,1],Roots(x^4 + 3848/121*x^2 + 4,SplittingField((x^2+1)*(x^2+3)))[4,1],
Roots(x^4 + 316/529*x^2 + 4,SplittingField((x^2-2)*(x^2+38)))[1,1],Roots(x^4 + 316/529*x^2 + 4,SplittingField((x^2-2)*(x^2+38)))[2,1],
Roots(x^4 + 316/529*x^2 + 4,SplittingField((x^2-2)*(x^2+38)))[3,1],Roots(x^4 + 316/529*x^2 + 4,SplittingField((x^2-2)*(x^2+38)))[4,1],
Roots(x^4 - 52/27*x^2 + 4,SplittingField((x^2-30)*(x^2+42)))[1,1],Roots(x^4 - 52/27*x^2 + 4,SplittingField((x^2-30)*(x^2+42)))[2,1],
Roots(x^4 - 52/27*x^2 + 4,SplittingField((x^2-30)*(x^2+42)))[3,1],Roots(x^4 - 52/27*x^2 + 4,SplittingField((x^2-30)*(x^2+42)))[4,1]>;
//w66 is the hyperelliptic involution, we use the table for X<22,3>/<w66>
L22x3 := < 0, 1, -1, 2+QuadraticField(5).1,2-QuadraticField(5).1,-2+QuadraticField(5).1,-2-QuadraticField(5).1,
QuadraticField(-1).1,-QuadraticField(-1).1,
Roots(x^4 + 110*x^2 + 1,SplittingField((x^2+7)*(x^2+3)))[1,1],Roots(x^4 + 110*x^2 + 1,SplittingField((x^2+7)*(x^2+3)))[2,1],
Roots(x^4 + 110*x^2 + 1,SplittingField((x^2+7)*(x^2+3)))[3,1],Roots(x^4 + 110*x^2 + 1,SplittingField((x^2+7)*(x^2+3)))[4,1],
QuadraticField(-3).1/9,-QuadraticField(-3).1/9,3*QuadraticField(-3).1,-3*QuadraticField(-3).1,
Roots(x^4 + 154/27*x^2 + 1,SplittingField((x^2+39)*(x^2+3)))[1,1],Roots(x^4 + 154/27*x^2 + 1,SplittingField((x^2+39)*(x^2+3)))[2,1],
Roots(x^4 + 154/27*x^2 + 1,SplittingField((x^2+39)*(x^2+3)))[3,1],Roots(x^4 + 154/27*x^2 + 1,SplittingField((x^2+39)*(x^2+3)))[4,1],
Roots(x^4 - 70/27*x^2 + 1,SplittingField((x^2-3)*(x^2-93)))[1,1],Roots(x^4 - 70/27*x^2 + 1,SplittingField((x^2-3)*(x^2-93)))[2,1],
Roots(x^4 - 70/27*x^2 + 1,SplittingField((x^2-3)*(x^2-93)))[3,1],Roots(x^4 - 70/27*x^2 + 1,SplittingField((x^2-3)*(x^2-93)))[4,1],
Roots(x^4 - 140/81*x^2 + 484/729,SplittingField((x^2-17)*(x^2-2)))[1,1],Roots(x^4 - 140/81*x^2 + 484/729,SplittingField((x^2-17)*(x^2-2)))[2,1],
Roots(x^4 - 140/81*x^2 + 484/729,SplittingField((x^2-17)*(x^2-2)))[3,1],Roots(x^4 - 140/81*x^2 + 484/729,SplittingField((x^2-17)*(x^2-2)))[4,1],
Roots(x^4 + 10/27*x^2 + 1,SplittingField((x^2+3)*(x^2-33)))[1,1],Roots(x^4 + 10/27*x^2 + 1,SplittingField((x^2+3)*(x^2-33)))[2,1],
Roots(x^4 + 10/27*x^2 + 1,SplittingField((x^2+3)*(x^2-33)))[3,1],Roots(x^4 + 10/27*x^2 + 1,SplittingField((x^2+3)*(x^2-33)))[4,1],
Roots(x^4 - 178*x^2 + 1,SplittingField((x^2-11)*(x^2-5)))[1,1],Roots(x^4 - 178*x^2 + 1,SplittingField((x^2-11)*(x^2-5)))[2,1],
Roots(x^4 - 178*x^2 + 1,SplittingField((x^2-11)*(x^2-5)))[3,1],Roots(x^4 - 178*x^2 + 1,SplittingField((x^2-11)*(x^2-5)))[4,1],
Roots(x^4 + 2702*x^2 + 1,SplittingField((x^2+1)*(x^2+3)))[1,1],Roots(x^4 + 2702*x^2 + 1,SplittingField((x^2+1)*(x^2+3)))[2,1],
Roots(x^4 + 2702*x^2 + 1,SplittingField((x^2+1)*(x^2+3)))[3,1],Roots(x^4 + 2702*x^2 + 1,SplittingField((x^2+1)*(x^2+3)))[4,1]>;
//w110 is the hyperelliptic involution, we use the table for X<22,5>/<w110>
L22x5 := < 1, -1, 0, QuadraticField(-1).1,-QuadraticField(-1).1,
(1+QuadraticField(5).1)/2,(1-QuadraticField(5).1)/2,(-1+QuadraticField(5).1)/2,(-1-QuadraticField(5).1)/2,
2+QuadraticField(5).1,-2+QuadraticField(5).1,2-QuadraticField(5).1,-2-QuadraticField(5).1,
Roots(x^4 + 18/7*x^2 + 1,SplittingField((x^2+14)*(x^2+7)))[1,1],Roots(x^4 + 18/7*x^2 + 1,SplittingField((x^2+14)*(x^2+7)))[2,1],
Roots(x^4 + 18/7*x^2 + 1,SplittingField((x^2+14)*(x^2+7)))[3,1],Roots(x^4 + 18/7*x^2 + 1,SplittingField((x^2+14)*(x^2+7)))[4,1],
Roots(x^4 + 6/13*x^2 + 1,SplittingField((x^2+26)*(x^2-65)))[1,1],Roots(x^4 + 6/13*x^2 + 1,SplittingField((x^2+26)*(x^2-65)))[2,1],
Roots(x^4 + 6/13*x^2 + 1,SplittingField((x^2+26)*(x^2-65)))[3,1],Roots(x^4 + 6/13*x^2 + 1,SplittingField((x^2+26)*(x^2-65)))[4,1],
Roots(x^4 + 7*x^2 + 1,SplittingField((x^2+1)*(x^2+5)))[1,1],Roots(x^4 + 7*x^2 + 1,SplittingField((x^2+1)*(x^2+5)))[2,1],
Roots(x^4 + 7*x^2 + 1,SplittingField((x^2+1)*(x^2+5)))[3,1],Roots(x^4 + 7*x^2 + 1,SplittingField((x^2+1)*(x^2+5)))[4,1],
Roots(x^4 + 42/11*x^2 + 1,SplittingField((x^2+11)*(x^2+55)))[1,1],Roots(x^4 + 42/11*x^2 + 1,SplittingField((x^2+11)*(x^2+55)))[2,1],
Roots(x^4 + 42/11*x^2 + 1,SplittingField((x^2+11)*(x^2+55)))[3,1],Roots(x^4 + 42/11*x^2 + 1,SplittingField((x^2+11)*(x^2+55)))[4,1],
Roots(x^4 + 43/19*x^2 + 1,SplittingField((x^2+19)*(x^2+95)))[1,1],Roots(x^4 + 43/19*x^2 + 1,SplittingField((x^2+19)*(x^2+95)))[2,1],
Roots(x^4 + 43/19*x^2 + 1,SplittingField((x^2+19)*(x^2+95)))[3,1],Roots(x^4 + 43/19*x^2 + 1,SplittingField((x^2+19)*(x^2+95)))[4,1]>;
//typo w5 should be w13, corrected in the journal version
//the hyperelliptic involution is w39, we use the table for X<39,2>/<w39>
L39x2 := < (-3+QuadraticField(-7).1)/2,(-3-QuadraticField(-7).1)/2,
(-3+QuadraticField(-7).1)/4,(-3-QuadraticField(-7).1)/4,
Roots(x^4 + 3*x^3 + 5*x^2 + 6*x + 4,SplittingField((x^2+3)*(x^2+15)))[1,1],Roots(x^4 + 3*x^3 + 5*x^2 + 6*x + 4,SplittingField((x^2+3)*(x^2+15)))[2,1],
Roots(x^4 + 3*x^3 + 5*x^2 + 6*x + 4,SplittingField((x^2+3)*(x^2+15)))[3,1],Roots(x^4 + 3*x^3 + 5*x^2 + 6*x + 4,SplittingField((x^2+3)*(x^2+15)))[4,1],
QuadraticField(2).1,-QuadraticField(2).1,
0,-1,-2,
-1+QuadraticField(-1).1,-1-QuadraticField(-1).1,
-3+QuadraticField(5).1,-3-QuadraticField(5).1,(-3+QuadraticField(5).1)/2,(-3+QuadraticField(5).1)/2,
Roots(x^4 + 6*x^3 + 14*x^2 + 12*x + 4,SplittingField((x^2-3)*(x^2+3)))[1,1],Roots(x^4 + 6*x^3 + 14*x^2 + 12*x + 4,SplittingField((x^2-3)*(x^2+3)))[2,1],
Roots(x^4 + 6*x^3 + 14*x^2 + 12*x + 4,SplittingField((x^2-3)*(x^2+3)))[3,1],Roots(x^4 + 6*x^3 + 14*x^2 + 12*x + 4,SplittingField((x^2-3)*(x^2+3)))[4,1],
Roots(x^4 + 18/5*x^3 + 34/5*x^2 + 36/5*x + 4,SplittingField((x^2+1)*(x^2+11)))[1,1],Roots(x^4 + 18/5*x^3 + 34/5*x^2 + 36/5*x + 4,SplittingField((x^2+1)*(x^2+11)))[2,1],
Roots(x^4 + 18/5*x^3 + 34/5*x^2 + 36/5*x + 4,SplittingField((x^2+1)*(x^2+11)))[3,1],Roots(x^4 + 18/5*x^3 + 34/5*x^2 + 36/5*x + 4,SplittingField((x^2+1)*(x^2+11)))[4,1],
-3+QuadraticField(-1).1,-3-QuadraticField(-1).1,(-3+QuadraticField(-1).1)/5,(-3-QuadraticField(-1).1)/5,
Roots(x^4 + 2*x^3 + 2*x^2 + 4*x + 4,SplittingField((x^2+1)*(x^2+3)))[1,1],Roots(x^4 + 2*x^3 + 2*x^2 + 4*x + 4,SplittingField((x^2+1)*(x^2+3)))[2,1],
Roots(x^4 + 2*x^3 + 2*x^2 + 4*x + 4,SplittingField((x^2+1)*(x^2+3)))[3,1],Roots(x^4 + 2*x^3 + 2*x^2 + 4*x + 4,SplittingField((x^2+1)*(x^2+3)))[4,1],
-2+QuadraticField(-2).1,-2-QuadraticField(-2).1,(-2+QuadraticField(-2).1)/3,(-2-QuadraticField(-2).1)/3,
-2+QuadraticField(2).1,-2-QuadraticField(2).1,
(9+QuadraticField(-3).1)/(-9+5*QuadraticField(-3).1)/78,(9+QuadraticField(-3).1)/(-9-5*QuadraticField(-3).1)/78,
(9-QuadraticField(-3).1)/(-9+5*QuadraticField(-3).1)/78,(9-QuadraticField(-3).1)/(-9-5*QuadraticField(-3).1)/78,
Roots(x^4 + 24/7*x^3 + 44/7*x^2 + 48/7*x + 4,SplittingField((x^2+6)*(x^2+3)))[1,1],Roots(x^4 + 24/7*x^3 + 44/7*x^2 + 48/7*x + 4,SplittingField((x^2+6)*(x^2+3)))[2,1],
Roots(x^4 + 24/7*x^3 + 44/7*x^2 + 48/7*x + 4,SplittingField((x^2+6)*(x^2+3)))[3,1],Roots(x^4 + 24/7*x^3 + 44/7*x^2 + 48/7*x + 4,SplittingField((x^2+6)*(x^2+3)))[4,1],
Roots(x^4 + 72/19*x^3 + 140/19*x^2 + 144/19*x + 4,SplittingField((x^2+2)*(x^2+10)))[1,1],Roots(x^4 + 72/19*x^3 + 140/19*x^2 + 144/19*x + 4,SplittingField((x^2+2)*(x^2+10)))[2,1],
Roots(x^4 + 72/19*x^3 + 140/19*x^2 + 144/19*x + 4,SplittingField((x^2+2)*(x^2+10)))[3,1],Roots(x^4 + 72/19*x^3 + 140/19*x^2 + 144/19*x + 4,SplittingField((x^2+2)*(x^2+10)))[4,1],
Roots(x^4 + 18/17*x^3 - 14/17*x^2 + 36/17*x + 4,SplittingField((x^2+1)*(x^2+59)))[1,1],Roots(x^4 + 18/17*x^3 - 14/17*x^2 + 36/17*x + 4,SplittingField((x^2+1)*(x^2+59)))[2,1],
Roots(x^4 + 18/17*x^3 - 14/17*x^2 + 36/17*x + 4,SplittingField((x^2+1)*(x^2+59)))[3,1],Roots(x^4 + 18/17*x^3 - 14/17*x^2 + 36/17*x + 4,SplittingField((x^2+1)*(x^2+59)))[4,1],
Roots(x^4 + 54/7*x^3 + 134/7*x^2 + 108/7*x + 4,SplittingField((x^2-39)*(x^2+3)))[1,1],Roots(x^4 + 54/7*x^3 + 134/7*x^2 + 108/7*x + 4,SplittingField((x^2-39)*(x^2+3)))[2,1],
Roots(x^4 + 54/7*x^3 + 134/7*x^2 + 108/7*x + 4,SplittingField((x^2-39)*(x^2+3)))[3,1],Roots(x^4 + 54/7*x^3 + 134/7*x^2 + 108/7*x + 4,SplittingField((x^2-39)*(x^2+3)))[4,1]>;
CM_list := <
<26,1,L26>,
<38,1,L38>,
<39,1,L39>,
<51,1,L51>,
<58,1,L58>,
<55,1,L55>,
<62,1,L62>,
<69,1,L69>,
<74,1,L74>,
<86,1,L86>,
<87,1,L87>,
<94,1,L94>,
<95,1,L95>,
<111,1,L111>,
<119,1,L119>,
<134,1,L134>,
<146,1,L146>,
<159,1,L159>,
<194,1,L194>,
<206,1,L206>,
<6,11,L6x11>,
<6,19,L6x19>,
<6,29,L6x29>,
<6,13,L6x31>,
<6,37,L6x37>,
<10,11,L10x11>,
<10,19,L10x19>,
<10,23,L10x23>,
<14,5,L14x5>,
<15,2,L15x2>,
<22,3,L22x3>,
<22,5,L22x5>,
<39,2,L39x2>>;
return CM_list;
end intrinsic;
intrinsic ShimCMPointsGuoYang(D::RngIntElt,N::RngIntElt,W::SeqEnum) -> Any
{Get the CM points for disc, level and W
We know the x_coord from Guo-Yang, then we need to adjoin it X(D,N)
and project onto X(D,N)/W}
CM_xvalues:=[ A[3] : A in CMList() | A[1] eq D and A[2] eq N ][1];
s_top:=ShimDBRecord(D,N,[1] : version:=1);
C:=s_top`ShimModel;
A2<x,y>:=AffineSpace(Rationals(),2);
//Caff:=Curve(A2,y^2 -Evaluate(HyperellipticPolynomials(C),A2.1));
hyp_quotientcurve:=ProjectiveClosure(Curve(A2, y - Evaluate(HyperellipticPolynomials(C),A2.1)));
P2<[x]>:=Ambient(C);
g:=Degree(C);
coefs:=Coefficients(HyperellipticPolynomials(C));
hyppols:= &+([ coefs[i]*(x[1]^(i-1))*(x[3]^(g-i+1)) : i in [1..#coefs] ]);
hyp_proj:= map< C -> hyp_quotientcurve | [x[1]*x[3]^(g-1), hyppols , x[3]^g] >;
CM_points_top_curve:=[* *];
for x_coord in CM_xvalues do
y_coord_sq:=Evaluate(HyperellipticPolynomials(C),x_coord);
if IsSquare(y_coord_sq) then
tup1:=[x_coord,Sqrt(y_coord_sq),1];
tup2:=[x_coord,-Sqrt(y_coord_sq),1];
Append(~CM_points_top_curve,C!tup1);
Append(~CM_points_top_curve,C!tup2);
else
if Type(Parent(x_coord)) eq RngInt then F:=Rationals(); else F:=Parent(x_coord); end if;
Pol<t>:=PolynomialRing(F);
Fext:=ext< F | t^2 - F!y_coord_sq >;
AF:=AbsoluteField(Fext);
tup1:= [AF!x_coord,AF!Fext.1,1];
tup2:= [AF!x_coord,-AF!Fext.1,1];
Append(~CM_points_top_curve,CoercePointAnyField(C,tup1));
Append(~CM_points_top_curve,CoercePointAnyField(C,tup2));
//Append(~CM_points_hypquo,CoercePointAnyField(hyp_quotientcurve,[x_coord,y_coord,1]));
end if;
end for;
s:=ShimDBRecord(D,N,W : version:=1);
proj:=s`ShimProjectionEquations;
cm_points:=[* MapPointAnyField(proj,Q) : Q in CM_points_top_curve *];
return cm_points;
/*for pt in CM_points_hypquo do
pt;
hyp_projK:=ChangeRingMap(hyp_proj,Parent(Eltseq(pt)[1]));
PullbackPointsWithEquation(hyp_projK,[*pt*]);
end for;*/
/* map< C -> proj_hyp | [x[1],x[2]^2,x[3]] >;
dp:=DefiningPolynomials(gf);
new_hypproj:= map<Domain(s`ShimProjectionEquations) -> Codomain(Inverse(m)) | dp>;
*/
end intrinsic;
intrinsic ShimCMPointsRationalGuoYang(D::RngIntElt,N::RngIntElt,W::SeqEnum) -> Any
{}
list:= ShimCMPointsGuoYang(D,N,W);
return Setseq(Set([ A : A in list | Parent(A[1]) eq Rationals() ]));
end intrinsic;
//curves which are not hyperelliptic over Q
//<1,57>
//<1,82>
//<1,93>
//<6,17>
//<10,13>
//<14,3>
//<15,4>
//<21,2>
//<26,3>
//equation for <1,82>
//add points at infinity?
//_<x> := PolynomialRing(Rationals());
//f := x^2-39;
//g := x^2+3;
//L := SplittingField(f*g);
//a := Roots(f,L)[1,1];
//b := Roots(g,L)[1,1];
//d := (9+a)*(-9+b)/42;
//MinimalPolynomial(L!d);