
// Make newform 966.2.s.a in Magma, downloaded from the LMFDB on 24 April 2024.
// To make the character of type GrpDrchElt, type "MakeCharacter_966_s();"
// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_966_2_s_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_966_s();"
function MakeCharacter_966_s()
    N := 966;
    order := 22;
    char_gens := [323, 829, 925];
    v := [22, 11, 1];
    // 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_966_s_Hecke(Kf)
    return MakeCharacter_966_s();
end function;


// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_966_2_s_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_966_2_s_a( : sign := -1)
    R<x> := PolynomialRing(Rationals());
    chi := MakeCharacter_966_s();
    // SetVerbose("ModularSymbols", true);
    Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,2,sign)));
    Vf := Kernel([<5,R![4354787894506867937804059060376436736, 0, 814719745354515649892311091637102837760, 0, 49115235521898106267233726132504996413440, 0, 900191879791909244203059774018028806275072, 0, 10508259391275068742848040207532125357277184, 0, 141134966113666644366271857697126655695931392, 0, 1607968473951809760965779059955529189694615040, 0, 11639009819881816131859292361691952553519574336, 0, 62092339913966423190541946674457371240598839536, 0, 206042005064988540981906664689915626446274610636, 0, 550053059294495755528122224914018018049698138657, 0, 146745589213470659711743811835403339796090908126, 0, 579032047201957888903727493921636667267823418563, 0, 1270581177110749639568857648993221673824257285459, 0, 52292884459124213420066399280937799786437984957, 0, 577730730561725342937900484379096686360337993266, 0, 1353782199686265874270535935890235163382339953066, 0, -83896031428253301491737103740461698479356252542, 0, 966182384414736453301309271812965732859176916968, 0, 363116062018561186542564645234004777962956106912, 0, 526343946225145536678399860885491623802511224105, 0, 319710248997086220751036188197620739056902182692, 0, 243699935147199152254574691306848487502194802554, 0, 164472993005736807733615577288712945362230216792, 0, 120161379636113979282506956330283626367759529858, 0, 82049624087299125400441522181162608990051759036, 0, 54288004631538776818519716283218692059916365264, 0, 34052760762565606487355792292327677159105377156, 0, 19739928583761870934354814614753461983841391966, 0, 10226989121002076862651561210395335536430416686, 0, 4644974958897488502446716126837446231300227342, 0, 1836370639758507214179150174007895873599570224, 0, 634171596652008580789583492587949736770877576, 0, 193669664985396596295263362159781208955175960, 0, 53440954789235981491767849358669793535680365, 0, 13723258628568037127946131349768866151720886, 0, 3386556904215110838623700101590507407967619, 0, 820586887708816184539400129899432491657563, 0, 195589794276828894034933995249455400646115, 0, 45242102645039916140367834971519007755328, 0, 10005360268002749521380892884973214951453, 0, 2096723874499400057016917199720241758404, 0, 415071147896749717920183388317408754004, 0, 77650952568312072081313992034201605205, 0, 13791200271203091596431945365285874504, 0, 2351237994754715004486905652288943683, 0, 391567021064230216291339588575135021, 0, 64456286725601597801241986495448111, 0, 10435686899231532081741264706811368, 0, 1629709569512942958144917165420711, 0, 242820155307850146485995366370628, 0, 34490269975519995334711220945632, 0, 4669881607547547219737001222829, 0, 600071598616950878321279255052, 0, 74624839080546942791588761105, 0, 9457312253495092585231272888, 0, 1252636005829262013612202495, 0, 162119403502502058930228216, 0, 18326162003091813764621308, 0, 1643590889871844879743158, 0, 132763569394043025581341, 0, 14462321513122230182488, 0, 2054550825696217757396, 0, 215360836274905932643, 0, 15469866572672035273, 0, 998125512970812625, 0, 81170858726003749, 0, 6710567457498103, 0, 484287032711002, 0, 37975621173911, 0, 2602961972147, 0, 131705820584, 0, 11701982046, 0, 564993581, 0, 15420420, 0, 2421622, 0, 73541, 0, 2224, 0, 498, 0, -8, 0, 1]>],Snew);
    return Vf;
end function;