
// Make newform 968.2.o.i in Magma, downloaded from the LMFDB on 22 December 2024.
// To make the character of type GrpDrchElt, type "MakeCharacter_968_o();"
// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_968_2_o_i();".
// 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_968_o();"
function MakeCharacter_968_o()
    N := 968;
    order := 10;
    char_gens := [727, 485, 849];
    v := [10, 5, 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_968_o_Hecke(Kf)
    return MakeCharacter_968_o();
end function;


// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_968_2_o_i();".
// 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_968_2_o_i( : sign := -1)
    R<x> := PolynomialRing(Rationals());
    chi := MakeCharacter_968_o();
    // SetVerbose("ModularSymbols", true);
    Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,2,sign)));
    Vf := Kernel([<3,R![14641, 0, 7744, 0, 1212825, 0, -6799423, 0, 26350107, 0, -96090729, 0, 315579280, 0, -614433944, 0, 702932013, 0, -455243831, 0, 187206324, 0, -57215545, 0, 18406849, 0, -4134743, 0, 754980, 0, -120568, 0, 18015, 0, -1921, 0, 181, 0, -15, 0, 1]>,<5,R![16777216, 0, 130023424, 0, 8822587392, 0, -73379909632, 0, 244640825600, 0, -217660353792, 0, 144334767520, 0, -83735970028, 0, 46558002353, 0, -16312036420, 0, 6010541286, 0, -1827891519, 0, 403742319, 0, -64894840, 0, 8607287, 0, -998258, 0, 97237, 0, -7117, 0, 425, 0, -23, 0, 1]>,<7,R![4096, -76800, 649984, -2916032, 7190256, -8896824, 9393848, -6281620, 3898041, -1717404, 748072, -246377, 82651, -21030, 6915, -1836, 691, -147, 31, -5, 1]>],Snew);
    return Vf;
end function;