
// Make newform 69.4.e.a in Magma, downloaded from the LMFDB on 24 April 2024.
// To make the character of type GrpDrchElt, type "MakeCharacter_69_e();"
// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_69_4_e_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_69_e();"
function MakeCharacter_69_e()
    N := 69;
    order := 11;
    char_gens := [47, 28];
    v := [11, 2];
    // 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_69_e_Hecke(Kf)
    return MakeCharacter_69_e();
end function;


// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_69_4_e_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_69_4_e_a( : sign := -1)
    R<x> := PolynomialRing(Rationals());
    chi := MakeCharacter_69_e();
    // SetVerbose("ModularSymbols", true);
    Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,4,sign)));
    Vf := Kernel([<2,R![86829229167909891211264, -309502825917359750905856, 2274862308510893884571648, -8661278360438282850402304, 21319981247476471252910080, -29350657113617962776461312, 37640373475583034835369984, -73563779282280550004162560, 111062413587630669485092864, -113196357330456767598129152, 106674842129279127850147840, -98844971932029328300449792, 81906131391852785513056512, -58525717302384093743810432, 39951698345521059254045120, -30822823363726736834070464, 25495195945777257085644320, -18777337394484893858760760, 11548489449715379189322712, -5822268813541268609498242, 2459549348291643922707467, -850245934634677468600753, 245358866332467574829478, -57693826004540193614078, 15644280766657450667030, -4085191681915916672250, 1318209223576792336018, -342343257874039039536, 256839257425070463255, -85714340401131939081, 34242971193599173741, -8976636704355222094, 4552585972345213703, -834316563623266174, 400361453538183764, -86938160608778390, 17786759155964837, -6688348023681078, 1661542671149898, -270299882212742, 123702736733979, -12645018101572, 5770793401984, -302281867029, 308132210757, -9112705480, 11576795773, -667431436, 432119321, -19361942, 17770628, -696949, 648894, -51024, 17276, -3280, 679, -64, 38, 0, 1]>],Snew);
    return Vf;
end function;