
// Make newform 224.2.u.c in Magma, downloaded from the LMFDB on 03 May 2024.
// To make the character of type GrpDrchElt, type "MakeCharacter_224_u();"
// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_224_2_u_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_224_u();"
function MakeCharacter_224_u()
    N := 224;
    order := 8;
    char_gens := [127, 197, 129];
    v := [8, 3, 8];
    // 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_224_u_Hecke(Kf)
    return MakeCharacter_224_u();
end function;


// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_224_2_u_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_224_2_u_c( : sign := -1)
    R<x> := PolynomialRing(Rationals());
    chi := MakeCharacter_224_u();
    // SetVerbose("ModularSymbols", true);
    Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,2,sign)));
    Vf := Kernel([<3,R![151519232, -17825792, 6817841152, 68025581568, 145292263424, -161995554816, -485462818816, 566562717696, 768512428032, -773593018368, 3768036738048, 4793709700096, 2805426942208, 1299878840832, 193510615808, -418291314944, 1329489932800, -1094476414592, 2865708432512, 1585123658240, 2058397862672, 550378507584, 216910059200, -24951790656, 65159428480, -81478211840, 59079606784, -18781728832, 35965399008, -3087975840, 3553880800, -631281312, 41793920, -47647936, -34945824, 3211520, 54616792, 476656, 796048, -1101488, 96, 108960, -12224, -1328, 16440, -88, -40, -72, 0, 8, 0, 0, 1]>],Snew);
    return Vf;
end function;