Sharedwww / Tables / magma / READMEOpen in CoCalc
Author: William A. Stein
1
A WORK IN PROGRESS!!!!!!!!!
2
3
Here are some examples:
4
5
> M:=ModularSymbols(37,2,+1);
6
> D:=Decomposition(M);
7
> Print(D);
8
Modular symbols factors:
9
37k2A: dim = 1 cuspidal
10
37k2B: dim = 1 cuspidal
11
37k2C: dim = 1 eisenstein
12
> E:=EllipticCurve(Factor(D,1));
13
WARNING: Not finding enough symbols!
14
Switching to slow method.
15
WARNING: Not finding enough symbols!
16
Could not find enough invariant symbols.
17
Need a better algorithm.
18
> // need to work in the full space, not just the +1 quotient.
19
> // dumb error message above (noted).
20
> M:=ModularSymbols(37,2);
21
> D:=Decomposition(M);
22
> Print(D);
23
Modular symbols factors:
24
37k2A: dim = 2 cuspidal
25
37k2B: dim = 2 cuspidal
26
37k2C: dim = 1 eisenstein
27
> E:=EllipticCurve(Factor(D,1));
28
> E;
29
Elliptic Curve defined by y^2 = x^3 - 1296*x + 11664 over Rational Field
30
> Conductor(E);
31
37
32
> TamagawaNumber(E,37); // using the elliptic curve
33
1
34
> ArithmeticTamagawa(Factor(D,1)); // c_p using method of graphs
35
1
36
> GeometricTamagawa(Factor(D,1)); // #Phi(Fpbar)
37
1
38
> RealTamagawa(Factor(D,1)); // number of real components
39
2
40
> LRatio2(Factor(D,1)); // L(1)/Omega
41
0
42
> A:=Factor(D,1); // name the factor A.
43
> LeadingCoefficient(A,1); // leading coeff. of L-series at 1 (L'(A,1))
44
0.305999773800085290044094075725 1
45
> //^----- the rank is 1.
46
> // this was computed using a port of your code.
47
> LeadingCoefficient(A,1,150); // more terms of q-expansion
48
0.305999773800085290044094075725 1
49
> // but no better precision :)
50
> ModularDegree(A);
51
4
52
> // this is the square of the usual mod deg, as it
53
> // works for factors of any weight, and when the
54
> // weight is > 2 the degree of the canonical map
55
> // need not be a square.
56
57
> PeriodLattice(A,97);
58
[
59
(-2.99345695254283493281934233592 + 2.451390462297517938738352598020*i),
60
(2.99345695254283493281934233592)
61
]
62
> B:=Factor(D,2);
63
> PeriodLattice(A,97);
64
[
65
(-2.99345695254283493281934233592 + 2.451390462297517938738352598020*i),
66
(2.99345695254283493281934233592)
67
]
68
> LRatio2(B,1);
69
1/3
70
> Sha(B);
71
warning: currently there is a bug -- off by powers of 2.
72
1
73
74
75
> M:=ModularSymbols(210,2,+1);
76
> D:=Decomposition(M);
77
> Print(D); // this gives only the decomposition of the new subspace.
78
Modular symbols factors:
79
210k2A: dim = 1 cuspidal
80
210k2B: dim = 1 cuspidal
81
210k2C: dim = 1 cuspidal
82
210k2D: dim = 1 cuspidal
83
210k2E: dim = 1 cuspidal
84
> Dold := OldDecomposition(M); // get old forms as well
85
> Print(Dold);
86
Modular symbols factors:
87
210k2A: dim = 2 cuspidal (old: 105A)
88
210k2B: dim = 4 cuspidal (old: 105B)
89
210k2C: dim = 2 cuspidal (old: 70A)
90
210k2D: dim = 2 cuspidal (old: 42A)
91
210k2E: dim = 4 cuspidal (old: 35A)
92
210k2F: dim = 8 cuspidal (old: 35B)
93
210k2G: dim = 2 cuspidal (old: 30A)
94
210k2H: dim = 4 cuspidal (old: 21A)
95
210k2I: dim = 4 cuspidal (old: 15A)
96
210k2J: dim = 4 cuspidal (old: 14A)
97
210k2K: dim = 1 eisenstein (old: 7A)
98
210k2L: dim = 1 eisenstein (old: 5A)
99
210k2M: dim = 1 eisenstein (old: 3A)
100
210k2N: dim = 1 eisenstein (old: 2A)
101
> Dfull := FullDecomposition(M); // both new and old
102
> Print(Dfull);
103
Modular symbols factors:
104
210k2A: dim = 1 cuspidal
105
210k2B: dim = 1 cuspidal
106
210k2C: dim = 1 cuspidal
107
210k2D: dim = 1 cuspidal
108
210k2E: dim = 1 cuspidal
109
210k2F: dim = 2 cuspidal (old: 105A)
110
210k2G: dim = 4 cuspidal (old: 105B)
111
210k2H: dim = 2 cuspidal (old: 70A)
112
210k2I: dim = 2 cuspidal (old: 42A)
113
210k2J: dim = 4 cuspidal (old: 35A)
114
210k2K: dim = 8 cuspidal (old: 35B)
115
210k2L: dim = 2 cuspidal (old: 30A)
116
210k2M: dim = 4 cuspidal (old: 21A)
117
210k2N: dim = 4 cuspidal (old: 15A)
118
210k2O: dim = 4 cuspidal (old: 14A)
119
210k2P: dim = 1 eisenstein (old: 7A)
120
210k2Q: dim = 1 eisenstein (old: 5A)
121
210k2R: dim = 1 eisenstein (old: 3A)
122
210k2S: dim = 1 eisenstein (old: 2A)
123
> // The labeling of the factors in the output of Dold above is dumb... oops.
124
> A:=Factor(Dfull,"A");
125
> A:=Factor(Dfull,1); // these are equivalent
126
> ModularDegree(A); // only up to a power of 2.
127
8
128
> // my ordering at level 210 apparently is
129
> // different than yours, as I have no special
130
> // code for the exceptional levels.
131
> qEigenform(A,23);
132
q - q^2 - q^3 + q^4 - q^5 + q^6 - q^7 - q^8 + q^9 + q^10 - 4*q^11 - q^12 -
133
2*q^13 + q^14 + q^15 + q^16 - 6*q^17 - q^18 - q^20 + q^21 + 4*q^22 - 8*q^23
134
> // This is your "210D".
135
> WqOn(A,2);
136
[1]
137
> WqOn(A,3);
138
[1]
139
> WqOn(A,5);
140
[1]
141
> WqOn(A,7);
142
[1]
143
> // I will probably change from WqOn to "AtkinLehner" to be more
144
> // consistent with the Magma philosophy of descriptive names.
145
> B:=Factor(Dfull,2);
146
> IntersectFactors(A,B);
147
Vector space of degree 56, dimension 0 over Rational Field
148
> // they are different as subspaces of homology.
149
> AbelianIntersection(A,B); // intersect the abelian varieties
150
// again, only believe the part away from 2 since we
151
// are working in the +1 quotient.
152
[] // this is an H_1(X_0(N),Z) computation.
153
154
> eps:=DirichletCharacter(37,[4]); // degree four character on (Z/37Z)^*
155
> Evaluate(eps,-1); // odd character.
156
-1
157
> [Evaluate(eps,i) : i in [1..36]];
158
[ 1, zeta, -1, -1, -zeta, -zeta, 1, -zeta, 1, 1, -1, 1, -zeta, zeta, zeta, 1,
159
-zeta, zeta, -zeta, zeta, -1, -zeta, -zeta, zeta, -1, 1, -1, -1, zeta, -1,
160
zeta, zeta, 1, 1, -zeta, -1 ]
161
> M:=ModularSymbols(eps, 3) ; // weight 3, "M_3(Gamma_1(37), eps)"
162
> Dimension(M);
163
14
164
> // these are modular symbols so the
165
> // dimension is bigger
166
> D:=Decomposition(M);
167
> Print(D);
168
Modular symbols factors:
169
37k3A: dim =12 cuspidal
170
37k3B: dim = 1 eisenstein
171
37k3C: dim = 1 eisenstein
172
> A:=Factor(D,1);
173
> qEigenform(A,13);
174
q + a*q^2 + (-1/4*zeta*a^4 + (-1/4*zeta - 1/4)*a^3 + 11/4*a^2 + (-5/4*zeta +
175
5/4)*a + 3*zeta)*q^3 + (a^2 - 4*zeta)*q^4 + (1/4*zeta*a^5 + (1/2*zeta +
176
1/2)*a^4 - 13/4*a^3 + (5*zeta - 5)*a^2 - 17/2*zeta*a - 6*zeta - 6)*q^5 +
177
(-1/4*zeta*a^5 + (-1/4*zeta - 1/4)*a^4 + 11/4*a^3 + (-5/4*zeta + 5/4)*a^2 +
178
3*zeta*a)*q^6 + ((-1/4*zeta - 1/4)*a^5 - a^4 + (-13/4*zeta + 13/4)*a^3 -
179
11*zeta*a^2 + (13/2*zeta + 13/2)*a + 15)*q^7 + (a^3 - 8*zeta*a)*q^8 +
180
((1/4*zeta + 1/4)*a^5 + 3/4*a^4 + (7/2*zeta - 7/2)*a^3 + 25/4*zeta*a^2 +
181
(-35/4*zeta - 35/4)*a - 6)*q^9 + ((-1/4*zeta - 1/4)*a^5 - 3/4*a^4 +
182
(-7/2*zeta + 7/2)*a^3 - 29/4*zeta*a^2 + (35/4*zeta + 35/4)*a + 6)*q^10 +
183
(1/4*zeta*a^4 + (5/4*zeta + 5/4)*a^3 - 7/4*a^2 + (45/4*zeta - 45/4)*a -
184
3*zeta)*q^11 + ((1/2*zeta + 1/2)*a^5 - 3/4*a^4 + (33/4*zeta - 33/4)*a^3 -
185
37/4*zeta*a^2 + (-79/4*zeta - 79/4)*a + 6)*q^12 + (1/4*zeta*a^5 + (1/2*zeta
186
+ 1/2)*a^4 - 17/4*a^3 + (7*zeta - 7)*a^2 - 33/2*zeta*a - 14*zeta - 14)*q^13
187
> ModularDegree(A);
188
1 // no congruences
189
> CharacteristicPolynomial(Tn(M,2));
190
x^14 + (-zeta + 1)*x^13 + 45*zeta*x^12 + (16*zeta + 16)*x^11 - 948*x^10 +
191
(142*zeta - 142)*x^9 - 10378*zeta*x^8 + (-2140*zeta - 2140)*x^7 + 55737*x^6
192
+ (-17961*zeta + 17961)*x^5 + 126521*zeta*x^4 + (50892*zeta + 50892)*x^3 -
193
94690*x^2 + (45264*zeta - 45264)*x + 9792*zeta
194
> Factorization($1);
195
[
196
<x + zeta - 4, 1>,
197
<x + 4*zeta - 1, 1>,
198
<x^6 + (-3*zeta + 3)*x^5 + 10*zeta*x^4 + (34*zeta + 34)*x^3 - 5*x^2 +
199
(59*zeta - 59)*x + 24*zeta, 2>
200
]
201
> // We can also work in characteristic p.
202
> M:=ModularSymbols(1091, 2, 0, 2003);
203
// N=1091, k=2, 0=full space (not +1 or -1) quotient,
204
// p=2003 (a random prime)
205
> D:=Decomposition(M); // problem -- this could lead to trouble if
206
// there are too many congruences since one need not
207
// have multiplicity one in char. p
208
209
[Interrupted] // it's taking too long...
210
> D:=SemiDecomposition(M);
211
> // semi-decomp just uses a few hecke operators
212
> // to break up the space.
213
> Print(D);
214
Modular symbols factors:
215
(The isogeny classes have not been labeled.) // but doesn't label isogeny
216
// classes
217
Can't determine if A is cuspidal. // or determine cusp forms
218
// which it should...
219
> Dimension(D);
220
[ 2, 1, 4, 6, 6, 8, 14, 52, 90 ] // dimensions of the factors in the homology
221
> A:=D[9];
222
> qEigenform(A,7);
223
Can't determine if A is cuspidal.
224
> A`iscusp:=true; // fake it (noted).
225
> qEigenform(A,7);
226
q + a*q^2 + (326*a^44 + 1226*a^43 + 1393*a^42 + 1313*a^41 + 1148*a^40 +
227
1868*a^39 + 1706*a^38 + 58*a^37 + 613*a^36 + 1926*a^35 + 1847*a^34 +
228
1762*a^33 + 141*a^32 + 1734*a^31 + 1505*a^30 + 812*a^29 + 437*a^28 +
229
1273*a^27 + 1942*a^26 + 1129*a^25 + 455*a^24 + 704*a^23 + 156*a^22 +
230
489*a^21 + 1849*a^20 + 958*a^19 + 85*a^18 + 1322*a^17 + 142*a^16 + 1321*a^15
231
+ 495*a^14 + 151*a^13 + 1903*a^12 + 751*a^11 + 1600*a^10 + 807*a^9 + 564*a^8
232
+ 815*a^7 + 1812*a^6 + 212*a^5 + 1306*a^4 + 823*a^3 + 493*a^2 + 1223*a +
233
1459)*q^3 + (a^2 + 2001)*q^4 + (1544*a^44 + 44*a^43 + 1705*a^42 + 1797*a^41
234
+ 1842*a^40 + 497*a^39 + 744*a^38 + 871*a^37 + 208*a^36 + 1387*a^35 +
235
1768*a^34 + 439*a^33 + 1859*a^32 + 1925*a^31 + 22*a^30 + 773*a^29 +
236
1829*a^28 + 1639*a^27 + 531*a^26 + 647*a^25 + 773*a^24 + 1757*a^23 + 90*a^22
237
+ 764*a^21 + 23*a^20 + 1653*a^19 + 399*a^18 + 246*a^17 + 979*a^16 +
238
1573*a^15 + 123*a^14 + 1841*a^13 + 180*a^12 + 1749*a^11 + 1078*a^10 +
239
1833*a^9 + 1491*a^8 + 915*a^7 + 1861*a^6 + 1318*a^5 + 1357*a^4 + 1704*a^3 +
240
1073*a^2 + 872*a + 1816)*q^5 + (1529*a^44 + 542*a^43 + 1147*a^42 + 1104*a^41
241
+ 1084*a^40 + 956*a^39 + 1039*a^38 + 122*a^37 + 1965*a^36 + 1914*a^35 +
242
370*a^34 + 781*a^33 + 408*a^32 + 1340*a^31 + 1544*a^30 + 1895*a^29 +
243
461*a^28 + 833*a^27 + 1509*a^26 + 1146*a^25 + 1110*a^24 + 566*a^23 +
244
1673*a^22 + 1478*a^21 + 239*a^20 + 319*a^19 + 997*a^18 + 1559*a^17 +
245
601*a^16 + 920*a^15 + 1865*a^14 + 873*a^13 + 800*a^12 + 1003*a^11 + 141*a^10
246
+ 1878*a^9 + 713*a^8 + 200*a^7 + 1119*a^6 + 496*a^5 + 939*a^4 + 322*a^3 +
247
8*a^2 + 657*a + 1526)*q^6 + (1742*a^44 + 540*a^43 + 1059*a^42 + 1679*a^41 +
248
445*a^40 + 1966*a^39 + 1986*a^38 + 1930*a^37 + 454*a^36 + 1139*a^35 +
249
656*a^34 + 1404*a^33 + 1545*a^32 + 977*a^31 + 937*a^30 + 1607*a^29 +
250
1731*a^28 + 876*a^27 + 583*a^26 + 1769*a^25 + 1091*a^24 + 895*a^23 + 91*a^22
251
+ 1560*a^21 + 548*a^20 + 1478*a^19 + 1289*a^18 + 1307*a^17 + 709*a^16 +
252
312*a^15 + 432*a^14 + 507*a^13 + 976*a^12 + 272*a^11 + 1995*a^10 + 801*a^9 +
253
438*a^8 + 1302*a^7 + 805*a^6 + 241*a^5 + 834*a^4 + 22*a^3 + 1407*a^2 + 47*a
254
+ 1670)*q^7
255
256
257
// There is a lot more which I haven't demonstrated.
258
259
260
261
// The following is from a slightly older version and illustrates
262
// more of the analytic algorithms.
263
264
> E:=ModularFactor("102A");
265
Creating M_2(Gamma_1(102),eps;F_0), 0.931 seconds.
266
Sorting and labeling factors...
267
> A:= EllipticCurve(E);
268
c4 = 129.96026683870632647605108639720 + 0.E-26*i
269
c6 = -967.449473693141351229526205435086 + 0.E-26*i
270
Searching...
271
Recomputing period integrals to higher precision
272
c4 = 121.50014254162008399557491210672 + 0.E-27*i
273
c6 = -852.192647066222708349523846679836 + 0.E-26*i
274
Candidate curve [121,-845]:
275
By Shimura-Taniyama, this is in the isogeny class.
276
> MinimalModel(A);
277
Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 2*x over Rational Field
278
> qEigenform(E,17);
279
q - q^2 - q^3 + q^4 - 4*q^5 + q^6 - 2*q^7 - q^8 + q^9 + 4*q^10 - q^12 - 6*q^13 + 2*q^14 + 4*q^15 + q^16 - q^17
280
> RealVolume(E);
281
(Using at least 89 terms of q-expansions.)
282
4.72527553048410921322135656648
283
> M:=ModSymParent(E);
284
> Print(M);
285
Full Modular symbols space of dimension 37, level 102 and weight 2
286
> Print(Decomposition(M));
287
Decomposition of space of modular symbols.
288
Modular symbols factor of dimension 1, level 102, weight 2 (102A)
289
Modular symbols factor of dimension 1, level 102, weight 2 (102B)
290
Modular symbols factor of dimension 1, level 102, weight 2 (102C)
291
Modular symbols factor of dimension 7, level 0, weight 2 (0?) // this output
292
Modular symbols factor of dimension 2, level 0, weight 2 (0?) // format is
293
Modular symbols factor of dimension 2, level 0, weight 2 (0?) // stupid
294
Modular symbols factor of dimension 4, level 0, weight 2 (0?) // and not
295
Modular symbols factor of dimension 4, level 0, weight 2 (0?) // done yet!
296
297
[was]# magma
298
Magma V2.5-1 Tue Aug 10 1999 02:04:49 on yomomma [Seed = 177387000]
299
Type ? for help. Type <Ctrl>-D to quit.
300
301
> M:=ModularSymbols(11,2); // M_2(Gamma_0(11))
302
Creating M_2(Gamma_1(11),eps;F_0), 0.01 seconds.
303
> D:=Decomposition(M); // find eigenvectors
304
> Print(D);
305
Decomposition of space of modular symbols.
306
Sorting and labeling factors...
307
Modular symbols factor of dimension 1, level 11, weight 2 (11A)
308
Modular symbols factor of dimension 1, level 11, weight 2 (11B)
309
> E:=Factor(D,1); // first one
310
> Print(E);
311
Modular symbols factor of dimension 1, level 11, weight 2 (11A)
312
> qEigenform(E,13); // q-expansion of the modular eigenform
313
q - 2*q^2 - q^3 + 2*q^4 + q^5 + 2*q^6 - 2*q^7 - 2*q^9 - 2*q^10 + q^11 - 2*q^12 +
314
4*q^13
315
316
> RealTamagawa(E); // c_infinity
317
1
318
> ImaginaryTamagawa(E); // c_infinity
319
(Warning: Imaginary comp group formula not yet proved.)
320
1
321
> GeometricTamagawa(E,11); // component group at 11
322
5
323
> Tn(M,2); // hecke operator T2
324
[-2 0 0]
325
[ 0 -2 0]
326
[ 0 1 3]
327
> fcp(Tn(M,2)); // factored characteristic polynomial
328
[
329
<$.1 - 3, 1>, // the "$.1" is the indeterminate...
330
<$.1 + 2, 2>
331
]
332
1
333
> Mk := ModularSymbols; // now we can use the abbrev. "Mk"!
334
> M := Mk(37,2);
335
Creating M_2(Gamma_1(37),eps;F_0), 0.08 seconds.
336
> D:=Decomposition(M); Print(D); // two statements on a line
337
Decomposition of space of modular symbols.
338
Sorting and labeling factors...
339
Modular symbols factor of dimension 1, level 37, weight 2 (37A)
340
Modular symbols factor of dimension 1, level 37, weight 2 (37B)
341
Modular symbols factor of dimension 1, level 37, weight 2 (37C)
342
> E:=Factor(D,"37A"); // the curve 37A
343
> Print(E);
344
Modular symbols factor of dimension 1, level 37, weight 2 (37A)
345
> LRatio(E); // L(E,1)/Omega
346
warning: currently there is a bug -- off by powers of 2. <--- yep.
347
0
348
> // The L-function vanishes!
349
> LeadingCoefficient(E); // compute L'(E,1)
350
(Using at least 53 terms of q-expansions.)
351
0.305999773800085290044094067439 1
352
> // ^----- the rank is one.
353
> F:=Factor(D,"37B"); // the curve 37B
354
> LAnalytic(F,1); // L(F,1)
355
(Using at least 53 terms of q-expansions.)
356
0.72567978570714430075069947199
357
> a := $1;
358
> b := RealTamagawa(F);
359
> a/b; // L(1)/Omega
360
0.362839892853572150375349735997
361
> LRatio(F);
362
warning: currently there is a bug -- off by powers of 2.
363
1/3
364
> a := LAnalytic(F,1,97); // L(F,1)
365
> b := RealVolume(F,97);
366
> a/b;
367
0.333333333333333333333333333329
368
> // WOW -- the formula for the ratio L(1)/Omega is correct!!
369
> // Note, the two computations are completely independent.
370
371
> // Try it in another case!
372
> A:=ModularFactor("9k4A"); // our favourite
373
Creating M_4(Gamma_1(9),eps;F_0), 0.15 seconds.
374
Sorting and labeling factors...
375
376
> // Notice how I just made the modular form thingy directly
377
> // without having to make the ModularSymbols and then Decomposition.
378
> // If you know the label you can just give it as input!!
379
380
> Print(A);
381
Modular symbols factor of dimension 1, level 9, weight 4 (9A)
382
383
> f:=qEigenform(A,17);
384
> f;
385
q - 8*q^4 + 20*q^7 - 70*q^13
386
> // that's the q-expansion... let's get more terms.
387
388
> time f:=qEigenform(A,150);
389
Time: 13.429
390
> // that took a LONG time. However, it will be easy for me to add
391
> // a function so that you can FAKE it and give your own q-expansion.
392
> // In fact, you could already do this by changing the qexp field
393
> // of A directly:
394
> A`qexp;
395
q - 8*q^4 + 20*q^7 - 70*q^13 + 64*q^16 + 56*q^19 - 125*q^25 - 160*q^28 +
396
308*q^31 + 110*q^37 - 520*q^43 + 57*q^49 + 560*q^52 + 182*q^61 - 512*q^64 -
397
880*q^67 + 1190*q^73 - 448*q^76 + 884*q^79 - 1400*q^91 - 1330*q^97 +
398
1000*q^100 + 1820*q^103 - 646*q^109 + 1280*q^112 - 1331*q^121 - 2464*q^124 +
399
380*q^127 + 1120*q^133 + 2576*q^139 - 880*q^148 + 1748*q^151
400
401
> R<q> := Parent(A`qexp); // Create the ring R = Q[[q]].
402
> // You could do something like the following -- if you remember the
403
> // correct eta product. I'll make up something ridiculous.
404
> A`qexp := R!(DedekindEta(q^3+O(q^200)))^8;
405
> A`qexp;
406
q - 8*q^4 + 20*q^7 - 70*q^13 + 64*q^16 + 56*q^19 - 125*q^25 - 160*q^28 +
407
308*q^31 + 110*q^37 - 520*q^43 + 57*q^49 + 560*q^52 + 182*q^61 - 512*q^64 -
408
880*q^67 + 1190*q^73 - 448*q^76 + 884*q^79 - 1400*q^91 - 1330*q^97 +
409
1000*q^100 + 1820*q^103 - 646*q^109 + 1280*q^112 - 1331*q^121 - 2464*q^124 +
410
380*q^127 + 1120*q^133 + 2576*q^139 - 880*q^148 + 1748*q^151 - 3850*q^157 -
411
3400*q^163 + 2703*q^169 + 4160*q^172 - 2500*q^175 + 3458*q^181 - 1150*q^193
412
- 456*q^196 + O(q^198)
413
414
> // Now, as far as the computer is concerned, we know the q-expansion
415
> // to 198 terms!! This will be hardcoded into hecke as soon
416
> // as you tell me all such eta products... :)
417
> PeriodLattice(A);
418
(Using at least 50 terms of q-expansions.)
419
[
420
(0.62848661625330610132711430172 + 0.362856917075923304831351880497*i),
421
(-0.72571383415184660966270376099*i)
422
]
423
424
> B:=ModularFactor("9k4A"); // make another one, to test with less terms
425
Creating M_4(Gamma_1(9),eps;F_0), 0.15 seconds.
426
Sorting and labeling factors...
427
> PeriodLattice(B,40);
428
[
429
(0.62848661625330610144167996255 + 0.362856917075923305289393529935*i),
430
(-0.72571383415184661057878705987*i)
431
]
432
> // They are pretty close
433
> A`qexp := R!(DedekindEta(q^3+O(q^400)))^8;
434
> time A`qexp := R!(DedekindEta(q^3+O(q^500)))^8;
435
Time: 0.720
436
> PeriodLattice(A);
437
(Using at least 50 terms of q-expansions.)
438
[
439
(0.62848661625330610132711430172 + 0.362856917075923304831351880497*i),
440
(-0.72571383415184660966270376099*i)
441
]
442
> PeriodLattice(A,500);
443
444
[Interrupted]
445
> qEigenform(A);
446
q - 8*q^4 + 20*q^7 - 70*q^13 + 64*q^16 + 56*q^19 - 125*q^25 - 160*q^28 +
447
308*q^31 + 110*q^37 - 520*q^43 + 57*q^49 + 560*q^52 + 182*q^61 - 512*q^64 -
448
880*q^67 + 1190*q^73 - 448*q^76 + 884*q^79 - 1400*q^91 - 1330*q^97 +
449
1000*q^100 + 1820*q^103 - 646*q^109 + 1280*q^112 - 1331*q^121 - 2464*q^124 +
450
380*q^127 + 1120*q^133 + 2576*q^139 - 880*q^148 + 1748*q^151 - 3850*q^157 -
451
3400*q^163 + 2703*q^169 + 4160*q^172 - 2500*q^175 + 3458*q^181 - 1150*q^193
452
- 456*q^196 - 5236*q^199 - 4480*q^208 + 6032*q^211 + 6160*q^217 - 3220*q^223
453
+ 4466*q^229 - 7378*q^241 - 1456*q^244 - 3920*q^247 + 4096*q^256 +
454
2200*q^259 + 7040*q^268 + 812*q^271 - 4030*q^277 + 5600*q^283 - 4913*q^289 -
455
9520*q^292 - 10400*q^301 + 3584*q^304 + 10640*q^307 + 10010*q^313 -
456
7072*q^316 + 8750*q^325 + 992*q^331 - 4930*q^337 - 5720*q^343 - 11914*q^349
457
- 3723*q^361 + 11200*q^364 + 4340*q^367 + 12350*q^373 - 8584*q^379 +
458
10640*q^388 + 1190*q^397 - 8000*q^400 - 21560*q^403 + 8246*q^409 -
459
14560*q^412 + 17138*q^421 + 3640*q^427 - 2590*q^433 + 5168*q^436 +
460
14924*q^439 - 10240*q^448 + 12710*q^457 - 19780*q^463 - 17600*q^469 -
461
7000*q^475 - 7700*q^481 + 10648*q^484 + 20900*q^487 + 19712*q^496 + O(q^498)
462
> PeriodLattice(A,300);
463
[
464
(0.62848661625330610132711430172 + 0.362856917075923304831351880497*i),
465
(-0.72571383415184660966270376099*i)
466
]
467
> PeriodLattice(B);
468
(Using at least 50 terms of q-expansions.)
469
[
470
(0.62848661625330610132710197841 + 0.362856917075923304831302606547*i),
471
(-0.72571383415184660966260521309*i)
472
]
473
> PeriodLattice(A,400);
474
[
475
(0.62848661625330610132711430172 + 0.362856917075923304831351880497*i),
476
(-0.72571383415184660966270376099*i)
477
]
478
> EllipticInvariants(A); // compute w1, w2, c4, c6, and j.
479
(Using at least 50 terms of q-expansions.)
480
[ 0.62848661625330610132711430172 + 0.362856917075923304831351880497*i,
481
-0.72571383415184660966270376099*i, -1.4609841411 E-23 + 0.E-32*i,
482
-1213700.73916098933260787190395729452 + 0.E-22*i, 3.6581121003 E-78 +
483
0.E-86*i ]
484
> LAnalytic(A,1);
485
(Using at least 50 terms of q-expansions.)
486
0.418991077502204067551409534481
487
> LAnalytic(A,2);
488
(Using at least 50 terms of q-expansions.)
489
-0.75996574999330763591362274757 + 0.E-29*i
490
> LAnalytic(A,3);
491
(Using at least 50 terms of q-expansions.)
492
0.91895026278509462584334777017
493
> LAnalytic(A,1)/RealVolume(A);
494
(Using at least 50 terms of q-expansions.)
495
(Using at least 50 terms of q-expansions.)
496
2.0000000000000000000000000000 + 0.E-28*i
497
> LRatio2(A,1); // use LRatio2 (proven algorithm)
498
2
499
> // YEAH!
500
> ClassicalPeriod(A,0); // this is the "r_0(f)" of Zagier, Manin, etc.
501
(Using at least 50 terms of q-expansions.)
502
0.066684501095875196496744176544*i
503
> ClassicalPeriod(A,2)/ClassicalPeriod(A,0); // this must be rational
504
(Using at least 50 terms of q-expansions.)
505
(Using at least 50 terms of q-expansions.)
506
-0.111111111111111111111111111112 + 0.E-29*i
507
> LRatio2(A,3)/LRatio2(A,1);
508
1/9
509
> 1/9.0;
510
0.111111111111111111111111111109
511
> // GREAT!
512
> //////////////////// Try one more example.
513
> time A:=ModularSymbols(50,4); // it's difficult to compute
514
Creating M_4(Gamma_1(50),eps;F_0), 2.051 seconds.
515
Time: 2.050
516
> time D:=Decomposition(A); Print(D);
517
Time: 6.129
518
Decomposition of space of modular symbols.
519
Sorting and labeling factors...
520
Modular symbols factor of dimension 1, level 50, weight 4 (50A)
521
Modular symbols factor of dimension 1, level 50, weight 4 (50B)
522
Modular symbols factor of dimension 1, level 50, weight 4 (50C)
523
Modular symbols factor of dimension 1, level 50, weight 4 (50D)
524
Modular symbols factor of dimension 1, level 50, weight 4 (50E)
525
Modular symbols factor of dimension 2, level 50, weight 4 (50F)
526
Modular symbols factor of dimension 4, level 50, weight 4 (50G)
527
Modular symbols factor of dimension 6, level 0, weight 4 (0?)
528
Modular symbols factor of dimension 2, level 0, weight 4 (0?)
529
Modular symbols factor of dimension 4, level 0, weight 4 (0?)
530
Modular symbols factor of dimension 2, level 0, weight 4 (0?)
531
Modular symbols factor of dimension 2, level 0, weight 4 (0?)
532
Modular symbols factor of dimension 2, level 0, weight 4 (0?)
533
> E:=Factor(D,"50A"); // or you could type Factor(D,1)
534
> Print(E);
535
Modular symbols factor of dimension 1, level 50, weight 4 (50A)
536
> time f:=qEigenform(E,60);
537
Time: 2.850
538
> f;
539
q - 2*q^2 - 7*q^3 + 4*q^4 + 14*q^6 + 34*q^7 - 8*q^8 + 22*q^9 + 27*q^11 - 28*q^12
540
+ 28*q^13 - 68*q^14 + 16*q^16 - 21*q^17 - 44*q^18 + 35*q^19 - 238*q^21 -
541
54*q^22 + 78*q^23 + 56*q^24 - 56*q^26 + 35*q^27 + 136*q^28 - 120*q^29 +
542
182*q^31 - 32*q^32 - 189*q^33 + 42*q^34 + 88*q^36 - 146*q^37 - 70*q^38 -
543
196*q^39 + 357*q^41 + 476*q^42 + 148*q^43 + 108*q^44 - 156*q^46 + 84*q^47 -
544
112*q^48 + 813*q^49 + 147*q^51 + 112*q^52 - 702*q^53 - 70*q^54 - 272*q^56 -
545
245*q^57 + 240*q^58 - 840*q^59 - 238*q^61
546
> PeriodLattice(E);
547
(Using at least 55 terms of q-expansions.)
548
[
549
(0.050681504817808558964075597940*i),
550
(0.089533171446080493107053635360 - 0.076022257226712838446113396912*i)
551
]
552
> // (I'll change it so that "Using at least
553
> // x terms" message sets x equal to the current precision of f.)
554
> PeriodLattice(E,70);
555
[
556
(0.050681503556512768313445419177*i),
557
(0.089533176259530639889925369629 - 0.076022255334769152470168128767*i)
558
]
559
> RealTamagawa(E);
560
1
561
> // Period lattice is not rectangular.
562
> EllipticInvariants(E);
563
(Using at least 55 terms of q-expansions.)
564
[ 0.050681503556512768313445419177*i, 0.089533176259530639889925369629 -
565
0.076022255334769152470168128767*i, 235365794.458559088159707386781572613712 +
566
2.3716922514 E-20*i, -3658277704787.33070250990890392994 - 4.9960036091 E-16*i,
567
-65415.57266766044739214929559771031 - 6.4967263899 E-23*i ]
568
> // What is -65415.572667660447?????????????///
569
> LRatio(E,1);
570
warning: currently there is a bug -- off by powers of 2.
571
40
572
> LRatio(E,2);
573
warning: currently there is a bug -- off by powers of 2.
574
(Warning: Imaginary comp group formula not yet proved.)
575
10
576
> LRatio(E,3);
577
warning: currently there is a bug -- off by powers of 2.
578
4/5
579
> // Use cool magma functions to make lists...
580
> [LRatio(E,i) : i in [1..3]];
581
warning: currently there is a bug -- off by powers of 2.
582
warning: currently there is a bug -- off by powers of 2.
583
warning: currently there is a bug -- off by powers of 2.
584
[ 40, 10, 4/5 ]
585
> [LRatio2(E,i) : i in [1..3]];
586
[ 20, 5, 2/5 ]
587
> LAnalytic(E,1)/RealVolume(E);
588
(Using at least 55 terms of q-expansions.)
589
(Using at least 55 terms of q-expansions.)
590
20.0000000000000000000000000008077935669 + 0.E-28*i
591
> // LRatio2 gives the right answer...
592
593
Total time: 139.580 seconds // total cpu time used in this session
594