// Make newform 69.6.a.e in Magma, downloaded from the LMFDB on 29 March 2024. // To make the character of type GrpDrchElt, type "MakeCharacter_69_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_69_6_a_e();". // 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_69_6_a_e();". // 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 := [2197, 1404, -257, -113, 0, 1]; Kf := NumberField(Polynomial([elt : elt in poly])); AssignNames(~Kf, ["nu"]); end if; Rf_num := [[1, 0, 0, 0, 0], [0, 2, 0, 0, 0], [5941, -499, -700, -13, 7], [4511, -419, -56, 13, -1], [18005, 11821, -1676, -221, 23]]; Rf_basisdens := [1, 1, 468, 117, 468]; 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_69_a();" function MakeCharacter_69_a() N := 69; order := 1; char_gens := [47, 28]; 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_69_a_Hecke(Kf) return MakeCharacter_69_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 := 6; raw_aps := [[2, 0, -1, 0, 0], [9, 0, 0, 0, 0], [18, -3, 3, 1, 1], [52, -5, 5, 0, -1], [212, 0, 14, -5, -6], [-182, -22, -33, -10, 1], [478, 13, 71, 8, 5], [400, 35, 53, -9, 23], [-529, 0, 0, 0, 0], [198, 90, 242, -96, -26], [-1344, 50, -316, -36, 20], [-1442, 114, -530, -9, -30], [3754, -132, 1036, 34, -204], [-784, 135, -295, 361, 19], [540, 1116, -921, -102, 161], [-1846, 235, -1461, -55, -335], [14872, 1416, 419, 324, 261], [-9650, 242, 1860, 133, 44], [-2152, -563, 4643, 47, -31], [6648, -4352, 2272, -58, -64], [7914, 1156, 3552, -88, 64], [11836, 4233, -4569, 624, -251], [21124, -1080, -7684, 781, 332], [59454, 2883, -8269, -558, 161], [20826, 1122, -7270, -958, -242], [-11250, -1932, -7186, -2664, 1026], [-15228, -6963, -4461, -2450, -487], [43092, 6188, -1082, -1299, 642], [96358, 932, -1126, 2477, -1042], [61334, 8895, -10609, -106, -1995], [-7056, 7778, -3788, -440, 1476], [-12340, -4236, -6306, 5974, -270], [-79954, -7437, 23673, -712, 1339], [-43772, -4932, 26562, -1796, -1458], [138754, 15169, -11651, 2657, 1575], [-66920, 16160, -280, 6232, 4552], [-102826, -206, 3346, -6765, 3550], [22332, 17730, -38098, -4454, -6678], [95824, -19996, -694, -3178, 150], [-27834, -1574, -28454, 2080, -2242], [109928, -6104, 52569, 154, -4177], [38982, -4200, -30812, 1, -1628], [53472, 4106, 10228, -2610, -3356], [-223762, -8646, -21725, 6260, -515], [-548514, -12690, 2370, -978, -314], [-101780, 17697, 32891, -9644, -1103], [-164924, 38370, -68, -1658, -10084], [-436472, -19824, -37606, -4152, 6694], [265108, -17394, -85600, -8661, 2096], [-335618, 53396, 31194, 773, -5618], [-78462, 8520, -65930, 13664, -9446], [566264, -44044, 25330, 8184, -946], [-344014, -22802, -76112, -506, 16696], [-145852, -55046, 100974, 2185, 9362], [20498, -9040, -14500, 31210, -3660], [509784, -30194, -48256, 2040, 13336], [-889834, -15242, 79774, -9270, -3702], [443808, -59218, 35864, 18092, 6992], [-500954, 11032, -162528, 11614, -15024], [57694, 34427, -53643, -24470, 9263], [175136, 22025, 40667, 21625, -13591], [-451974, 983, 27561, -45567, -13197], [282116, -142930, 43864, -19614, -13312], [1107220, 16416, 97643, -19200, 23661], [-519966, 64236, -96322, -13318, 17778], [1424846, 53450, 6248, -8300, -12256], [2052852, 8834, -94874, -17758, -9662], [-458678, 72926, 91222, -18324, -18318], [486960, 72228, -21975, -10562, 43663], [-2132774, 38110, 78327, 1456, 4361], [-134, -81838, 24930, 41544, 44438], [320616, -81250, 145680, -26746, 1112], [1598076, -111367, 29579, -21980, -7487], [-1455762, -114398, 215346, 47143, 24830], [-113616, -126713, -49875, -51673, -27473], [-235928, -69902, 100878, -4796, -41654], [466922, 209387, 22677, 58879, 18887], [-70818, 146704, -40384, -25592, 16320], [1867166, 9081, -118233, -60428, -26315], [942974, -45454, 262233, -54588, 14103], [-1667132, -22280, 277368, 2921, -21424], [-577594, -60308, 83432, 8363, -12768], [-465592, 172800, -342086, -69046, -39962], [471890, 31352, 161668, 53574, -63508], [-12688, -243616, 77242, -9020, -14874], [596780, 207116, -53572, -27896, 13268], [6362, -32212, -279534, -6782, -12258], [-136950, -260254, -57980, -52926, -46284], [233038, -27990, 28084, -178114, -22764], [-1465232, -189436, 12796, 95112, -6012], [-3047220, 130022, -101502, 4729, -20530], [-1320200, -87216, 321102, 16504, 34370], [-3004696, 27456, 446440, -73204, -23800], [3343256, 159204, -348601, 64930, 5505], [1566332, -124574, -472334, 6186, -28154], [-638544, 381252, 279850, 60582, -18554], [-1261778, 74014, 53252, 154628, 7348], [2696078, -220029, -340001, -2240, 33509], [-1356464, -158095, 536759, 13067, -4675], [328658, -176202, 684813, 64468, 15651], [3708884, 133218, 18672, -32194, 80232], [-5273182, 367647, -739047, 45283, -11181], [-976300, -476122, 867872, 63595, -62960], [6805094, 311661, 619321, 16224, 120003], [-1507688, -11031, -71825, -35689, 136229], [-2122514, 19634, -25613, 48628, -59267], [2641844, -302724, 68518, 17194, 65450], [-1693894, 54168, -451774, -37622, 166686], [-4295424, -162172, 19034, 71900, -28058], [-1440042, 531050, -711025, 32876, 35361], [-5585024, -77172, 452268, -76152, -50540], [-3998146, -109618, 233114, 17505, -22666], [-359650, -606361, -565369, -103502, -73283], [295432, -439707, 98167, 116825, 142013], [3187804, 368841, 675247, 14146, 108397], [42126, 189645, 907555, -131084, 6249], [10116504, -17193, -162983, 33913, 86035], [-717268, 424180, 274085, 37360, 70995], [4467054, 694892, 113308, 131104, 82084], [8028236, 245742, -1419346, -183715, -41598], [1195134, 189314, -879462, -45947, -201370], [2090790, -498058, -995415, -92688, 68551], [6430482, -316079, 1340729, -23523, -85461], [-5613484, 138728, 1396822, -31558, 65066], [3423716, -1008634, 500844, -88282, -45604], [4877274, -169011, 258547, -128169, -48767], [12297854, -99452, -1040778, -159501, -68190], [-10327164, 601092, -549015, 47196, 56719], [-261956, -706725, 419861, -262156, 19567], [4437598, -534040, 1372404, -73629, 227300], [11049972, -792868, 318304, 149264, -21232], [-4794080, 186810, 646782, 374276, 42138], [3771340, 278959, -382055, -188474, 86379], [3985606, -34600, 1413232, -46611, -10472], [10571234, 425170, 108114, 273592, 99046], [3929114, -43132, -249970, -102338, -29758], [3816082, -19503, 94869, 32895, -241825], [1768424, 267063, 1152129, 355125, 184779], [7196514, -270413, -644525, 177747, 189753], [-7060598, -260318, 729860, -47512, -63740], [7576876, 356246, -2595628, -138818, -87596], [4081502, -386656, -75246, -339452, -250674], [-6694416, 598230, 802138, 167592, -329122], [-5122876, -1167962, 1811774, 130033, 54130], [8676674, -77234, 887497, 360520, 229831], [-3589672, -461134, 1460576, -171692, 105512], [-14338762, -602496, 1505108, -23936, 159148], [5935170, 931572, 11054, 296892, 245298], [14759076, -181564, -368286, -24604, -191810], [-5819668, -116004, -794545, -552512, 26617], [13538910, -108948, 492360, 212626, 381368], [5913558, -1257213, -1397943, 353754, 43739], [3291132, 765950, -1215094, -318290, -73138], [-11780948, 915848, -97431, -15706, -116641], [1732416, 1329701, -1198461, 86577, -233231], [9853576, -112556, -196342, 448946, 246950], [6950060, -801563, 1292479, 421060, 313309], [14622210, -1349292, -509256, -74850, 201928], [-6465526, 52940, 459240, 134064, 59816], [8352986, 558957, 1149851, -720707, 27017], [-2211480, -830464, 858425, -52802, 225775], [18312022, 521561, 1693893, 60076, 134055], [-11518216, -765722, 2016556, -283928, -13220], [-668148, 740834, -4499560, 242523, 76360], [-12916506, -1637257, 1138523, -48564, 316089], [-10209680, -831660, 560602, 533246, 396246], [-10602632, 1006886, 4096682, 587132, 3086], [-2578558, 787302, -2722585, 239976, -215591]]; aps := ConvertToHeckeField(raw_aps); chi := MakeCharacter_69_a_Hecke(Universe(aps)); return ExtendMultiplicatively(weight, aps, chi); end function; // To make the newform (type ModFrm), type "MakeNewformModFrm_69_6_a_e();". // 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_69_6_a_e(:prec:=5) chi := MakeCharacter_69_a(); f_vec := qexpCoeffs(); Kf := Universe(f_vec); // SetVerbose("ModularForms", true); // SetVerbose("ModularSymbols", true); S := CuspidalSubspace(ModularForms(chi, 6)); S := BaseChange(S, Kf); maxprec := NextPrime(997) - 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_69_6_a_e();". // 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_69_6_a_e( : sign := -1) R := PolynomialRing(Rationals()); chi := MakeCharacter_69_a(); // SetVerbose("ModularSymbols", true); Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,6,sign))); Vf := Kernel([<2,R![-6440, 1740, 770, -107, -8, 1]>],Snew); return Vf; end function;