
// Make newform 8015.2.a.k in Magma, downloaded from the LMFDB on 25 April 2024.
// To make the character of type GrpDrchElt, type "MakeCharacter_8015_a();"
// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_8015_2_a_k();".
// 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_8015_a();"
function MakeCharacter_8015_a()
    N := 8015;
    order := 1;
    char_gens := [3207, 4581, 4586];
    v := [1, 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_8015_a_Hecke(Kf)
    return MakeCharacter_8015_a();
end function;


// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_8015_2_a_k();".
// 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_8015_2_a_k( : sign := -1)
    R<x> := PolynomialRing(Rationals());
    chi := MakeCharacter_8015_a();
    // SetVerbose("ModularSymbols", true);
    Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,2,sign)));
    Vf := Kernel([<2,R![3536, -26512, -550108, 1248630, 21514009, -22234229, -363663162, 205186318, 3249455414, -1082438050, -17663054317, 3362293853, 63712366264, -5689905911, -161307853101, 1998074068, 297917944093, 14421545561, -412712791779, -40213086663, 437885354044, 60192261282, -361486366425, -61610271826, 234950010330, 46478692730, -121248491622, -26765569879, 49948452676, 11991949253, -16464103030, -4223266539, 4339027488, 1173976344, -910389391, -257320794, 150773943, 44192591, -19431680, -5872118, 1905576, 590968, -137207, -43505, 6832, 2208, -210, -69, 3, 1]>,<3,R![1178624, 18098688, 54906368, -372465408, -2062386688, 1935184896, 24276634336, 5131874840, -152441828052, -101187258784, 602940069320, 536060392302, -1625891744063, -1660234745830, 3123932329704, 3488158783549, -4390283185130, -5296934633000, 4580819239605, 6018007227994, -3567873322776, -5224254516097, 2061683789741, 3512552899965, -859840121468, -1845167579114, 236743123502, 761137140748, -26946749636, -246977747351, -10068103655, 62923672425, 6630797806, -12508275197, -2036145244, 1916011371, 416434589, -221210269, -60798501, 18495885, 6403255, -1032136, -477178, 30340, 23919, 161, -724, -43, 10, 1]>],Snew);
    return Vf;
end function;