
// Make newform 90.12.c.d in Magma, downloaded from the LMFDB on 04 September 2025.
// To make the character of type GrpDrchElt, type "MakeCharacter_90_c();"
// To make the character of type GrpDrchElt with Codomain the HeckeField, type "MakeCharacter_90_c_Hecke();"
// To make the coeffs of the qexp of the newform in the Hecke field type "qexpCoeffs();"
// To make the newform (type ModFrm), type "MakeNewformModFrm_90_12_c_d();".
// This may take a long time!  To see verbose output, uncomment the SetVerbose lines below.
// The precision argument determines an initial guess on how many Fourier coefficients to use.
// This guess is increased enough to uniquely determine the newform.
// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_90_12_c_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 ConvertToHeckeField(input: pass_field := false, Kf := [])
    if not pass_field then
        poly := [14060999354420335522970873124, 0, 0, 0, 128219731460991388255453, 0, 0, 0, 2686231540547, 0, 0, 0, 1];
        Kf := NumberField(Polynomial([elt : elt in poly]));
        AssignNames(~Kf, ["nu"]);
    end if;
    Rf_num := [[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, -3790591672289427759877679689072, 0, 0, 0, -79294595635679093936, 0, 0, 0, -29518192, 0], [0, 176686168427492576206556422604763061822907214894, 27118497614698297607361193526277628195564019031, -533545403797296887583898190627297163674087213, 0, 3732243542926532308525496931620987922, 569134568843162520458258054135982303, -11178057680342497022386993997400919, 0, 1388798915656106899505034, 211877962640996897027691, -4161241945360862869193], [-79996135597955375550047807950987054836139971341760, 404595064248663943235159021168041171556659862106, 0, 1221769987194373442434678732085468235551619503, -3622105573016603230308141917347180874880, 8190329598750406755533111742728787918, 0, 25595111501609231821486148793550309, -1363598190224661237552615360, 3039383282235646434685926, 0, 9528246396723393208163], [0, -1236803178992448033445894958233341432760350504258, 14927104895321576167314894897168647084144901418470, 3734817826581078213087287334391080145718610491, 0, -26125704800485726159678478521346915454, 312435870099816422160175106674512015630, 78246403762397479156708957981806433, 0, -9721592409592748296535238, 116307404170905152047180350, 29128693617526040084351], [0, -10493537895961430607408082617868674401822638432566, 0, -31687702419034390024799746661414558973962401513, 0, -224866517045368923882241748845119942498, 0, -663888610912916675397584180650120739, 0, -83749463712367734048229386, 0, -247145138058358490661973], [0, -883430842137462881032782113023815309114536074470, 90584473193960793702362952514218415588486549922, 2667727018986484437919490953136485818370436065, 0, -18661217714632661542627484658104939610, 1901078945981029810471567613625107986, 55890288401712485111934969987004595, 0, -6943994578280534497525170, 707735407867316410058042, 20806209726804314345965], [0, -47205365121182313718933690950675124249337354094942, -135592488073491488036805967631388140977820095155, 142547646684621546436285166651196630754888809461, 0, -1135515438864168443859751939599927718626, -2845672844215812602291290270679911515, 2987075920665537090900215637518293183, 0, -423805663837854511176275082, -1059389813204984485138455, 1111999611813939468227681], [2159895661144795139851290814676650480575779226227520, 54258050339509936216978463312018764809312382159902, 0, 163844952411582829847029931698310867008890693221, 97796850471448287218319831768373883621760, 1086555761722237280704792221285905297706, 0, 3432368013495886949119230647508956863, 36817151136065853413920614720, 403905274577904007676622042, 0, 1277761618925332241035241], [-8268631162574454416381592711046183826468766993743760, -30412875323342595482810132995604731746119968277838, 0, -91838840415134116221885786878075856261724848109, -66958333358237912141841547255922501768280, -591408367918104933889957784930735353914, 0, -1923840723029865623612603556671675927, -22280610969162194790788049960, -219856162551759941283757098, 0, -716184349775101774503889], [143993044076319675990086054311776698705051948415168, -40878726182835245114346518304940851524029984168128, 0, -123442942634971394252414450954547232177097985440, 6519790031429885814554655451224925574784, -793572330770595199072701829583568586224, 0, -2585877543935053099407403154407435000, 2454476742404390227594707648, -295033217787074202771579048, 0, -962639454818904232831160], [0, 148975943605687702300078232022443716637290135466406, 135829339504699573467421351914671042981911536595, -449867891659868928371298712260704071714035426113, 0, 3076918769711878537292410849808676280218, 2850627489845589363471341228811370235, -9424652075556360784074284490091471939, 0, 1145271065239867067596829826, 1061234228701642926762295, -3508502095324506483054173]];
    Rf_basisdens := [1, 39227189286452601223791083819025, 1470643645321241384549292325060346692279372050, 408512123700344829041470090294540747855381125, 735321822660620692274646162530173346139686025, 3676609113303103461373230812650866730698430125, 245107274220206897424882054176724448713228675, 7353218226606206922746461625301733461396860250, 3676609113303103461373230812650866730698430125, 1225536371101034487124410270883622243566143375, 735321822660620692274646162530173346139686025, 2451072742202068974248820541767244487132286750];
    Rf_basisnums := ChangeUniverse([[z : z in elt] : elt in Rf_num], Kf);
    Rfbasis := [Rf_basisnums[i]/Rf_basisdens[i] : i in [1..Degree(Kf)]];
    inp_vec := Vector(Rfbasis)*ChangeRing(Transpose(Matrix([[elt : elt in row] : row in input])),Kf);
    return Eltseq(inp_vec);
end function;


// To make the character of type GrpDrchElt, type "MakeCharacter_90_c();"
function MakeCharacter_90_c()
    N := 90;
    order := 2;
    char_gens := [11, 37];
    v := [2, 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;

// To make the character of type GrpDrchElt with Codomain the HeckeField, type "MakeCharacter_90_c_Hecke();"
function MakeCharacter_90_c_Hecke( : Kf := false)
    N := 90;
    order := 2;
    char_gens := [11, 37];
    char_values := [[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]];
    assert UnitGenerators(DirichletGroup(N)) eq char_gens;
    values := ConvertToHeckeField(char_values : pass_field := ISA(Type(Kf), Fld), Kf := Kf); // the value of chi on the gens as elements in the Hecke field
    F := Universe(values);// the Hecke field
    chi := DirichletCharacterFromValuesOnUnitGenerators(DirichletGroup(N,F),values);
    return chi;
end function;


function ExtendMultiplicatively(weight, aps, character)
    prec := NextPrime(NthPrime(#aps)) - 1; // we will able to figure out a_0 ... a_prec
    primes := PrimesUpTo(prec);
    prime_powers := primes;
    assert #primes eq #aps;
    log_prec := Floor(Log(prec)/Log(2)); // prec < 2^(log_prec+1)
    F := Universe(aps);
    FXY<X, Y> := PolynomialRing(F, 2);
    // 1/(1 - a_p T + p^(weight - 1) * char(p) T^2) = 1 + a_p T + a_{p^2} T^2 + ...
    R<T> := PowerSeriesRing(FXY : Precision := log_prec + 1);
    recursion := Coefficients(1/(1 - X*T + Y*T^2));
    coeffs := [F!0: i in [1..prec]];
    coeffs[1] := 1; //a_1
    for i := 1 to #primes do
        p := primes[i];
        coeffs[p] := aps[i];
        b := p^(weight - 1) * F!character(p);
        r := 2;
        p_power := p * p;
        //deals with powers of p
        while p_power le prec do
            Append(~prime_powers, p_power);
            coeffs[p_power] := Evaluate(recursion[r + 1], [aps[i], b]);
            p_power *:= p;
            r +:= 1;
        end while;    
    end for;
    Sort(~prime_powers);
    for pp in prime_powers do
        for k := 1 to Floor(prec/pp) do
            if GCD(k, pp) eq 1 then
                coeffs[pp*k] := coeffs[pp]*coeffs[k];
            end if;
        end for;
    end for;
    return coeffs;
end function;


function qexpCoeffs()
    // To make the coeffs of the qexp of the newform in the Hecke field type "qexpCoeffs();"
    weight := 12;
    raw_aps := [[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, -5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], [0, 8, -21, 0, 0, 0, 1, -1, 0, 0, 0, 0], [0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 1, 0], [0, -27817, 14, 0, 1, 0, 0, 0, 0, 0, 0, 0], [-40804, 0, 0, -17, 0, 4, 0, 0, 4, -1, 1, 0], [0, -271731, -1516, 0, 1, 0, -51, 0, 0, 0, 0, 0], [0, -1064, 2768, 0, 0, 0, -137, 124, 0, 0, 0, 32], [3994496, 0, 0, -71, 0, 20, 0, 0, 20, 9, -1, 0], [0, 0, 0, -1, 0, 7878, 0, 0, -16, 0, 47, 0], [0, -26272, 64616, 0, 0, 0, -3226, -1296, 0, 0, 0, -464], [0, 0, 0, -3012, 0, -6524, 0, 0, -1040, 0, 108, 0], [0, 893099, -185020, 0, -65, 0, -6137, 0, 0, 0, 0, 0], [0, 1072574, -228498, 0, 288, 0, -7751, 0, 0, 0, 0, 0], [0, -22008, 70413, 0, 0, 0, -2069, 12665, 0, 0, 0, -5456], [3257185402, 0, 0, 12592, 0, -3200, 0, 0, -3200, -208, -368, 0], [0, 0, 0, -16060, 0, -81422, 0, 0, -6640, 0, 3860, 0], [0, -151792, 390890, 0, 0, 0, -21050, 19714, 0, 0, 0, 16608], [0, 0, 0, -25024, 0, 252916, 0, 0, -5824, 0, -7552, 0], [-1262550504, 0, 0, 105389, 0, -26988, 0, 0, -26988, -2563, -2757, 0], [0, -373804416, 1519720, 0, 440, 0, 50452, 0, 0, 0, 0, 0], [0, 1562192, -3848024, 0, 0, 0, 198448, 44760, 0, 0, 0, -25392], [0, 0, 0, -326174, 0, 1172988, 0, 0, -111776, 0, 9154, 0], [0, -388424, 982708, 0, 0, 0, -37637, -32016, 0, 0, 0, -87328], [0, 0, 0, -439920, 0, 1742479, 0, 0, -139776, 0, -20592, 0], [0, 2720338478, -2620168, 0, 2278, 0, -88402, 0, 0, 0, 0, 0], [-35608253098, 0, 0, 470828, 0, -114288, 0, 0, -114288, 13676, -22188, 0], [0, -92921483, -6031650, 0, -18945, 0, -192214, 0, 0, 0, 0, 0], [0, 0, 0, -279576, 0, -4761251, 0, 0, -37344, 0, -167544, 0], [0, -9611128, 24714821, 0, 0, 0, -1224941, 781201, 0, 0, 0, 188400], [0, 10773438505, -60955766, 0, 16871, 0, -2039732, 0, 0, 0, 0, 0], [-136874924180, 0, 0, 674013, 0, -182276, 0, 0, -182276, -55091, -2429, 0], [0, -24522088, 60346536, 0, 0, 0, -3071885, -932188, 0, 0, 0, 52992], [550804411184, 0, 0, -468689, 0, 104492, 0, 0, 104492, -50721, 36665, 0], [0, 0, 0, 1009513, 0, -4571526, 0, 0, 373072, 0, -109703, 0], [0, 0, 0, 5609848, 0, 7117778, 0, 0, 1964128, 0, -282536, 0], [0, 18605888099, -24615452, 0, -176233, 0, -738273, 0, 0, 0, 0, 0], [0, 4218745184, -7745062, 0, -15578, 0, -250899, 0, 0, 0, 0, 0], [0, 13201032, -26236447, 0, 0, 0, 1793231, 6193725, 0, 0, 0, -1144816], [956727096402, 0, 0, -12040140, 0, 3032624, 0, 0, 3032624, 90356, 394508, 0], [0, -38779312, 90360374, 0, 0, 0, -4754126, -6961058, 0, 0, 0, -746304], [0, 0, 0, 4090078, 0, 15428080, 0, 0, 930144, 0, 1299646, 0], [0, -74979363724, -197033058, 0, 594198, 0, -6845061, 0, 0, 0, 0, 0], [-3499642085416, 0, 0, -12506315, 0, 3029044, 0, 0, 3029044, -390139, 599923, 0], [1068437028596, 0, 0, 3701687, 0, -854060, 0, 0, -854060, 285447, -244343, 0], [0, 0, 0, -12890776, 0, -126156557, 0, 0, -3209248, 0, -3263032, 0], [0, -57951760064, -1111856920, 0, -1091720, 0, -36552428, 0, 0, 0, 0, 0], [-8048086525086, 0, 0, 20010028, 0, -5000048, 0, 0, -5000048, 9836, -718508, 0], [0, -23103142085, -997675974, 0, -710631, 0, -32924238, 0, 0, 0, 0, 0], [0, -432473648, 1061476606, 0, 0, 0, -53994854, -19964922, 0, 0, 0, -514816], [3034833550690, 0, 0, 13893696, 0, -3851808, 0, 0, -3851808, -1513536, 98400, 0], [0, -119229000, 315449125, 0, 0, 0, -13946641, 13548689, 0, 0, 0, -7655872], [0, -37022618517, -260459150, 0, 1650065, 0, -9452002, 0, 0, 0, 0, 0], [0, -255612533885, -346299036, 0, 1874871, 0, -12418241, 0, 0, 0, 0, 0], [0, 315114152, -846631496, 0, 0, 0, 37308005, -50521060, 0, 0, 0, 16650112], [9147120950808, 0, 0, 58365667, 0, -14057012, 0, 0, -14057012, 2137619, -2924267, 0], [0, 0, 0, -70597211, 0, 112665946, 0, 0, -18814192, 0, -14154635, 0], [0, -22438560, 49928520, 0, 0, 0, -233904, -16451544, 0, 0, 0, -20567328], [0, 0, 0, -78035140, 0, 166184118, 0, 0, -21308560, 0, -14109460, 0], [0, -957705058020, 2221210770, 0, 496650, 0, 73808589, 0, 0, 0, 0, 0], [0, 0, 0, -32565368, 0, -56309980, 0, 0, -13154400, 0, 6897832, 0], [0, 1396117072, -3552953054, 0, 0, 0, 168907406, -40231462, 0, 0, 0, 44857824], [0, 0, 0, 2116534, 0, -353689272, 0, 0, -9193184, 0, 29696086, 0], [0, 1380418963392, -252913286, 0, -552154, 0, -8172771, 0, 0, 0, 0, 0], [-4859610461804, 0, 0, -207171281, 0, 50826228, 0, 0, 50826228, -3866369, 8917905, 0], [0, 0, 0, 248970252, 0, -776309332, 0, 0, 83386784, 0, -1190100, 0], [0, 1948339012886, 3143855296, 0, 9032294, 0, 100580106, 0, 0, 0, 0, 0], [26579704270278, 0, 0, -251680652, 0, 64104944, 0, 0, 64104944, 4739124, 7126796, 0], [0, -3626946224181, -6732754638, 0, -2955087, 0, -223046114, 0, 0, 0, 0, 0], [0, 1110505056, -2571495028, 0, 0, 0, 139264180, 202963420, 0, 0, 0, -3608384], [0, 0, 0, 265515720, 0, 1384206057, 0, 0, 67789792, 0, 62146344, 0], [0, 0, 0, 252906211, 0, 2546605510, 0, 0, 77087440, 0, 21643891, 0], [69733142466620, 0, 0, -98590313, 0, 23591012, 0, 0, 23591012, -4226265, 5181401, 0], [0, -5552973367239, 11305403220, 0, -3970035, 0, 378699457, 0, 0, 0, 0, 0], [0, -645810504, 1433351212, 0, 0, 0, -104969141, -84203736, 0, 0, 0, 193942624], [0, 0, 0, -254082933, 0, -4585260770, 0, 0, -91539840, 0, 20536587, 0], [0, 1072523840, -2616633776, 0, 0, 0, 136337434, 55588008, 0, 0, 0, -18175632], [118052937072378, 0, 0, -131310410, 0, 33327112, 0, 0, 33327112, 1998038, 3904714, 0], [0, 3963009864, -10291285233, 0, 0, 0, 503563061, -416507885, 0, 0, 0, -65494624], [-122241157782786, 0, 0, -78878264, 0, 25976416, 0, 0, 25976416, 25027400, -7015112, 0], [0, 13107429152, -31938713424, 0, 0, 0, 1651569112, 777297584, 0, 0, 0, -105123744], [0, 0, 0, -387354818, 0, 3257724572, 0, 0, -149917600, 0, 62397982, 0], [309909593436408, 0, 0, 330659945, 0, -81442620, 0, 0, -81442620, 4889465, -13730145, 0], [0, -14703761570148, -6308054840, 0, -4636780, 0, -208104664, 0, 0, 0, 0, 0], [0, 4845624528, -13040798888, 0, 0, 0, 602351006, -913329328, 0, 0, 0, 26816480], [0, 0, 0, -434424026, 0, -332048988, 0, 0, -110490816, 0, -102951578, 0], [0, -15813853400, 39797948832, 0, 0, 0, -2011562763, 402639684, 0, 0, 0, 278648704], [0, 0, 0, -1495421520, 0, -5934720151, 0, 0, -509674112, 0, 33600816, 0], [0, 2927857574914, 24524401504, 0, 28837586, 0, 804022510, 0, 0, 0, 0, 0], [0, -14002644624, 36227401382, 0, 0, 0, -1745927094, 1203175886, 0, 0, 0, -35227872], [0, 0, 0, -1484124344, 0, 11265953247, 0, 0, -440041888, 0, -163998680, 0], [0, -10518458392, 24548291837, 0, 0, 0, -1340849981, -1643683415, 0, 0, 0, 208341456], [423088362163996, 0, 0, 1679277165, 0, -431161060, 0, 0, -431161060, -45367075, -42151405, 0], [0, -34446857699495, -16434279156, 0, 3482901, 0, -549434659, 0, 0, 0, 0, 0], [0, -16440145384, 43125046092, 0, 0, 0, -2012441493, 1854375912, 0, 0, 0, -340613440], [0, -8670741936, 21711511952, 0, 0, 0, -972786450, -409568056, 0, 0, 0, -888450336], [0, 0, 0, 1965930072, 0, -4139930038, 0, 0, 532514528, 0, 368386488, 0], [-389244052102822, 0, 0, -2890331180, 0, 700990064, 0, 0, 700990064, -86370924, 137157548, 0], [0, 0, 0, 2389562292, 0, 7399652580, 0, 0, 682390096, 0, 342392004, 0], [0, 35602157229408, -22140021286, 0, 26327206, 0, -750286739, 0, 0, 0, 0, 0], [0, -45377988024254, 84348357472, 0, -21756142, 0, 2821764782, 0, 0, 0, 0, 0], [0, -48367900576, 120612786752, 0, 0, 0, -5955570018, -668634904, 0, 0, 0, -723340432], [-257797626605356, 0, 0, 908697887, 0, -209023564, 0, 0, -209023564, 72603631, -60976351, 0], [0, 0, 0, 3669872360, 0, -34366216028, 0, 0, 1124624704, 0, 295998248, 0], [0, 37641111335854, 57252788984, 0, -170078234, 0, 1987796142, 0, 0, 0, 0, 0], [0, -56144546968359, -41360364546, 0, 30521571, 0, -1392922218, 0, 0, 0, 0, 0], [0, 50726081344, -129655198236, 0, 0, 0, 6189557028, -2235182316, 0, 0, 0, 1209625120], [206104615093990, 0, 0, -5283216402, 0, 1268894632, 0, 0, 1268894632, -207637874, 270258322, 0], [0, 0, 0, -1596793200, 0, 55116898663, 0, 0, -419480768, 0, -338350896, 0], [0, 0, 0, 2278742153, 0, -1073372958, 0, 0, 611644128, 0, 443809769, 0], [0, 16432711796809, -132620136378, 0, 256974603, 0, -4540592694, 0, 0, 0, 0, 0], [-164214214385380, 0, 0, -5733491415, 0, 1353845324, 0, 0, 1353845324, -318110119, 329739383, 0], [-61696780602280, 0, 0, -3619078645, 0, 982649388, 0, 0, 982649388, 311518907, 6870381, 0], [0, -50028762000, 123129529816, 0, 0, 0, -6187456290, -2206931024, 0, 0, 0, -529111680], [0, 0, 0, -4805932912, 0, -10378282866, 0, 0, -1436310848, 0, -497000368, 0], [0, 29896200471933, 113316871724, 0, -294326279, 0, 3914581321, 0, 0, 0, 0, 0], [0, -36424434608898, -348027280490, 0, -139483720, 0, -11535816947, 0, 0, 0, 0, 0], [0, 66155215448, -167800816589, 0, 0, 0, 8536918509, -3482844281, 0, 0, 0, -2140132624], [-419885277801998, 0, 0, 9156035760, 0, -2276735744, 0, 0, -2276735744, 49092784, -346287728, 0], [0, 0, 0, 4824813982, 0, 77349914924, 0, 0, 1693941792, 0, -257011394, 0], [0, 13127790188390, -69227126718, 0, 135023988, 0, -2370582085, 0, 0, 0, 0, 0], [0, 18215169282478, 197222141184, 0, -538832514, 0, 6825526546, 0, 0, 0, 0, 0], [-1174893502204756, 0, 0, 934618411, 0, -385775020, 0, 0, -385775020, -608481669, 205667141, 0], [0, -71789688504, 185461425916, 0, 0, 0, -8796315099, 5277620800, 0, 0, 0, -1419167712], [-624597735609534, 0, 0, 5475918512, 0, -1221802560, 0, 0, -1221802560, 588708272, -426846768, 0], [0, 180750733024, -456013316212, 0, 0, 0, 22960143060, -5601689380, 0, 0, 0, -2930411456], [0, 0, 0, -1285568184, 0, 16859674507, 0, 0, -498482656, 0, 209879784, 0], [0, 0, 0, -20518006173, 0, 61849680710, 0, 0, -6412452592, 0, -1280648397, 0], [794823173536620, 0, 0, 11704496153, 0, -3063975124, 0, 0, -3063975124, -551404343, -201394585, 0], [0, 131179212253315, 908676841404, 0, 679556991, 0, 29972101451, 0, 0, 0, 0, 0], [-3704200634062880, 0, 0, 18126361893, 0, -4630298684, 0, 0, -4630298684, -394832843, -492257165, 0], [0, 0, 0, 7701991985, 0, 92638907234, 0, 0, 2777852592, 0, -631565791, 0], [0, 19947323024, -60629756832, 0, 0, 0, 1606989930, -7215747480, 0, 0, 0, 7091403584], [1182258971909314, 0, 0, 9355941582, 0, -2574032824, 0, 0, -2574032824, -940189714, 35219474, 0], [0, 199513510932936, -269688284034, 0, 323822634, 0, -9140726697, 0, 0, 0, 0, 0], [0, 0, 0, -998343184, 0, -3273123462, 0, 0, -1612467136, 0, 3839058224, 0], [0, -24714310387412, -306517773178, 0, -1068135002, 0, -9718796105, 0, 0, 0, 0, 0], [0, -360540101616, 880179443472, 0, 0, 0, -45414753918, -19781845704, 0, 0, 0, 2777929728], [-4750917143275252, 0, 0, -14793440957, 0, 3585240308, 0, 0, 3585240308, -452479725, 706097069, 0], [0, -144184273304, 352476367576, 0, 0, 0, -16321627655, -14789941716, 0, 0, 0, -13611252064], [0, 0, 0, -7387052024, 0, 112860173961, 0, 0, -1026229600, 0, -4308363224, 0], [0, -70332451951012, 55340303696, 0, 1357617004, 0, 1211122188, 0, 0, 0, 0, 0], [5632441030749926, 0, 0, -18476622448, 0, 4917696640, 0, 0, 4917696640, 1194164112, 190743472, 0], [0, 91751694848, -214127302688, 0, 0, 0, 9882307776, 21598550752, 0, 0, 0, 12693232640], [0, 0, 0, 51212083761, 0, -139055152918, 0, 0, 15407968352, 0, 4988178705, 0], [0, -4892327731777, -1119852990010, 0, 14895985, 0, -37335384460, 0, 0, 0, 0, 0], [9597226385845420, 0, 0, 18365957435, 0, -4276886124, 0, 0, -4276886124, 1258412939, -1150303563, 0], [0, 318051495791549, -533803135028, 0, 1227213593, 0, -18366137511, 0, 0, 0, 0, 0], [0, 0, 0, -31156895679, 0, -58840383502, 0, 0, -9396485616, 0, -2967438831, 0], [0, -626748747888, 1597696627824, 0, 0, 0, -79491751092, 35417388528, 0, 0, 0, 9185260848], [0, 0, 0, 23470874896, 0, -34043494882, 0, 0, 8658393408, 0, -2504305328, 0], [0, -143760874850701, -54339919708, 0, -592275737, 0, -1534935313, 0, 0, 0, 0, 0], [0, 0, 0, 46348037052, 0, 227630595216, 0, 0, 13055007984, 0, 7183013100, 0], [0, 324673449376, -803683525176, 0, 0, 0, 38460434064, 16495086696, 0, 0, 0, 16989976864], [20528120303486848, 0, 0, -11711277657, 0, 2613006380, 0, 0, 2613006380, -1259252137, 912966113, 0], [0, -73540597488, 217711337024, 0, 0, 0, -10249616006, 38088008584, 0, 0, 0, 8456330560], [0, 0, 0, 23690825132, 0, 37427595952, 0, 0, 10118806880, 0, -6665595508, 0], [0, -467606945048, 1205913564452, 0, 0, 0, -58804514731, 38310788232, 0, 0, 0, 2829172800], [0, -129800715576958, 1553815600792, 0, 2378969978, 0, 50683667370, 0, 0, 0, 0, 0], [0, 428640332645079, -1946440805306, 0, 841591241, 0, -65274102756, 0, 0, 0, 0, 0], [0, 0, 0, -81158409920, 0, -103063275723, 0, 0, -22569415232, 0, -13450164224, 0], [0, -35350557960, 28976751177, 0, 0, 0, -2236342317, -68129553435, 0, 0, 0, -17459819424], [0, -456701793458981, -688575988882, 0, -161470523, 0, -22877180052, 0, 0, 0, 0, 0], [0, 295472730118363, 1468857464460, 0, 2504436615, 0, 47793178395, 0, 0, 0, 0, 0], [-30020882569449368, 0, 0, 69190284117, 0, -17615465004, 0, 0, -17615465004, -1271575899, -1971533901, 0], [0, 0, 0, -20847467675, 0, 383375022650, 0, 0, -8918634816, 0, 5908436773, 0]];
    aps := ConvertToHeckeField(raw_aps);
    chi := MakeCharacter_90_c_Hecke( : Kf := Universe(aps));
    return ExtendMultiplicatively(weight, aps, chi);
end function;


// To make the newform (type ModFrm), type "MakeNewformModFrm_90_12_c_d();".
// This may take a long time!  To see verbose output, uncomment the SetVerbose lines below.
// The precision argument determines an initial guess on how many Fourier coefficients to use.
// This guess is increased enough to uniquely determine the newform.
function MakeNewformModFrm_90_12_c_d(:prec:=12)
    chi := MakeCharacter_90_c();
    f_vec := qexpCoeffs();
    Kf := Universe(f_vec);
    // SetVerbose("ModularForms", true);
    // SetVerbose("ModularSymbols", true);
    S := CuspidalSubspace(ModularForms(chi, 12));
    S := BaseChange(S, Kf);
    maxprec := NextPrime(997) - 1;
    while true do
        trunc_vec := Vector(Kf, [0] cat [f_vec[i]: i in [1..prec]]);
        B := Basis(S, prec + 1);
        S_basismat := Matrix([AbsEltseq(g): g in B]);
        if Rank(S_basismat) eq Min(NumberOfRows(S_basismat), NumberOfColumns(S_basismat)) then
            S_basismat := ChangeRing(S_basismat,Kf);
            f_lincom := Solution(S_basismat,trunc_vec);
            f := &+[f_lincom[i]*Basis(S)[i] : i in [1..#Basis(S)]];
            return f;
        end if;
        error if prec eq maxprec, "Unable to distinguish newform within newspace";
        prec := Min(Ceiling(1.25 * prec), maxprec);
    end while;
end function;


// To make the Hecke irreducible modular symbols subspace (type ModSym)
// containing the newform, type "MakeNewformModSym_90_12_c_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_90_12_c_d( : sign := -1)
    R<x> := PolynomialRing(Rationals());
    chi := MakeCharacter_90_c();
    // SetVerbose("ModularSymbols", true);
    Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,12,sign)));
    Vf := Kernel([<7,R![2092470522763866018758311936, 0, 11617977439224834048, 0, 7476709488, 0, 1]>],Snew);
    return Vf;
end function;