
// Make newform 804.2.c.b in Magma, downloaded from the LMFDB on 25 April 2024.
// To make the character of type GrpDrchElt, type "MakeCharacter_804_c();"
// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_804_2_c_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_804_c();"
function MakeCharacter_804_c()
    N := 804;
    order := 2;
    char_gens := [403, 269, 337];
    v := [1, 1, 2];
    // 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_804_c_Hecke(Kf)
    return MakeCharacter_804_c();
end function;


// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_804_2_c_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_804_2_c_b( : sign := -1)
    R<x> := PolynomialRing(Rationals());
    chi := MakeCharacter_804_c();
    // SetVerbose("ModularSymbols", true);
    Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,2,sign)));
    Vf := Kernel([<5,R![187398946816, 0, 111139293659136, 0, 10334860325804032, 0, 313510150925573632, 0, 4177854703835045008, 0, 29786212888957466688, 0, 129956864947528940984, 0, 379717658947189439216, 0, 789413250037032497009, 0, 1217743221552580863832, 0, 1436567498802916822427, 0, 1325555081424199858054, 0, 973441540224624605159, 0, 576797521556760627640, 0, 278822891235854264082, 0, 110940565060532308030, 0, 36592966865055637663, 0, 10061189607304129900, 0, 2315287865886050234, 0, 447101984159466072, 0, 72539927105754182, 0, 9885398287443732, 0, 1129362937130088, 0, 107763597892976, 0, 8537531180071, 0, 556719734300, 0, 29513048355, 0, 1249820098, 0, 41221643, 0, 1019156, 0, 17750, 0, 194, 0, 1]>],Snew);
    return Vf;
end function;