// Make newform 441.6.a.k in Magma, downloaded from the LMFDB on 28 March 2024. // To make the character of type GrpDrchElt, type "MakeCharacter_441_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_441_6_a_k();". // 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_441_6_a_k();". // 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 Kf := Rationals(); end if; return [Kf!elt[1] : elt in input]; end function; // To make the character of type GrpDrchElt, type "MakeCharacter_441_a();" function MakeCharacter_441_a() N := 441; order := 1; char_gens := [344, 199]; 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_441_a_Hecke(Kf) return MakeCharacter_441_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 := [[10], [0], [-56], [0], [-232], [140], [-1722], [98], [-1824], [-3418], [7644], [-10398], [-17962], [10880], [9324], [-2262], [-2730], [-25648], [-48404], [58560], [-68082], [31784], [-20538], [-50582], [58506], [38696], [-53060], [146324], [92898], [83354], [60384], [-61586], [204462], [35406], [20226], [70904], [-293524], [13192], [493612], [240716], [-294932], [336980], [-358264], [-989554], [990050], [840756], [1150732], [824264], [74382], [-1131956], [198726], [-482904], [-805910], [430738], [-1176910], [-1290976], [-1277556], [-1650544], [-1064090], [22342], [2495738], [-1931776], [459074], [667128], [111034], [68778], [-564448], [2077294], [53248], [2272004], [4006450], [-73784], [-1404312], [-1603234], [-4770120], [-2230788], [-4840242], [-995820], [3316050], [-3072734], [2814378], [3058022], [-1937496], [-3947902], [7417704], [-1402692], [590574], [-2904842], [-922684], [7182352], [-612570], [2603300], [5463088], [-1640900], [2997964], [-6894048], [2304764], [-12096042], [-5484430], [-6717994], [-5002352], [-9019606], [12405106], [-6488038], [-10228504], [-2653378], [-14304374], [-10026534], [7522920], [-3386250], [6908608], [-9688958], [7847418], [10197194], [-8362576], [-1102830], [-17135426], [-54964], [485166], [2721360], [2145248], [2927962], [-13499220], [5429724], [-20827982], [-23514066], [-19574670], [-26115180], [-15412628], [16986816], [2015112], [15138072], [7214008], [-10969726], [19244190], [-8211854], [18618656], [-26250070], [-10037300], [-14088390], [-18143342], [21366922], [17801736], [-16292124], [2084992], [-22784972], [22697500], [25289950], [10394734], [-43339944], [37165930], [9047850], [32967860], [-16109884], [-44728564], [6605184], [-30892984], [-4872154], [32500398], [-2640400], [40817920], [6719830], [-2789792], [33359382], [7600326], [-5797596], [12682496], [-14440048], [18092062], [22403444], [-34508244], [44165100], [30609120], [38484314], [44520700], [257138], [59523340], [22872926], [-4836048], [-20101648], [48438632], [8380722], [-8781526], [-55221334], [24112416], [49001372], [21272014], [46715858], [-21571406], [-24855572], [10607198], [23972940], [59591060], [8304660], [47556620], [-44726766], [-74355154], [23852154], [-28848582], [39241272], [-84534542], [44247364], [-38851680], [-3423994], [27462974], [8690528], [64587348], [100377000], [-48181758], [81147878], [34800798], [78811320], [-80858888], [119242438], [-26281192], [30786098], [-12981520], [-17168690], [-82294552], [-38844066], [39004298], [18673592], [107391406], [-40512328], [-73902850], [1292090], [-83139014], [111017416], [-33647936], [-129603576], [-60555662], [-104136298], [-128450320], [75229286], [-967806], [79222752], [31922618], [13235218], [-164366820], [-104915104], [-8644224], [5004594], [-107111424], [-44996402], [51457098], [40091884], [-96799696], [74500958], [19835824], [6698928], [-56812810], [-40764318], [148621136], [-191741578], [31644256], [95297884], [-30936982], [-21917322], [26097288], [52424722], [47141480], [80432728], [180053944], [-107736608], [-167100682], [128458246], [-195434598], [205197034], [40600156], [-91592698], [225295700], [-27045472], [-63156226], [-50706064], [83362958], [-183398768], [41668448], [-197576826], [121702270], [-219184042], [-230757352], [221800776], [-126392812], [-94076080], [175669858], [-109289184], [-66225662], [7902018], [-19624052], [-264054126], [64562210], [202322134], [222052554], [-308761362], [213825166], [-11334260], [-220325056], [-45937444], [141016610], [-167678210], [104608770], [-111088338], [204266560], [-284189992], [221365008], [-155685318], [88282704], [-4863432], [-58199488], [49163734], [-317400888], [-216655874], [-215030442], [-21138984], [-174142880], [220327030], [-85163694], [574272], [259941542], [131108766], [349363462], [-228141518], [336301056], [340445240], [-424471734], [-149519230], [243529360], [223287106], [78842368], [98475606], [23920390], [179971854], [140698852], [-178786566], [154289500], [94839262], [-224401630], [142325106], [34959526], [-167101228], [371490526], [331416202], [391310892], [69891712], [-398783522], [385410464], [41030612], [-133867016], [-427945224], [-16480912], [22770398], [-390482406], [387706898], [-367437084], [299869630], [191548322], [452285988], [59806278], [24271726], [-172440144], [-51410994], [-504028910], [-47305728], [-386245052], [-405410558], [470445238], [-295903636], [-285156080], [379937574], [30924732], [-50440194], [90990672], [574960146], [196823704], [87416662], [61511758], [251584856], [-300748826], [-226639434], [28085442], [-559059844], [-209207238], [-294887192], [-373394834], [-150627330], [-425925304], [-388792984], [537651128], [136029380], [-88376820], [548920990], [-372194088], [218913540], [717856006], [-229114568], [710761570], [-376944820], [610986726], [-104995812], [659115582], [-714635936], [580539214], [-163865264], [-4963938], [-17774988], [-40778500], [431984526], [-392830622], [-37552634], [-591109806], [362159014], [244222198], [199454008], [-131868068], [-505194198], [259521444], [-418838760], [-3455732], [-575293194], [738623424], [-620411058], [-37535008], [75936208], [-688612582], [-300982262], [-763452984], [-556018432], [-182454666], [-836521434], [494044572]]; aps := ConvertToHeckeField(raw_aps); chi := MakeCharacter_441_a_Hecke(Universe(aps)); return ExtendMultiplicatively(weight, aps, chi); end function; // To make the newform (type ModFrm), type "MakeNewformModFrm_441_6_a_k();". // 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_441_6_a_k(:prec:=1) chi := MakeCharacter_441_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(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_441_6_a_k();". // 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_441_6_a_k( : sign := -1) R := PolynomialRing(Rationals()); chi := MakeCharacter_441_a(); // SetVerbose("ModularSymbols", true); Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,6,sign))); Vf := Kernel([<2,R![-10, 1]>,<5,R![56, 1]>,<13,R![-140, 1]>],Snew); return Vf; end function;