// Make newform 414.4.a.g in Magma, downloaded from the LMFDB on 28 March 2024. // To make the character of type GrpDrchElt, type "MakeCharacter_414_a();" // To make the coeffs of the qexp of the newform in the Hecke field type "qexpCoeffs();" // To make the newform (type ModFrm), type "MakeNewformModFrm_414_4_a_g();". // This may take a long time! To see verbose output, uncomment the SetVerbose lines below. // The precision argument determines an initial guess on how many Fourier coefficients to use. // This guess is increased enough to uniquely determine the newform. // To make the Hecke irreducible modular symbols subspace (type ModSym) // containing the newform, type "MakeNewformModSym_414_4_a_g();". // This may take a long time! To see verbose output, uncomment the SetVerbose line below. // The default sign is -1. You can change this with the optional parameter "sign". function ConvertToHeckeField(input: pass_field := false, Kf := []) if not pass_field then poly := [-2, 0, 1]; Kf := NumberField(Polynomial([elt : elt in poly])); AssignNames(~Kf, ["nu"]); end if; Rf_num := [[1, 0], [0, 8]]; Rf_basisdens := [1, 1]; Rf_basisnums := ChangeUniverse([[z : z in elt] : elt in Rf_num], Kf); Rfbasis := [Rf_basisnums[i]/Rf_basisdens[i] : i in [1..Degree(Kf)]]; inp_vec := Vector(Rfbasis)*ChangeRing(Transpose(Matrix([[elt : elt in row] : row in input])),Kf); return Eltseq(inp_vec); end function; // To make the character of type GrpDrchElt, type "MakeCharacter_414_a();" function MakeCharacter_414_a() N := 414; order := 1; char_gens := [47, 235]; v := [1, 1]; // chi(gens[i]) = zeta^v[i] assert UnitGenerators(DirichletGroup(N)) eq char_gens; F := CyclotomicField(order); chi := DirichletCharacterFromValuesOnUnitGenerators(DirichletGroup(N,F),[F|F.1^e:e in v]); return MinimalBaseRingCharacter(chi); end function; function MakeCharacter_414_a_Hecke(Kf) return MakeCharacter_414_a(); end function; function ExtendMultiplicatively(weight, aps, character) prec := NextPrime(NthPrime(#aps)) - 1; // we will able to figure out a_0 ... a_prec primes := PrimesUpTo(prec); prime_powers := primes; assert #primes eq #aps; log_prec := Floor(Log(prec)/Log(2)); // prec < 2^(log_prec+1) F := Universe(aps); FXY := PolynomialRing(F, 2); // 1/(1 - a_p T + p^(weight - 1) * char(p) T^2) = 1 + a_p T + a_{p^2} T^2 + ... R := PowerSeriesRing(FXY : Precision := log_prec + 1); recursion := Coefficients(1/(1 - X*T + Y*T^2)); coeffs := [F!0: i in [1..(prec+1)]]; coeffs[1] := 1; //a_1 for i := 1 to #primes do p := primes[i]; coeffs[p] := aps[i]; b := p^(weight - 1) * F!character(p); r := 2; p_power := p * p; //deals with powers of p while p_power le prec do Append(~prime_powers, p_power); coeffs[p_power] := Evaluate(recursion[r + 1], [aps[i], b]); p_power *:= p; r +:= 1; end while; end for; Sort(~prime_powers); for pp in prime_powers do for k := 1 to Floor(prec/pp) do if GCD(k, pp) eq 1 then coeffs[pp*k] := coeffs[pp]*coeffs[k]; end if; end for; end for; return coeffs; end function; function qexpCoeffs() // To make the coeffs of the qexp of the newform in the Hecke field type "qexpCoeffs();" weight := 4; raw_aps := [[-2, 0], [0, 0], [-4, 1], [6, 1], [-24, -4], [42, -4], [-52, -3], [14, -3], [-23, 0], [-66, 10], [-4, 10], [-162, 22], [70, -12], [-274, -11], [232, -6], [-168, -41], [-36, 62], [30, -46], [-222, 27], [-336, -56], [-126, 52], [-846, -1], [200, 88], [168, 19], [110, -82], [-78, -40], [-918, -45], [-1176, 8], [-734, 56], [-1192, -97], [1196, -78], [-116, 56], [-504, 83], [-1052, 104], [652, 189], [1616, 112], [1638, -10], [-688, -98], [344, 88], [1550, 18], [3900, 42], [-3438, -16], [1748, -202], [-18, -28], [-1290, 262], [-1982, 243], [176, -438], [696, -132], [5876, 2], [-1798, 144], [-4954, 68], [-2936, 32], [-3242, 190], [956, 402], [-4650, 88], [2524, 250], [-3586, -74], [-2252, -82], [3398, -200], [-1056, 347], [-2118, 263], [-440, -741], [7784, 30], [1584, -442], [4058, 112], [1518, -50], [5208, 46], [-6146, -14], [-2980, -562], [1690, 224], [1562, 418], [-11276, -70], [5234, 255], [-3410, 766], [694, 237], [-1220, 818], [1976, -177], [7350, 160], [-3420, -95], [-7626, -32], [4232, 736], [-3966, -764], [-5752, 660], [9898, 600], [13936, -220], [-3636, -740], [4558, -688], [662, 58], [9670, -162], [13776, 180], [10156, -178], [-3440, 500], [9328, -832], [9052, -694], [-10768, -714], [3240, 464], [-11978, 426], [448, 339], [7714, 1071], [-11686, -356], [12160, 794], [7352, -981], [10788, 466], [-20500, 261], [6090, -1029], [-6978, 740], [1508, 2192], [4774, -1364], [-8096, 272], [-4458, 1076], [1520, 2252], [14686, -966], [-1232, -1145], [-22310, -297], [-1254, 27], [17308, 1005], [8998, -123], [-12200, 1030], [-8182, 492], [8860, -1234], [-23658, -842], [-7290, -1348], [-20356, -867], [-644, 20], [7272, -1122], [7052, -1935], [11682, 320], [-2208, -2114], [3342, -731], [-4494, 1824], [-7812, 548], [19988, 1218], [-10722, -171], [-62, -3128], [-12494, 730], [9986, 1184], [-4236, -419], [-21018, -1115], [-29128, -817], [-8894, 2134], [-1040, 950], [-15862, 604], [38172, 386], [-23676, 190], [13434, 2220], [-5020, -2258], [17902, 240], [-19474, 1584], [-7580, -2400], [-12624, 306], [-2378, -300], [-8632, -69], [-13848, -2774], [664, -2830], [3170, -1045], [2688, -2280], [3210, -4001], [-23122, 1932], [-13230, -1284], [-17820, 2201], [23708, 914], [1572, 785], [9692, -2826], [-7340, 4134], [-31232, -2241], [-13912, -2520], [6228, -2654], [-13534, -1960], [-38530, 222], [42346, -1496], [16684, -3190], [29750, 700], [-9420, 898], [37470, 618], [5172, -5394], [20860, -123], [-36484, 732], [-6302, -4692], [4602, -77], [45286, -950], [-40740, -2502], [25444, -3242], [-13498, 2072], [-43270, -2206], [47008, -1648], [20328, -1445], [49686, 120], [28878, 1185], [-12078, 3332], [9760, 5162], [13906, -3992], [13708, 5044], [27342, -1535], [15394, 3900], [-26456, -1056], [-12748, -2587], [35122, 972], [-14198, 2556], [-14964, 1241], [7344, -4772], [9776, 5439], [4884, -4766], [58294, -1368], [26622, -806], [-20336, -2424], [-14626, -3938], [-72154, -1291], [65460, 1814], [25302, -2280], [17056, 2266], [20002, -1392], [-43894, 880], [-53154, 3265], [-13016, 2000], [35728, -504], [-8134, -424], [-23120, 68], [-28486, -3978], [22792, -1240], [21618, -1520], [47234, 3036], [-17970, 2409], [57202, 418], [-6510, -3997], [-38644, -4844], [-60134, -612], [3952, -985], [-70336, -1290], [-24282, -4571], [-49540, -308], [89706, -564], [-71982, 1791], [14950, 4833], [4210, -790], [16490, -1065], [68384, 1680], [-70682, -110], [22456, -2581], [-13852, 2692], [-53976, 342], [-40820, 1742], [60960, 3098], [21852, 1378], [-27566, 5260], [42286, 204], [-10784, -4524], [-79900, -230], [-43896, -656], [-2502, -1145], [13656, -4244], [-50094, -4400], [-44460, 2213], [-74324, 1854], [14142, 1610], [27138, -4192], [-8876, -3196], [6826, 9204], [-51542, 2283], [29670, 5530], [6710, -1020], [-63982, -4445], [-30944, 152], [45190, 3576], [-30682, 3954], [39086, 780], [18994, 4415], [-92856, 807], [-8924, -3039], [48410, -6761], [44494, -4194], [-11834, -6260], [29078, 2861], [-28690, -3082], [15734, 10377], [14426, 1676], [-65792, 6068], [-22268, 2682], [78982, 272], [12370, -20], [-61224, -152], [39544, 7390], [-32622, 6255], [-17220, -2250], [-26898, 1202], [-59752, 5458], [-8152, -11350], [-105802, 1190], [39968, 5227], [-21712, 9584], [55578, -6146], [-17412, -3583], [79560, 2884], [-1390, 2998], [18396, -10742], [-16886, 10208], [27076, -5535], [-41554, 2945], [40034, 3232], [5316, -3512], [19140, 2192], [49074, -1716], [-68712, 3915], [15894, -13091], [-38932, -3794], [37054, -3063], [-45826, 5236], [40524, -2352], [61858, -8008], [82452, -4362], [54074, 5932], [-8912, -3838], [5072, 1839], [50264, 7723], [-16068, 196], [19448, 3316], [74102, -1986], [-97740, -5176], [10984, -994], [-46666, 3194], [-11234, -4820], [-39442, 12057], [-77110, 8316], [87842, 3180], [26456, 2104], [-104860, 7033], [91590, 1666], [15534, -7135], [20348, -6236], [40824, 7816], [45584, 3111], [13598, -5792], [-108830, -876], [-368, 3772], [4884, 7896], [-55566, 3531], [133740, 2334], [22142, 2794], [-95208, -4925], [17942, -4884], [-91334, -2921], [-9222, 7004], [41540, -1483], [-93430, -5584], [10878, -10139], [-109284, -1659], [94980, -5068], [-71758, 12236], [80608, 7814], [-122672, -3568], [-10288, 2775], [172, 11484], [63862, 840], [-142802, 3498], [99962, -7749], [-19058, -13270], [-9254, 10746], [-45324, -1402], [147988, 6186], [176450, -1802], [-91112, 7222], [-14258, -5554], [-116054, -3406], [-43136, -2424], [40580, -9126], [48548, -1052], [49386, -13464], [-25830, 3988], [25802, -2305], [-75438, -5780], [139796, -4286], [-34224, -6886], [37208, 12724], [-100948, 12245], [-228654, 943], [-127114, 9464], [-19676, -8420], [159448, 688], [-112622, 9988], [121624, 3611], [59302, 10860], [59464, -13777], [-64112, -8129], [67948, -5994], [-82890, 3852], [115518, 7901], [-96984, -7628], [-10916, 12142], [-15466, -19312], [114418, 4951], [-40504, 13136], [71638, -222], [66414, 8026], [-14532, 7186], [106392, -4602], [18784, 7448], [-73530, 7602], [33862, -1383], [-204256, 4419], [-189850, 2897], [20706, -220], [117158, 3176], [-60094, -16182], [-2702, -8481], [-60388, 15941], [-70678, -18044], [-9216, -10288], [207874, 2860], [58042, 6082], [94362, 1635], [-131028, -11306], [-52698, -1932], [-1486, -10676], [-230072, 20], [-188318, -7749], [27934, -16670], [-80130, -16326], [-20392, 9154], [-3668, 7306], [-95544, -4197], [-107788, -1610], [39608, -1161], [-93490, -9510], [-237640, -2164], [7804, 16578], [-886, 20680], [181514, 7004], [-110836, -11086], [108326, -8160], [69400, -16618], [14656, 7638]]; aps := ConvertToHeckeField(raw_aps); chi := MakeCharacter_414_a_Hecke(Universe(aps)); return ExtendMultiplicatively(weight, aps, chi); end function; // To make the newform (type ModFrm), type "MakeNewformModFrm_414_4_a_g();". // This may take a long time! To see verbose output, uncomment the SetVerbose lines below. // The precision argument determines an initial guess on how many Fourier coefficients to use. // This guess is increased enough to uniquely determine the newform. function MakeNewformModFrm_414_4_a_g(:prec:=2) chi := MakeCharacter_414_a(); f_vec := qexpCoeffs(); Kf := Universe(f_vec); // SetVerbose("ModularForms", true); // SetVerbose("ModularSymbols", true); S := CuspidalSubspace(ModularForms(chi, 4)); S := BaseChange(S, Kf); maxprec := NextPrime(2999) - 1; while true do trunc_vec := Vector(Kf, [0] cat [f_vec[i]: i in [1..prec]]); B := Basis(S, prec + 1); S_basismat := Matrix([AbsEltseq(g): g in B]); if Rank(S_basismat) eq Min(NumberOfRows(S_basismat), NumberOfColumns(S_basismat)) then S_basismat := ChangeRing(S_basismat,Kf); f_lincom := Solution(S_basismat,trunc_vec); f := &+[f_lincom[i]*Basis(S)[i] : i in [1..#Basis(S)]]; return f; end if; error if prec eq maxprec, "Unable to distinguish newform within newspace"; prec := Min(Ceiling(1.25 * prec), maxprec); end while; end function; // To make the Hecke irreducible modular symbols subspace (type ModSym) // containing the newform, type "MakeNewformModSym_414_4_a_g();". // This may take a long time! To see verbose output, uncomment the SetVerbose line below. // The default sign is -1. You can change this with the optional parameter "sign". function MakeNewformModSym_414_4_a_g( : sign := -1) R := PolynomialRing(Rationals()); chi := MakeCharacter_414_a(); // SetVerbose("ModularSymbols", true); Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,4,sign))); Vf := Kernel([<5,R![-112, 8, 1]>,<7,R![-92, -12, 1]>],Snew); return Vf; end function;