
// Make newform 950.2.q.g in Magma, downloaded from the LMFDB on 19 April 2024.
// To make the character of type GrpDrchElt, type "MakeCharacter_950_q();"
// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_950_2_q_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_950_q();"
function MakeCharacter_950_q()
    N := 950;
    order := 12;
    char_gens := [77, 401];
    v := [3, 10];
    // 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_950_q_Hecke(Kf)
    return MakeCharacter_950_q();
end function;


// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_950_2_q_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_950_2_q_g( : sign := -1)
    R<x> := PolynomialRing(Rationals());
    chi := MakeCharacter_950_q();
    // SetVerbose("ModularSymbols", true);
    Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,2,sign)));
    Vf := Kernel([<3,R![81, -1620, 16200, -108000, 527760, -1961028, 5668560, -12908676, 23141566, -32331000, 34519032, -26648460, 12354096, 117060, -5650632, 5400552, -2605877, 139992, 904248, -967524, 567056, -168132, 2232, 31512, -21938, 7284, -432, -1068, 760, -288, 72, -12, 1]>,<7,R![1214404, 4725376, 9193472, 10273440, 7351864, 3427584, 1135744, 344520, 144112, 59888, 17984, 3640, 784, 248, 72, 12, 1]>],Snew);
    return Vf;
end function;