
// Make newform 4033.2.a.d in Magma, downloaded from the LMFDB on 24 April 2024.
// To make the character of type GrpDrchElt, type "MakeCharacter_4033_a();"
// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_4033_2_a_d();".
// 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_4033_a();"
function MakeCharacter_4033_a()
    N := 4033;
    order := 1;
    char_gens := [1963, 2295];
    v := [1, 1];
    // 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_4033_a_Hecke(Kf)
    return MakeCharacter_4033_a();
end function;


// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_4033_2_a_d();".
// 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_4033_2_a_d( : sign := -1)
    R<x> := PolynomialRing(Rationals());
    chi := MakeCharacter_4033_a();
    // SetVerbose("ModularSymbols", true);
    Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,2,sign)));
    Vf := Kernel([<2,R![-62848, -9156892, -161440206, 1892858093, 14727689720, -110952100691, -565298883816, 3134257613561, 12310886180619, -51958127912730, -172529712926660, 561661843432677, 1672856272685208, -4228218738062714, -11780171078422330, 23175842811485246, 62415932577602464, -95461331427098685, -255650669084836231, 302293832818661040, 827017432634596473, -747753479554912808, -2150025274368570465, 1458574910248475944, 4556668783900639876, -2247254819526803084, -7966974567706822875, 2704303834224216113, 11606316318079949253, -2440038638541584299, -14205049821967042084, 1422752449797758991, 14706322548399171158, -72564628339124420, -12950361927635099959, -1021831856118778336, 9742243537093483105, 1502800843486042509, -6280826548278299065, -1404835295461704323, 3477213110497207813, 1006811403685680528, -1654391977477569594, -586256474914335111, 676013171906280193, 284608398247492386, -236661432021732876, -116743974396031795, 70638633675974397, 40754986001506976, -17822056153955831, -12151086295470418, 3743400478279441, 3096880954977220, -635865153556587, -673818575445678, 81754009132658, 124733757499288, -6340138830576, -19532203732490, -195328133505, 2565153864861, 164704629427, -279045867702, -31977629870, 24693051899, 4058516962, -1729231843, -377546789, 91547526, 26235535, -3346991, -1337280, 64551, 47487, 480, -1053, -58, 11, 1]>],Snew);
    return Vf;
end function;