
// Make newform 912.2.ci.g in Magma, downloaded from the LMFDB on 09 May 2024.
// To make the character of type GrpDrchElt, type "MakeCharacter_912_ci();"
// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_912_2_ci_g();".
// 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_912_ci();"
function MakeCharacter_912_ci()
    N := 912;
    order := 18;
    char_gens := [799, 229, 305, 97];
    v := [9, 18, 18, 13];
    // 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_912_ci_Hecke(Kf)
    return MakeCharacter_912_ci();
end function;


// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_912_2_ci_g();".
// 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_912_2_ci_g( : sign := -1)
    R<x> := PolynomialRing(Rationals());
    chi := MakeCharacter_912_ci();
    // SetVerbose("ModularSymbols", true);
    Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,2,sign)));
    Vf := Kernel([<5,R![34012224, 28343520, 20785248, 8992944, -30221424, 8232840, 51651441, -28829601, 1162818, 1264836, 3319938, -1715466, 774727, -281328, 11538, 43658, 7083, 4995, 2661, -549, 84, -34, -3, 0, 1]>,<7,R![136118889, 417386925, 169674534, -787872825, -421902612, 1197947151, 1210282413, -276611085, -609061311, 21652596, 213772962, 27661365, -40858616, -8508843, 5641794, 1697328, -381534, -161091, 17656, 10998, 36, -378, -15, 9, 1]>],Snew);
    return Vf;
end function;