// Make newform 2475.4.a.l in Magma, downloaded from the LMFDB on 28 March 2024. // To make the character of type GrpDrchElt, type "MakeCharacter_2475_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_2475_4_a_l();". // 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_2475_4_a_l();". // 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 := [-4, -1, 1]; Kf := NumberField(Polynomial([elt : elt in poly])); AssignNames(~Kf, ["nu"]); end if; Rfbasis := [Kf.1^i : i in [0..Degree(Kf)-1]]; 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_2475_a();" function MakeCharacter_2475_a() N := 2475; order := 1; char_gens := [551, 2377, 2026]; v := [1, 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_2475_a_Hecke(Kf) return MakeCharacter_2475_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 := [[-3, -1], [0, 0], [0, 0], [17, -9], [11, 0], [30, -10], [-67, -17], [21, -45], [26, -4], [75, 71], [129, -117], [301, -43], [150, -156], [108, -156], [-74, 100], [143, -169], [122, -158], [-137, 119], [-208, 150], [-763, -61], [-6, -58], [-590, -114], [-414, 270], [867, 43], [-60, 454], [694, -460], [316, 218], [376, -100], [-610, 400], [-608, 446], [-968, 128], [-1361, 121], [-876, 1002], [-100, 1128], [-919, -67], [2514, -738], [-859, 1161], [637, -699], [-417, -267], [-2026, -134], [-1944, 280], [626, -416], [4180, 308], [-249, 629], [1284, 356], [-1237, 265], [-151, -1113], [918, -692], [2766, -926], [666, -452], [-3675, -1253], [-26, -1166], [4398, -504], [2694, -726], [-4514, -1180], [1773, -3129], [-5884, 1658], [-1344, 832], [-500, -568], [2618, 968], [1998, 2026], [154, 2434], [-1342, -1382], [-3033, 73], [126, -3176], [-1215, 2297], [-636, 1256], [1413, 2631], [-7038, 1410], [2902, -612], [-430, 1888], [9412, -308], [-1932, 2154], [-8570, -502], [-5310, -2158], [5946, -3112], [6102, -2000], [-6406, 4456], [9649, 2317], [6300, 3438], [8752, -2824], [1056, 1398], [7072, 1720], [-10640, 170], [-5044, -732], [-10756, 3062], [2590, -560], [7913, -4161], [-2251, -3503], [-5226, -4204], [-5065, 4583], [16992, -2112], [-6764, 6786], [3611, 5597], [4140, -5680], [5240, 812], [-9828, 862], [16266, -1504], [-1400, 1532], [7113, 1233], [6760, -5688], [2866, -8282], [3058, -1262], [-13816, 6646], [-9501, -843], [4546, 3264], [12301, 5905], [5286, 18], [9191, 5129], [-11446, 10524], [67, -2839], [-4494, 2862], [-8648, 478], [6684, 1196], [-13197, 7461], [28581, -1227], [-3651, 1125], [23518, 896], [-12967, -67], [-975, 7839], [7938, -15472], [21151, 765], [-7380, -3776], [25241, 1289], [-2102, 3350], [4105, -9847], [11878, -1876], [-22621, 173], [-8522, 10116], [29992, -3168], [-2488, 6516], [-2553, -539], [5333, 6723], [20946, -12640], [-4134, 14364], [11902, -7992], [-22813, -2477], [7948, 216], [16506, 8180], [10326, -11076], [-18289, 7497], [-16982, 700], [30968, 2718], [34096, -1724], [10236, 7362], [-12192, -10384], [-9030, 20286], [14101, -6545], [1038, -10166], [-5606, 12928], [-2670, 11190], [22510, 2740], [40551, 3883], [3848, 12736], [8577, -9255], [441, -5613], [-7208, -13152], [3473, 3389], [3474, 4794], [-3649, 3071], [47029, 1097], [-4805, -3139], [9943, 11277], [7576, 1508], [-33012, 8170], [-18082, -2116], [-17496, -456], [-3872, -8064], [8898, -9796], [-22485, 13299], [-24069, -11611], [5542, 4028], [-5486, 7598], [-27825, 15401], [-8000, 13188], [8113, 18697], [-38780, -4848], [-31124, -6850], [-32733, -12051], [16371, 12567], [-17398, -2144], [-12585, -3935], [-40141, 4971], [22689, 11135], [19058, -24532], [-6450, 30624], [-16124, 4748], [-49500, -6042], [24094, -1828], [-56344, -5752], [-15744, -8238], [18188, -7660], [24602, -15186], [30660, -1670], [-16124, 14828], [26258, 15200], [9312, -10794], [11814, 1848], [29314, -12358], [-65787, 9471], [25691, -19345], [25294, 10002], [-23717, 28623], [12936, 18438], [30140, -6916], [-50429, 16039], [46888, -4600], [-15096, -16812], [3982, -4868], [-26936, 6644], [-68439, 14007], [19532, 10054], [35460, -12334], [1629, -25911], [66944, 2072], [-25513, 36019], [20803, -23979], [-47990, -3268], [-31368, 3582], [-36667, -16343], [-34650, 17012], [12442, 26030], [35455, 3419], [-65468, 7506], [26512, 724], [-31409, 21939], [-29582, 24220], [-14623, -25925], [26904, 6072], [2204, 22208], [28310, 13380], [61815, 777], [-38778, 19258], [65098, -2120], [-38412, 12118], [71037, -23813], [16007, 31455], [53974, -11858], [2484, -6328], [9243, 26057], [7101, -23151], [5548, 10320], [-2284, -35478], [-4458, 6308], [16482, -50926], [-16046, -36514], [6300, 11210], [14526, -10542], [-22463, 4287], [7029, 11959], [36114, -15574], [9660, 30386], [-45202, 50456], [51951, -1917], [-105304, -3584], [-47673, 16577], [1468, -15594], [77910, 14930], [-41562, 50120], [92605, -1933], [-89840, 10472], [-54084, -4044], [-91717, 12171], [-28734, 44098], [-1676, -16186], [91472, -1076], [52448, 19294], [43515, 13631], [10008, 22912], [-39806, 10906], [22526, -37320], [-46209, -33933], [-51720, -30894], [-5482, 1866], [-35325, -27771], [-3406, 39976], [-37944, 8842], [-66078, -25032], [-84418, 21264], [11477, -6469], [-35769, -6515], [-34828, 19284], [37200, 372], [83879, -14517], [97732, 17172], [-74537, -17131], [36418, -18888], [-44514, -10650], [74943, 17049], [40830, -22568], [-8612, -39646], [43500, -51430], [-69135, 1927], [-26559, -5985], [108878, 5238], [56710, -14540], [-15264, -15108], [-26443, 6905], [-30412, 22904], [-74702, 16026], [-19503, 6911], [20292, 34572], [36540, 8380], [42948, -2526], [95674, -25158], [33552, 50302], [67068, -48602], [109440, -28578], [33971, 27413], [149240, -15768], [25772, 30184], [7638, -62164], [15484, -58550], [-62739, -24095], [-70745, 48709], [20438, -36192], [32706, 19558], [-108408, 13888], [59218, -34272], [79524, -17406], [7335, -77615], [-125598, 21704], [-5202, 20736], [-58938, 82548], [117835, -28499], [42223, 6279], [-61786, 84546], [-59636, -15246], [-7261, 11261], [16080, 22064], [162337, 6549], [-34014, -34620], [-41928, -32712], [-55014, 61458], [15693, 12659], [-2241, -24853], [386, 15888], [-51803, 62075], [-153871, 14293], [-42235, -12477], [22134, -47412], [44042, 4016], [-135041, 33319], [-90069, 23001], [-154769, -21233], [-102467, 54443], [68628, -36330], [-47693, -60333], [40692, -7492], [125865, 22621], [73481, -25385], [-79678, 6588], [-9492, -58962], [28643, -36531], [52783, 27255], [118299, -52311], [-27445, -52255], [8841, 32351], [-47354, 21070], [42668, -56018], [64554, -29406], [-63648, -23474], [75124, 20342], [-45567, 82487], [83501, -1143], [25888, -1830], [54386, -40810], [41445, -21377], [21008, -34922], [-58504, 488], [25148, 25020], [-57808, 58432], [-66775, 65861], [-49426, -44390], [23178, -79632], [-98440, -3952], [47190, -23830], [101035, -53371], [82040, 20710], [92513, -39969], [-84616, 6394], [-48514, 1364], [-3124, 76932], [46811, 17657], [-3744, 48300], [-61320, 7290], [19848, -78772], [-24237, -10845], [-58644, 65928], [-92194, 39128], [118393, -29995], [17881, -1859], [-82920, -11100], [-51888, 41670], [54824, -35068], [1438, 57438], [7970, -68130], [48077, -66619], [22618, -49282], [58353, -64951], [88657, 51609], [-133838, 48940], [42980, -15720], [-193776, -23358], [-27798, 107496], [-27574, -72546], [3183, 42775], [-35174, 69916], [152759, -8457], [50822, -44522], [-103650, 71454], [76832, -43924], [-159732, 20030], [170084, -2336], [126882, -95530], [-32456, -38258], [-59932, 74492], [-191432, 21714], [-82578, -59652], [-80893, 21229], [-5364, -99178], [-51480, -67068], [64764, -146222], [197867, -26779], [35362, -66012], [121041, 74637], [61917, 75137], [-23896, 8558], [11820, -97740], [-250342, 28894]]; aps := ConvertToHeckeField(raw_aps); chi := MakeCharacter_2475_a_Hecke(Universe(aps)); return ExtendMultiplicatively(weight, aps, chi); end function; // To make the newform (type ModFrm), type "MakeNewformModFrm_2475_4_a_l();". // 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_2475_4_a_l(:prec:=2) chi := MakeCharacter_2475_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_2475_4_a_l();". // 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_2475_4_a_l( : sign := -1) R := PolynomialRing(Rationals()); chi := MakeCharacter_2475_a(); // SetVerbose("ModularSymbols", true); Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,4,sign))); Vf := Kernel([<2,R![8, 7, 1]>,<7,R![-188, -25, 1]>,<29,R![-9214, -221, 1]>],Snew); return Vf; end function;