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


// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_864_2_v_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_v_a( : sign := -1)
    R<x> := PolynomialRing(Rationals());
    chi := MakeCharacter_864_v();
    // SetVerbose("ModularSymbols", true);
    Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,2,sign)));
    Vf := Kernel([<5,R![3111399658583832001, 0, -12977829136316047223680, 0, 27065640478997916337971200, 0, -11820642460732858705684509184, 0, 2561485195165091080102028104448, 0, 41189194109529708386012995668736, 0, 324736234800354719146770769870848, 0, 1370779754437692876673343488440320, 0, 9713625061040010654227678287303224, 0, 107293951256858262786268819668282240, 0, 843883600124773014984183722901848064, 0, 3611513413781660868831833339912956416, 0, 8059802670141974643924118929526211328, 0, 1807044796763082379852093773117381120, 0, -13116941800685129785133852365334806528, 0, 11191552011378488072896490768607944704, 0, 143441754777668504442091563941171970524, 0, -232201756905484649756124384896228260736, 0, 184920125174593728855245251718487400448, 0, -12617338544788834820310033756721947136, 0, -13574660258079012673934363234490124032, 0, 1314036375758606810767032423993021696, 0, 16278034924390172097656106320616161280, 0, 4124800558566869870631394536041560064, 0, 455589698673464112740556262625107976, 0, 175497289851585956909976186642190208, 0, 322899145487688699520114901713780736, 0, 113097533615020011618575743094303232, 0, 20317245753403093922465993390498048, 0, 1580959132058704642212893997355008, 0, 1110173011882297710565310727913472, 0, 412469989521205951415396838899712, 0, 80032956956951599990681479587718, 0, 4306072356849969782683835916672, 0, 1549438893082502781449768394752, 0, 603051542926604639784521611776, 0, 125049622136305686165488119040, 0, 5034693591336928223830975744, 0, 1030217931871959287460102144, 0, 418606125852303951590729728, 0, 92697128285555124940618888, 0, 2824821541085539123435136, 0, 330210444419387362721792, 0, 139705043318958653558272, 0, 33220702467414141222144, 0, 759303593232655151616, 0, 52662626620023603200, 0, 22540913877823021056, 0, 5680282509332767068, 0, 108175181341050240, 0, 3720165419458560, 0, 1579640113699328, 0, 446227961071360, 0, 7347792239360, 0, 82510086144, 0, 34844108800, 0, 14612910264, 0, 161525376, 0, 524288, 0, 220672, 0, 204544, 0, 1024, 0, 0, 0, 0, 0, 1]>],Snew);
    return Vf;
end function;