
// Make newform 680.2.cg.b in Magma, downloaded from the LMFDB on 24 September 2025.
// To make the character of type GrpDrchElt, type "MakeCharacter_680_cg();"
// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_680_2_cg_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_680_cg();"
function MakeCharacter_680_cg()
    N := 680;
    order := 16;
    char_gens := [511, 341, 137, 241];
    v := [16, 16, 4, 15];
    // 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_680_cg_Hecke( : Kf := Kf)
    return MakeCharacter_680_cg();
end function;


// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_680_2_cg_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_680_2_cg_b( : sign := -1)
    R<x> := PolynomialRing(Rationals());
    chi := MakeCharacter_680_cg();
    // SetVerbose("ModularSymbols", true);
    Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,2,sign)));
    Vf := Kernel([<3,R![592973922304, -618963843153920, 160480313305202688, 4162037303650287616, 49338572478793908224, 349744358212446978048, 1810145231153859919872, 7602530667251792478208, 27273084092151813120000, 83875933692917971845120, 222380637238280023228416, 511816772235359394357248, 1009017621550892223489024, 1527441036305315256123392, 1036750073978585443012096, -2652653801618086754455040, -12017279917467608028458944, -26349484100727694802119168, -34499474670400377884039424, -14064659118476127972529664, 65764982082393345525874944, 240767881410987145971114240, 526131737405854650247021824, 922307859236748065906999808, 1403744830976932329677072896, 1884144327525492803218872832, 2289814192601321154886264704, 2544169804751055257310185984, 2586755373456005389476166144, 2415093044111997259158466432, 2223547406743480677430392064, 1865624650915189551517059072, 1685555440674276978335570208, 1352405207860182033739174784, 1097347246163688264680095168, 792205818047813274741123840, 681836145350188755253006400, 445192313164987369139226176, 249602130262017443726290368, 124028706819309948682593152, 106164293186891028450709760, 28634429052442651820382336, -6367077047763640442262176, 72441826731714839880358144, 38770285286183192033638944, -31019410423401664002572960, -28531119589204776811679392, -1114960534083362733345888, 15672033569001681215764420, -3642999563861270247410560, 2358851338165592961270272, 876819149769774169253856, -1484824841798908037293248, -1224506409101530847675840, 705102964901057599457824, 663833700831936282199680, 61447936388364515433344, -106599784061556324399616, -20865669778226578866784, 15613046229634953586784, -2803095189743783583144, -4018764134013563270752, -2466331338098931315360, -47690708359387566480, 1121592788857692035776, 19839037550599485600, -4803203171019003296, -4273004831642363760, -858845127708143792, -104321348947397712, -1150897785585419024, 641481022417350832, -29302653505849976, -158599507518606832, 27965170808741712, 26188311035282624, 2825281573660128, -5462717000260032, -4233555437688368, -106636455459120, 1555625257303764, 2830970133328, -74898885248704, -15014396466704, 4656420240332, 2767895439664, -690801147232, -500141381240, -13591000960, 55282720512, 14527267608, -2102794296, -1687387452, -399878048, 2269552, -45895176, 133526009, -5823256, -149576, -1376472, -95056, 94232, -11240, 224, -768, 184, 216, -96, 0, 8, 0, 0, 1]>],Snew);
    return Vf;
end function;