
// Make newform 864.2.w.a in Magma, downloaded from the LMFDB on 25 April 2024.
// To make the character of type GrpDrchElt, type "MakeCharacter_864_w();"
// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_864_2_w_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_864_w();"
function MakeCharacter_864_w()
    N := 864;
    order := 8;
    char_gens := [703, 325, 353];
    v := [4, 5, 4];
    // 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_864_w_Hecke(Kf)
    return MakeCharacter_864_w();
end function;


// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_864_2_w_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_864_2_w_a( : sign := -1)
    R<x> := PolynomialRing(Rationals());
    chi := MakeCharacter_864_w();
    // SetVerbose("ModularSymbols", true);
    Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,2,sign)));
    Vf := Kernel([<5,R![22123426230995659811454976, 0, -281691391416022562282405888, 0, 1793348805229878243410051072, 0, 171051543067694955992314806272, 0, 445025501984567703714320445603840, 0, -5185298672251775863083833873137664, 0, 30609967630490678338929648671391744, 0, 1361264640317687568059275827296075776, 0, 30341547854026978158536342039911464960, 0, -444832778927103798131872253488398336, 0, 166970473918449587932255816681259008, 0, 5601176280132317078426793596023734272, 0, 86154268209601093293806490977516388352, 0, 3927075371621913658426638855598768128, 0, -144055804357511850207602674963054592, 0, -1632243974074817334266130484070187008, 0, 55669949797878793630436362639679422464, 0, -117546671029616376665795120961945600, 0, -20286670590478623878018957148422144, 0, -1486719425365434302811237846853091328, 0, 10839637233070106312467764337266655232, 0, -685352158574267403850469212384395264, 0, 23767716514939632068304275909902336, 0, -53382539942497121252994138436009984, 0, 385250549699705341405723112626978816, 0, -31190136478337058298372331957911552, 0, 1178504155924225893206429033037824, 0, 15996957967116293034307304292352, 0, 5179846871654013565092861372792832, 0, -442463039883863127102460984819712, 0, 17463268715232922977205649145856, 0, 12300463243145875220184232361984, 0, 29932848996585734234769339736064, 0, -2130461956293019866775305322496, 0, 86170566764514071773483892736, 0, 80494690679304705447399456768, 0, 81730662877226117121449000960, 0, -3708407012395319456021446656, 0, 153823490707737433430556672, 0, 158056957317352503720837120, 0, 101500694770088734719115264, 0, -1794640613809164703481856, 0, 79098184711240690565120, 0, 81558959696379006369792, 0, 44389745910087452278784, 0, -273215475315896811520, 0, 14804688862075420672, 0, 14640847190433980416, 0, 6998889980102783232, 0, -3245703736676352, 0, 1141928860352512, 0, 1078166279017472, 0, 473707693516800, 0, 1737938036224, 0, 32138166272, 0, 29671856640, 0, 14577833472, 0, 72082176, 0, 294912, 0, 269056, 0, 201472, 0, 768, 0, 0, 0, 0, 0, 1]>],Snew);
    return Vf;
end function;