
// Make newform 4033.2.a.f in Magma, downloaded from the LMFDB on 19 April 2024.
// To make the character of type GrpDrchElt, type "MakeCharacter_4033_a();"
// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_4033_2_a_f();".
// 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_4033_a();"
function MakeCharacter_4033_a()
    N := 4033;
    order := 1;
    char_gens := [1963, 2295];
    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_4033_a_Hecke(Kf)
    return MakeCharacter_4033_a();
end function;


// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_4033_2_a_f();".
// 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_4033_2_a_f( : sign := -1)
    R<x> := PolynomialRing(Rationals());
    chi := MakeCharacter_4033_a();
    // SetVerbose("ModularSymbols", true);
    Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,2,sign)));
    Vf := Kernel([<2,R![90944, -4357220, -130417670, 2541682377, 53696445512, -357882613702, -8111487615420, -1155706226615, 331312449975517, 502150467337523, -6183024355723451, -11793716434840473, 69097040285782039, 137703083333689234, -528095850638548339, -1019955368398392827, 2975625688097162246, 5314697670017985488, -12946888934560819281, -20643036173017376107, 44834204400710001874, 62003860884345954521, -126162590562255916573, -147634383822096905361, 292851928298187283521, 283451954836691612642, -567176189794289349765, -443762808087213878537, 924858586149960830101, 569838017249246460602, -1279215065370519152462, -600011109195297407157, 1510114271410947707990, 513014108713698880703, -1529410764630644355604, -345760695915288746124, 1334613808342380270096, 167910367858398994416, -1006983467760606250517, -36888441113651088744, 658724478853748393688, -28765482241085554192, -374315777055395455023, 43869527159158982537, 184970851530394634017, -34410166595836084194, -79501857687896508208, 20059346909414090228, 29693876323298478372, -9456896165549173410, -9615785064466830563, 3726956887291131243, 2688637862287391833, -1247421538675686293, -644609304263438332, 357451256111033852, 130988193441941183, -88016533792032220, -22099229321530384, 18637291942096116, 2968813242500546, -3388290572439371, -284425923610768, 526870446778741, 10642850765648, -69638589567056, 2470244317842, 7752242970943, -666476383742, -717269734460, 96202975404, 54098911901, -9924307050, -3228000741, 774151893, 144738316, -45842717, -4372344, 2012021, 59762, -61991, 1241, 1200, -71, -11, 1]>],Snew);
    return Vf;
end function;