
// Make newform 143.4.h.a in Magma, downloaded from the LMFDB on 19 April 2024.
// To make the character of type GrpDrchElt, type "MakeCharacter_143_h();"
// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_143_4_h_a();".
// 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_143_h();"
function MakeCharacter_143_h()
    N := 143;
    order := 5;
    char_gens := [79, 67];
    v := [4, 5];
    // 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_143_h_Hecke(Kf)
    return MakeCharacter_143_h();
end function;


// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_143_4_h_a();".
// 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_143_4_h_a( : sign := -1)
    R<x> := PolynomialRing(Rationals());
    chi := MakeCharacter_143_h();
    // SetVerbose("ModularSymbols", true);
    Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,4,sign)));
    Vf := Kernel([<2,R![27238541292988687974400, 1413421205920843982438400, 28479956144713403203584000, 28105871105407331991552000, 391816513201105634699837440, 660669006843813887371018240, 2258775603570227863509893120, 2254301184728992562093752320, 6431149278264038527527387136, 1833512792078962609242249216, 13849238589614409455137859584, -5591905101465817887727794176, 20278976164199022545839384064, -11505396975394850299038058496, 18869426664962065422479176128, -9767488156549587414043981856, 11565763322081290348665289072, -4558222617662643610425585128, 4872806596494442868204689968, -1457224695706318791281082222, 1586214232488818955476537511, -372790085687742250969417157, 448775345051664688060131466, -87999825489756866747558318, 114362361599890061784072674, -15890830914930910533417103, 24678350336504599764778292, -2481197077293082092712258, 4861799097332173395128770, -367650708803830454492154, 851373891904981028070578, -41869575622531807771422, 135507619843931769113779, -3943736257530275525737, 18959769026464872084820, -442659710209869113896, 2412516996697235647413, -47946377561721350018, 273731790415838142170, -4916989116320872636, 27888305808392353087, -732659601113861315, 2503355670577236114, -102336549720782286, 202524069089664673, -10632009916088778, 14716380791546584, -934464469605630, 968518280492293, -72618744880461, 57244580417714, -4800163752478, 3048505199185, -265821031082, 144410814276, -13014795592, 6114531823, -558511333, 227463970, -19938338, 7310250, -572111, 195412, -14468, 4505, -298, 84, -4, 1]>],Snew);
    return Vf;
end function;