
// Make newform 8048.2.a.v in Magma, downloaded from the LMFDB on 25 April 2024.
// To make the character of type GrpDrchElt, type "MakeCharacter_8048_a();"
// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_8048_2_a_v();".
// 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".
// To make the character of type GrpDrchElt, type "MakeCharacter_8048_a();"
function MakeCharacter_8048_a()
    N := 8048;
    order := 1;
    char_gens := [1007, 6037, 2017];
    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_8048_a_Hecke(Kf)
    return MakeCharacter_8048_a();
end function;


// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_8048_2_a_v();".
// 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_8048_2_a_v( : sign := -1)
    R<x> := PolynomialRing(Rationals());
    chi := MakeCharacter_8048_a();
    // SetVerbose("ModularSymbols", true);
    Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,2,sign)));
    Vf := Kernel([<3,R![5657, -80184, -28261, 917833, 131506, -4330441, -858236, 10946377, 3067019, -16359012, -5697889, 15299738, 6084204, -9339239, -4037333, 3828604, 1747991, -1069472, -506470, 203467, 98751, -25874, -12760, 2099, 1045, -98, -49, 2, 1]>,<5,R![-212992, 3981312, -26767360, 78327808, -64557568, -162050560, 340329088, 53950400, -534034048, 116508160, 479777664, -144928560, -290472446, 71909499, 122644212, -16059025, -35040147, 436889, 6512808, 565307, -751873, -128604, 49379, 12843, -1416, -625, -9, 12, 1]>,<7,R![-58309973, 447110417, 629485567, -4430165745, -154101656, 12675318351, -4008840768, -16539780034, 7884189367, 11737830622, -6793379420, -4971368176, 3303258353, 1325511398, -1000113997, -228585316, 197919050, 25654417, -26187441, -1847120, 2326023, 81746, -136595, -2013, 5077, 21, -108, 0, 1]>,<13,R![8128815559, 52406255001, -137290241271, -312418788439, 687070289085, 554471107986, -1298651228654, -444916396955, 1174940981524, 227731714389, -588891985740, -98104452622, 176129064244, 34591805343, -32141019714, -8287758970, 3433751298, 1226695033, -177548712, -107052309, -654522, 5096534, 550929, -103148, -23819, -378, 296, 31, 1]>],Snew);
    return Vf;
end function;