Author: William A. Stein
1For this to work, you'll have to make the following two modifications:
2
31) In dirichlet.m (in the modsym distribution):
4
5In this intrinsic:
6  intrinsic DirichletGroup(m::RngIntElt,R::Rng,z::RngElt,r::RngIntElt) ->
7GrpDrch
8  {The group of Dirichlet characters mod m with image in the order-r cyclic
9   subgroup of R generated by the root of unity z.}
10   //...
11
12modify the require statement like this:
13
14   if not (Type(R) in {FldLoc, FldPr}) then
15      require z^r eq R!1 : "Argument 3 must have order equal to argument 4.";
16
17   end if;
18
19Now you can happily create characters of giagantic degree, and you don't
20have to bother with cyclotomic polynomials.
21
222) In dims.m, replace DimensionCuspForms by the following:
23
24intrinsic DimensionCuspForms(eps::GrpDrchElt, k::RngIntElt) -> RngElt
25{Compute the dimension of the space of cusp forms of weight k and
26character eps.}
27   require Characteristic(BaseRing(eps)) eq 0 :
28      "The base ring of argument 1 must be of characteristic 0.";
29   requirege k,2;
30   N := Modulus(eps);
31   if IsTrivial(eps) then
32      return S0(N,k);
33   end if;
34   if (IsOdd(eps) and IsEven(k)) or (IsEven(eps) and IsOdd(k)) then
35      return 0;
36   end if;
37   ans := idxG0(N) * (k-1)/12 + CohenOesterle(eps,k);
38   if Type(ans) in {FldRatElt, FldCycElt} then
39      return Integers()!ans;
40   end if;
41   return ans;
42end intrinsic;
43