
// Make newform 288.3.u.b in Magma, downloaded from the LMFDB on 07 June 2024.
// To make the character of type GrpDrchElt, type "MakeCharacter_288_u();"
// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_288_3_u_b();".
// 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_288_u();"
function MakeCharacter_288_u()
    N := 288;
    order := 8;
    char_gens := [127, 37, 65];
    v := [4, 7, 8];
    // 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_288_u_Hecke(Kf)
    return MakeCharacter_288_u();
end function;


// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_288_3_u_b();".
// 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_288_3_u_b( : sign := -1)
    R<x> := PolynomialRing(Rationals());
    chi := MakeCharacter_288_u();
    // SetVerbose("ModularSymbols", true);
    Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,3,sign)));
    Vf := Kernel([<5,R![119629984886961945538010356828340224, -1174096194030376558884901550639022080, 13783024707930675681158240754435358720, -34159854573367987132399680555103289344, 79123609616953162825140818547079905280, -635563710541855010367793254155419648, -99055727812677348266472175096045764608, 63501885691589766930461262324883783680, 52882072316963777830586789281254080512, -108246060380787289589472517762859401216, 72649471906706178303815030757878923264, -11976491373202723283041767165393895424, -12143157731144765671619123695742615552, 8251379179505199590624702807297490944, -679301425270738045804686570835410944, -1514202015483175958879913308820865024, 778756728722379416068288779692015616, -79313132416283361564624926118248448, -57526440203921216305099266414608384, 24623707736557333678030949242109952, -424024667919321062613507467378688, -1897368890917596121725558478340096, 591791979048984268484010287562752, -157578881667651705434340767825920, 56128880558771231840829557440512, -7071158878611833774951545962496, -187073173638644427335969013760, 1049785577505079367706099056640, 8658577847114364478510071808, -61196952785488330480226664448, 13647221460472658103100243968, -3022487252324072680341897216, 787029414941678782582382592, -156627070194998836161019904, 17179382814626887232159744, 7306277063183900769124352, -191744853130333492215808, -284147291937347751149568, -4242474603973400412160, 1104929189057465024512, 1840025272415837913088, -59017714156064784384, -1679167767524528128, 1680396555728306176, -108635765605269504, -98483223786434560, -664151025278976, 1189192902639616, 755338095456512, 8996708227072, -854957726208, -22808999936, -5911246848, -5921973760, 189580544, 66199552, 64116224, 750336, 14912, -2304, 0, -64, 0, 0, 1]>],Snew);
    return Vf;
end function;