
// Make newform 350.2.q.c in Magma, downloaded from the LMFDB on 25 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_c();".
// 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_c();".
// 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_c( : sign := -1)
    R<x> := PolynomialRing(Rationals());
    chi := MakeCharacter_350_q();
    // SetVerbose("ModularSymbols", true);
    Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,2,sign)));
    Vf := Kernel([<3,R![390625, -10546875, 150703125, -1820156250, 17333984375, -85609906250, 267342253125, -1742572940625, 9879352224375, -26723105438125, 85717597723875, -272724110862625, -506936183234625, 3164448438064050, 3937464363351795, -16122542264021110, -23704748865354424, 70121983897320054, 50136820629152456, -237048706998439866, 49339961780685615, 274117329211834530, -235266009534117618, 643329064933818120, 1227524930069168755, -1460396832872255953, -1486486855553353074, 635070509007549826, 799100716634041618, -106996656335450456, 355925251654448688, 76846536887308603, -684893660142344908, 87600743135050627, 435257690554043337, -186794959535584348, -9081414781106826, 81977186645827179, -111530677775832292, 47313807415292466, 51853149486548165, -42528016289664891, 305583610092344, 9802844061502586, -4381075041696529, 1569305870484614, 582971906292663, -1136579649094961, 280629812283033, 228486132832167, -95617805533648, -14805304307771, 12381663595859, -2755143708934, -306989917584, 934619887764, -210754854409, -142836550104, 53660496326, 9606043634, -5457040848, 1069068204, -129236760, -329136844, 111625326, 33623535, -13850491, -1095041, 655750, -208674, 74976, 47483, -19254, -4343, 1662, 16, 27, 30, -15, -2, 1]>],Snew);
    return Vf;
end function;