
// OverconvergentHeckeSeries

time
Pseq:=OverconvergentHeckeSeries(7,3,[1000,1006],5);

assert Eltseq(Pseq[1]) eq [1, -4426, -4675, -700, 6713, -4116, 7203];
assert Eltseq(Pseq[2]) eq [1, 5087, 5160, -3976, 8134, 0, 2401];

time 
Pseq:=OverconvergentHeckeSeries(7,3,[1000,1006],5: WeightBound := 4);

assert Eltseq(Pseq[1]) eq [1, -4426, -4675, -700, 6713, -4116, 7203];
assert Eltseq(Pseq[2]) eq [1, 5087, 5160, -3976, 8134, 0, 2401];

assert OverconvergentHeckeSeriesDegreeBound(7,3,1000,5) eq 9;

time 
P:=OverconvergentHeckeSeries(29,1,10000,10);

assert P eq
134393786323419*t^8 - 174295724342741*t^7 - 174857545225000*t^6 - 153412311426730*t^5 +
41820892464727*t^4 - 148803482429283*t^3 - 111232323996568*t^2 + 165679475331974*t + 1
where t is Parent(P).1;

// Character

eps:=FullDirichletGroup(13).1^4;
assert Order(eps) eq 3;
assert IsEven(eps);

time
P, zeta:=OverconvergentHeckeSeries(7,eps,-4,5); // note 3 divides p-1 here

assert P eq 
2401*t^14 - 2744*t^13 + 3234*t^12 + 5285*t^11 - 2693*t^10 - 6082*t^9 - 2966*t^8
+ 4136*t^7 + 6288*t^6 - 1964*t^5 - 122*t^4 - 8243*t^3 - 5157*t^2 - 8181*t + 1
where t is Parent(P).1;
assert zeta^3 eq 1;

// Large weight

time
P:=OverconvergentHeckeSeries(31,1,12345678910,10);

assert P eq
139626516613325*t^6 - 381703165808925*t^5 + 57324452617590*t^4 + 252464307339952*t^3
- 256421361272967*t^2 + 188709250511024*t + 1
where t is Parent(P).1;

// Small weight

eps:=DirichletGroup(23).1;
time 
P:=OverconvergentHeckeSeries(13,eps,1,5);

assert P eq
-85683*t^29 + 37349*t^28 + 1014*t^27 - 97630*t^26 - 11423*t^25 + 55440*t^24 + 27750*t^23 - 29240*t^22 +
146299*t^21 + 77097*t^20 + 175538*t^19 + 152712*t^18 - 178547*t^17 + 11789*t^16 - 75745*t^15 + 66542*t^14 -
137061*t^13 - 129353*t^12 + 171896*t^11 + 33129*t^10 - 117081*t^9 + 92744*t^8 - 127052*t^7 + 12355*t^6 -
87541*t^5 + 76885*t^4 - 45642*t^3 + 13372*t^2 - 29914*t + 1
where t is Parent(P).1;

