
// Make newform 350.2.q.b in Magma, downloaded from the LMFDB on 23 April 2024.
// To make the character of type GrpDrchElt, type "MakeCharacter_350_q();"
// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_350_2_q_b();".
// 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_350_q();"
function MakeCharacter_350_q()
    N := 350;
    order := 15;
    char_gens := [127, 101];
    v := [12, 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_350_q_Hecke(Kf)
    return MakeCharacter_350_q();
end function;


// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_350_2_q_b();".
// 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_350_2_q_b( : sign := -1)
    R<x> := PolynomialRing(Rationals());
    chi := MakeCharacter_350_q();
    // SetVerbose("ModularSymbols", true);
    Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,2,sign)));
    Vf := Kernel([<3,R![1425895009050625, 5277783886225625, 5141689376023125, -11613277853097500, -46172204826025250, -108129000591105125, -120079299420292125, 212593761971374125, 935049344785307200, 1037397031761105700, 628903016119213825, 446461830524873775, -1272980159814029985, -2209253800580483335, 2234232814779066170, 2501589853479027110, -2823200120414518224, -1470341375320468643, 1868833524220607991, 334905421703707755, -457903332988955245, 263530166176857138, -172104891755478433, -324983995925029474, 294374574119282058, 188135751482557262, -184801319717663312, -37654510908400212, 40615616070272210, -16959043890436611, 30029852639894977, 11338601112812243, -24493363129537696, -1482170323841568, 6222672410241464, 221393488874718, 219970500498884, -468308422597112, -461767856479604, 133720256984211, 185830756162405, -12793839697525, -46759561404582, 688370476863, 1453724882126, 1863625491700, 2178990133365, -971503685725, -376702346821, 78850337257, 22896610194, 13716728397, 5464042447, -4208508863, -1194490783, 290932076, 105400022, 8838165, 8152385, -4299037, -2557267, 528805, 267896, -48054, -10123, 673, -980, 210, 259, -8, -23, -1, 1]>],Snew);
    return Vf;
end function;