// Make newform 1600.3.b.w in Magma, downloaded from the LMFDB on 28 March 2024. // To make the character of type GrpDrchElt, type "MakeCharacter_1600_b();" // To make the character of type GrpDrchElt with Codomain the HeckeField, type "MakeCharacter_1600_b_Hecke();" // To make the coeffs of the qexp of the newform in the Hecke field type "qexpCoeffs();" // To make the newform (type ModFrm), type "MakeNewformModFrm_1600_3_b_w();". // 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_1600_3_b_w();". // 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 := [1, 0, 14, 0, 9, 0, 1]; Kf := NumberField(Polynomial([elt : elt in poly])); AssignNames(~Kf, ["nu"]); end if; Rf_num := [[1, 0, 0, 0, 0, 0], [0, 2, 0, 0, 0, 0], [-9, 0, 20, 0, 4, 0], [0, 76, 0, 40, 0, 4], [51, 0, 40, 0, 4, 0], [0, -194, 0, -140, 0, -16]]; Rf_basisdens := [1, 1, 5, 5, 5, 5]; 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_1600_b();" function MakeCharacter_1600_b() N := 1600; order := 2; char_gens := [1151, 901, 577]; v := [1, 2, 2]; // 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; // To make the character of type GrpDrchElt with Codomain the HeckeField, type "MakeCharacter_1600_b_Hecke();" function MakeCharacter_1600_b_Hecke(Kf) N := 1600; order := 2; char_gens := [1151, 901, 577]; char_values := [[-1, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0]]; assert UnitGenerators(DirichletGroup(N)) eq char_gens; values := ConvertToHeckeField(char_values : pass_field := true, Kf := Kf); // the value of chi on the gens as elements in the Hecke field F := Universe(values);// the Hecke field chi := DirichletCharacterFromValuesOnUnitGenerators(DirichletGroup(N,F),values); return chi; 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 := 3; raw_aps := [[0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1], [0, -2, 0, 1, 0, 2], [-1, 0, 2, 0, 1, 0], [12, 0, 2, 0, 2, 0], [0, -6, 0, -3, 0, -2], [0, 2, 0, -4, 0, -3], [6, 0, 4, 0, 0, 0], [0, 4, 0, 0, 0, 4], [-37, 0, 4, 0, 3, 0], [-10, 0, -3, 0, -1, 0], [0, -1, 0, 0, 0, -6], [0, -8, 0, -12, 0, 1], [-11, 0, 6, 0, -5, 0], [0, 6, 0, -13, 0, 2], [20, 0, -3, 0, -7, 0], [0, 13, 0, 16, 0, 2], [0, 0, 0, -10, 0, -8], [10, 0, 6, 0, 4, 0], [0, -12, 0, -20, 0, 4], [0, 3, 0, 16, 0, 14], [-22, 0, 12, 0, 16, 0], [32, 0, 2, 0, 6, 0], [-62, 0, 4, 0, 16, 0], [0, 2, 0, 4, 0, -3], [0, -21, 0, 0, 0, -20], [32, 0, 7, 0, 7, 0], [44, 0, -16, 0, -20, 0], [0, -26, 0, 0, 0, 3], [0, -42, 0, -1, 0, 2], [22, 0, 8, 0, 6, 0], [0, -30, 0, -33, 0, -2], [4, 0, 3, 0, -17, 0], [0, 12, 0, -6, 0, 20], [113, 0, 12, 0, 9, 0], [0, 21, 0, -40, 0, -20], [0, 34, 0, 12, 0, -1], [-61, 0, -20, 0, 3, 0], [0, -50, 0, -27, 0, 2], [-38, 0, 28, 0, -16, 0], [0, 56, 0, 0, 0, -8], [-120, 0, 2, 0, 14, 0], [111, 0, -2, 0, 5, 0], [0, 16, 0, -54, 0, -40], [0, 30, 0, -13, 0, 26], [0, 54, 0, 16, 0, -31], [0, 35, 0, -24, 0, -4], [-66, 0, 12, 0, 0, 0], [-14, 0, -10, 0, -36, 0], [0, -12, 0, 4, 0, 4], [150, 0, -11, 0, 7, 0], [0, -18, 0, 29, 0, 2], [-152, 0, 24, 0, -16, 0], [0, -20, 0, -8, 0, 3], [140, 0, -29, 0, 7, 0], [0, 36, 0, -12, 0, 20], [199, 0, 4, 0, -33, 0], [-190, 0, -23, 0, -33, 0], [0, 13, 0, -88, 0, 12], [-91, 0, 40, 0, 1, 0], [0, 1, 0, -64, 0, -2], [0, -84, 0, 34, 0, -12], [-266, 0, 16, 0, -2, 0], [37, 0, 10, 0, -9, 0], [0, -86, 0, 17, 0, 30], [-12, 0, 52, 0, 0, 0], [0, 41, 0, -24, 0, 14], [-66, 0, -52, 0, -48, 0], [8, 0, 68, 0, 52, 0], [0, 92, 0, 58, 0, 4], [0, -34, 0, 8, 0, -21], [177, 0, 36, 0, 49, 0], [0, -46, 0, 51, 0, 30], [0, 122, 0, 24, 0, 45], [-300, 0, 19, 0, 47, 0], [73, 0, 42, 0, 75, 0], [270, 0, -4, 0, 16, 0], [-142, 0, -37, 0, 17, 0], [0, -2, 0, 137, 0, 34], [-396, 0, -43, 0, -15, 0], [0, 36, 0, 124, 0, 20], [-372, 0, 26, 0, 10, 0], [0, 100, 0, 62, 0, -36], [0, 17, 0, 96, 0, 8], [250, 0, 43, 0, 9, 0], [-202, 0, 52, 0, 106, 0], [466, 0, 4, 0, 16, 0], [0, -112, 0, 36, 0, -25], [0, -25, 0, 112, 0, 56], [0, 112, 0, 72, 0, -16], [0, -124, 0, -24, 0, 45], [0, 34, 0, 121, 0, -10], [0, 86, 0, -11, 0, -86], [0, 18, 0, -76, 0, -35], [-26, 0, 68, 0, 0, 0], [-414, 0, 64, 0, 48, 0], [0, 89, 0, -72, 0, -48], [170, 0, 60, 0, 80, 0], [0, -161, 0, 8, 0, -16], [-139, 0, 44, 0, -3, 0], [0, -59, 0, 8, 0, -4], [-222, 0, 91, 0, 65, 0], [0, 70, 0, -3, 0, 58], [352, 0, -44, 0, -100, 0], [0, 89, 0, 136, 0, -34], [620, 0, 48, 0, 12, 0], [0, -136, 0, 46, 0, -80], [-246, 0, 17, 0, -33, 0], [0, 184, 0, 68, 0, 17], [113, 0, -118, 0, -45, 0], [150, 0, -26, 0, 0, 0], [0, 190, 0, 71, 0, 10], [0, -148, 0, 2, 0, 20], [334, 0, 13, 0, 39, 0], [0, -73, 0, 24, 0, 58], [0, -208, 0, 8, 0, -63], [-1, 0, -18, 0, 69, 0], [0, 22, 0, 93, 0, 42], [-344, 0, -119, 0, -31, 0], [-208, 0, -74, 0, 50, 0], [-609, 0, 18, 0, 81, 0], [0, 99, 0, -56, 0, -106], [0, 22, 0, -69, 0, -78], [64, 0, -183, 0, -55, 0], [-186, 0, 68, 0, 16, 0], [0, -92, 0, 44, 0, -76], [0, 12, 0, -88, 0, -75], [991, 0, 8, 0, -61, 0], [0, 38, 0, 73, 0, 42], [0, -216, 0, -136, 0, 7], [0, -32, 0, -172, 0, -112], [711, 0, 96, 0, 83, 0], [-402, 0, -36, 0, -112, 0], [-34, 0, 32, 0, 48, 0], [49, 0, 30, 0, 47, 0], [0, 37, 0, -192, 0, -118], [765, 0, -90, 0, 3, 0], [-386, 0, -32, 0, 80, 0], [0, -10, 0, -183, 0, -134], [-464, 0, 65, 0, 177, 0], [0, -58, 0, 52, 0, 41], [0, -59, 0, 8, 0, -126], [-804, 0, 35, 0, 87, 0], [0, 44, 0, 162, 0, 148], [709, 0, 102, 0, 75, 0], [-318, 0, 132, 0, -42, 0], [0, -138, 0, -133, 0, 50], [0, 268, 0, -28, 0, -133], [-19, 0, -184, 0, -119, 0], [538, 0, 9, 0, 55, 0], [0, -183, 0, -128, 0, 56], [0, -40, 0, 136, 0, 41], [0, 67, 0, -248, 0, 68], [0, -292, 0, -12, 0, -20], [0, 56, 0, -66, 0, -16], [90, 0, -165, 0, -7, 0], [-250, 0, 34, 0, -28, 0], [474, 0, -84, 0, -48, 0], [0, -243, 0, -168, 0, -14], [-154, 0, 36, 0, 42, 0], [0, -22, 0, 4, 0, -25], [0, -94, 0, 145, 0, 214], [-84, 0, -26, 0, 14, 0], [0, 44, 0, 224, 0, 3], [0, -224, 0, 136, 0, 192], [903, 0, 2, 0, 73, 0], [222, 0, 64, 0, -80, 0], [381, 0, -54, 0, -113, 0], [0, -126, 0, 3, 0, -50], [-366, 0, -28, 0, -48, 0], [0, 236, 0, 158, 0, 68], [-534, 0, 138, 0, 48, 0], [0, 64, 0, -140, 0, -16], [-274, 0, 64, 0, 16, 0], [0, 222, 0, -203, 0, -14], [-142, 0, 68, 0, 64, 0], [0, -70, 0, 116, 0, 229], [664, 0, -97, 0, -25, 0], [0, 18, 0, -8, 0, -25], [0, -130, 0, 351, 0, -54], [-951, 0, 58, 0, 91, 0], [-386, 0, -98, 0, -80, 0], [0, 28, 0, -116, 0, -213], [-98, 0, -100, 0, 112, 0], [-407, 0, 60, 0, 209, 0], [0, -265, 0, -80, 0, -86], [2, 0, -37, 0, 129, 0], [0, -32, 0, 176, 0, 0], [-696, 0, 100, 0, 180, 0], [0, -15, 0, 176, 0, 136], [0, 38, 0, -301, 0, 2], [-408, 0, 129, 0, 121, 0], [0, -123, 0, 376, 0, 186], [-150, 0, 66, 0, 56, 0], [306, 0, -15, 0, -121, 0], [107, 0, -102, 0, 133, 0], [728, 0, -72, 0, 128, 0], [0, -138, 0, -188, 0, -151], [1662, 0, -36, 0, -64, 0], [0, 216, 0, -84, 0, -216], [-61, 0, 34, 0, -171, 0], [-326, 0, 108, 0, 160, 0], [0, -98, 0, -9, 0, 10], [-815, 0, -16, 0, -11, 0], [0, 180, 0, -264, 0, -76], [0, 99, 0, -248, 0, 126], [-594, 0, 96, 0, 80, 0], [0, -142, 0, 65, 0, 6], [108, 0, -314, 0, -82, 0], [140, 0, -19, 0, -79, 0], [0, -172, 0, 16, 0, 59], [0, 241, 0, -48, 0, -202], [0, 328, 0, 210, 0, 48], [494, 0, -123, 0, 79, 0], [0, -214, 0, -376, 0, 95], [-706, 0, -116, 0, -144, 0], [0, 290, 0, -124, 0, 31], [-869, 0, -218, 0, -199, 0], [0, 0, 33, 0, 97, 0], [0, 68, 0, 110, 0, 316], [498, 0, -28, 0, -208, 0], [0, 174, 0, -176, 0, -7], [0, 629, 0, 168, 0, -54], [1072, 0, 223, 0, 207, 0], [-530, 0, 58, 0, -172, 0], [0, -12, 0, 208, 0, -140], [0, -86, 0, 76, 0, 55], [0, -334, 0, 41, 0, -250], [-185, 0, -66, 0, -163, 0], [0, -234, 0, 213, 0, 170], [0, -264, 0, -320, 0, -8], [-238, 0, -103, 0, -33, 0], [0, -177, 0, 32, 0, -22], [0, 62, 0, -424, 0, -245], [-766, 0, 35, 0, 153, 0], [-931, 0, -118, 0, -49, 0], [0, -322, 0, 187, 0, 186], [0, 204, 0, 278, 0, 100], [0, -393, 0, 232, 0, -70], [0, 134, 0, -35, 0, -102], [0, -140, 0, -144, 0, -245], [734, 0, -132, 0, 64, 0], [-1052, 0, -76, 0, 16, 0], [0, 60, 0, 102, 0, 20], [0, -314, 0, -168, 0, -109], [0, -14, 0, 23, 0, -114], [0, 62, 0, -361, 0, -406], [0, 204, 0, 132, 0, 235], [-259, 0, -366, 0, -281, 0], [-746, 0, -92, 0, 96, 0], [0, -212, 0, 432, 0, -43], [654, 0, 151, 0, 81, 0], [1291, 0, -64, 0, -89, 0], [0, -6, 0, 333, 0, -98], [1298, 0, -156, 0, -128, 0], [0, 125, 0, 288, 0, -102], [-957, 0, 84, 0, 155, 0], [-1342, 0, 92, 0, 254, 0], [0, -60, 0, -580, 0, -205], [0, 423, 0, 80, 0, -40], [446, 0, 252, 0, 176, 0], [-1001, 0, 176, 0, -205, 0], [-2680, 0, 14, 0, 18, 0], [0, -274, 0, -167, 0, -270], [1758, 0, -228, 0, 64, 0], [-270, 0, -32, 0, 176, 0], [0, 337, 0, 536, 0, -8], [1381, 0, 164, 0, 149, 0], [-1270, 0, 12, 0, 320, 0], [0, 15, 0, 160, 0, 336], [-74, 0, -18, 0, -328, 0], [0, -340, 0, 0, 0, -116], [764, 0, 92, 0, 224, 0], [0, 176, 0, 24, 0, -241], [0, -461, 0, -360, 0, 116], [-1922, 0, 124, 0, 0, 0], [450, 0, -231, 0, -241, 0], [0, -606, 0, -125, 0, -114], [0, 64, 0, 436, 0, -57], [0, 488, 0, 158, 0, 96], [0, -30, 0, -156, 0, -257], [322, 0, -92, 0, 80, 0], [0, -315, 0, 72, 0, 66], [0, -256, 0, 204, 0, 432], [1948, 0, 90, 0, -70, 0], [595, 0, 26, 0, 205, 0], [0, -408, 0, -66, 0, 192], [1014, 0, -105, 0, -167, 0], [452, 0, -99, 0, -55, 0], [0, -711, 0, -368, 0, 70], [-1378, 0, 162, 0, 220, 0], [0, 10, 0, 561, 0, -98], [-237, 0, 72, 0, 135, 0], [-1316, 0, -93, 0, -169, 0], [0, 224, 0, 72, 0, 352], [-487, 0, -272, 0, -323, 0], [0, -242, 0, 3, 0, 42], [0, 103, 0, -24, 0, -120], [258, 0, -32, 0, 74, 0], [2061, 0, -180, 0, 21, 0], [0, 264, 0, -12, 0, -200]]; aps := ConvertToHeckeField(raw_aps); chi := MakeCharacter_1600_b_Hecke(Universe(aps)); return ExtendMultiplicatively(weight, aps, chi); end function; // To make the newform (type ModFrm), type "MakeNewformModFrm_1600_3_b_w();". // 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_1600_3_b_w(:prec:=6) chi := MakeCharacter_1600_b(); f_vec := qexpCoeffs(); Kf := Universe(f_vec); // SetVerbose("ModularForms", true); // SetVerbose("ModularSymbols", true); S := CuspidalSubspace(ModularForms(chi, 3)); S := BaseChange(S, Kf); maxprec := NextPrime(1999) - 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_1600_3_b_w();". // 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_1600_3_b_w( : sign := -1) R := PolynomialRing(Rationals()); chi := MakeCharacter_1600_b(); // SetVerbose("ModularSymbols", true); Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,3,sign))); Vf := Kernel([<3,R![64, 0, 224, 0, 36, 0, 1]>,<7,R![64, 0, 1504, 0, 116, 0, 1]>,<13,R![832, -208, 0, 1]>],Snew); return Vf; end function;