
// Make newform 5.26.a.a in Magma, downloaded from the LMFDB on 25 April 2024.
// To make the character of type GrpDrchElt, type "MakeCharacter_5_a();"
// To make the coeffs of the qexp of the newform in the Hecke field type "qexpCoeffs();"
// To make the newform (type ModFrm), type "MakeNewformModFrm_5_26_a_a();".
// 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_5_26_a_a();".
// 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 := [628040620025, 106836475, -1769856, -1, 1];
        Kf := NumberField(Polynomial([elt : elt in poly]));
        AssignNames(~Kf, ["nu"]);
    end if;
    Rf_num := [[1, 0, 0, 0], [-2, 8, 0, 0], [-2326754810, -8182184, 3344, 8], [-114821444708, -22087280, 132608, 32]];
    Rf_basisdens := [1, 1, 1863, 1863];
    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_5_a();"
function MakeCharacter_5_a()
    N := 5;
    order := 1;
    char_gens := [2];
    v := [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_5_a_Hecke(Kf)
    return MakeCharacter_5_a();
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+1)]];
    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 := 26;
    raw_aps := [[150, -1, 0, 0], [-199650, 17, 1, 0], [-244140625, 0, 0, 0], [-12234526750, -518011, -16251, 600], [-5910363447648, 1075583630, 5641790, 70840], [27265978556450, 9662050132, 2644660, -1733200], [-84360039716550, -54854185156, -77226148, -138479600], [-1441489308939940, -744402140552, 3279542344, 349547864], [-21072479792895450, 2899924048647, -46550337721, 3530569000], [-382692926268611610, -52760007306488, -558355155064, -50563923584], [-851333908088122948, 106665083990390, -2690112565130, -101241106480], [13712415287709586850, -1231467332025096, -23308224033352, -1278048442400], [73691273249290975302, -13465003833244460, -34679845399180, -588375511280], [-316711878383410134250, 6259370747226577, -17831254012063, -6216191906000], [206620459239031225050, -5651424362839891, -108394513206259, 24094514737000], [1826081461359751973850, -191982692738919508, 2309293256614476, 93254063422800], [-554291050793205812820, 756467302249972244, -11152036224412668, 196440904818792], [-12729424490120458931998, -3057311652643032800, 9797975705069600, -397197746230400], [-19167739007379767715550, 7300107198068137619, -630066655100733, 1206328719080400], [37574512556425340571252, 9828273159387287350, 21468252350558550, -3770437917835200], [-26693455484694346733950, 7456943577723723772, 43139596017491484, 3805843116579600], [-37994543570635888791160, -25334559648133548028, 241830647331504516, -8576260790510304], [29393423300542850154150, 3586663613726829837, 90120258438242493, 31449910085160000], [-1715242918344937269340230, -105505744093652345784, -2011227556507468152, 14171623694563488], [2134587606410810350554050, -405078486960438328716, -177371928261025964, -225711049459037200], [-1521192538011371599742298, 1074260051049208705560, -59176564940700520, 117895769106926080], [-8929138117367585045741650, 315915568864645557267, -708968899508292589, -27848155960107800], [3979201761412945460996250, 3006625330010502840339, 304418343384557539, 514355732298579200], [-22889618485963427085322270, -14485372994425619016, 4064947362737084152, -70368514805089888], [-4827864196715374762172550, 3503131023303312597032, -37209732276914248600, 1862262086768800], [169280182957243633138743650, -18784506710050987949951, 121740725880622060385, 1275926485721422600], [125411881703127743559872352, 14364072003708631241730, 282252082599663675090, -2244999302048778360], [200694511319832432830240850, -28800043813820922183696, -176525205216347751952, -9778878118762755200], [-318756438162327247308526180, 6761043228993584049756, 353326185057933925068, -587702942084352792], [244569411630871872383425050, -102114612828006971530760, -215998536922895271880, 17790210355241900320], [-279780892638403916717789548, 76195435938512449783510, 243310618851285459830, -17989586161377528320], [142400344813747564000018250, 315092749647219968186664, -1168952705955693872536, 58039297301758304800], [-2353874357400853371999011050, 7093013221487541218157, 952864331225842045405, 117082448907308818400], [-2317497170611540593876065550, -113158240058020465355931, -4366174483633518988123, -78939109000686825800], [1413602842547086455759865050, -634724713336448386913928, 5510905793341413262904, 75503993268200274400], [-1863285080066224396306287660, 679875293263924133572172, -3180580989662340018084, -213633822594772921704], [-7057683563975564174766619498, 721043255248215130486800, 4952942916987958504400, -358609696959724757600], [12713552550575595166070902452, 1856824765606639170676810, -3112385182564118385270, 493239691491871576080], [-28645304615321348511018835750, -2590718269214800085325348, 8983640614929014468092, -158653374284209538800], [15104492987224717317454408050, 2556585138888721879086684, 8330161426428537354236, -1482770673663879662000], [-40808432402671847726468812600, 1786088778788147069103520, 3970318976100805477760, 1833471023140344985360], [-57042964518797239338413824048, -6677419693391210854193790, 31863622144111898710930, -4782951871820223709720], [106309065996448965142428022550, -12942632620254382327313253, -66891014379728879574981, 2123934095896008144600], [203092941907157566904149066650, 14074878476766004350076399, 108978225890053385612575, -723411466483198886800], [-15797320318774254052491539410, 23992657935419380042657472, 52464314656150715353216, 7140039262285652753696], [-196898542247074599359477257350, -55497538684691940364764588, -130098444728619469512652, 3964921238090324441200], [-397488900030030335406696502680, 13527646814569941266259956, 359813176435969662308468, -8326445770680500084192], [-66144390221434785252357712498, -16401662275637007649298300, -558602114304439263143900, 13772290941479564675600], [-292218285613275930857528065248, 55475801041554690374198550, 375201787095075653478150, 9040564557627670061400], [1107894303482732183284834784250, -120776097768514075066269336, 247529083546773590793384, 6162918340879010407200], [-588469843356132885621467080050, -143369421859020649950680693, 644122177705323220856395, -37709702565367080460600], [-1327793418630953510219461614990, 134541444811161812319493808, 596596435387989239538224, -21316896062496092622656], [455467637112285563454220324052, -111434177210225666997502310, 206067566501075981975770, 34764140984889356379920], [-2084557457280283780067705969350, 94856584982560343826852824, 656317442814111383524120, 89873080846554340676000], [-2476984170631952826048568000698, -371381302923732712768761060, 785166390584193314945020, 34902355566395194719920], [-239582708771984110892488896850, -271959409628234303552478763, -2370111967719657060012507, -18633700479164169310800], [5307826774899944360295664949250, -71770735750151088776743248, 938205644783912903825072, 59106394464961611817600], [895575465455885273093635177250, -108737521658902477383927461, -6350290833501134170825781, 17007964010950084012400], [386184993340065264733506743052, 1582855230480610318326975090, -3518922951568993889938030, -302957250170958276046880], [8138554474815141064506907841450, 569424144285646881354183432, 6305887347249394830445000, -181865369347372958980000], [14132618767977978597984464727450, -1404038537389879179801279356, 6766483787670142868985572, 236592355197875348609200], [3252286932155501416718788410152, 3158192689775272813868102570, -2713907147542077379929190, -170709617185173240839240], [15778153281171732250618178542850, 2923017601429332756707589304, 25841061372369209017220088, -965361961565946641666400], [-42643299494123574353878191901950, -2002975344183377852014328641, 38477391865282728320988751, -719079468341945612756800], [16412399172045606939048800811350, -3784061893747076208449538320, -4215468581340896637719760, -135988545028845688121760], [15804728492500831701161446568850, -4216339111413026358366017208, -28059976063500349449441784, 1543698623103298913116000], [-28766491836008019327492034033320, -1378286036571731797623075456, 17778547981099708587065632, -1290481646718235969209808], [-67297469106745292344744292970550, 9251992805833057498896925469, 51537476172264413203998397, -207080958635226482054200], [5484979567173640659427005429050, 10389226815087707473379118472, 67852364247532721850303304, 2317725114927950454629600], [-26269140317457049421391609937660, -11771704746819038484405779528, -997501607224423048226584, -2813260234183358142217304], [92397188508532226209690929498150, -5917745092645442013439120413, 15387325625119055578901123, 4640831918120253593848600], [164422874193569504274098712876570, 644368102853563719073233456, 168323571782509045540885168, 447306680898744453343808], [-57556180964958474521874168041950, -12732563069244792984326863916, 191946590445931531835106356, 2686573076703455471095600], [151307151741091903084742656117602, 8642136271514243225803109280, -138939275222195336667105760, -1769192740969608646544960], [29887361396929936659569889200030, -50845504143412464752774427876, 23413502935092076866066172, 9857381240455229215779632], [234026668334802470676616989942660, 22899006174248966097758746828, -556593210898010378057202916, 10949422982036328636803704], [332023308591901315877844597103802, -19044576894103790222971570760, 381034773240127209226332920, 18394105485821137356860320], [-416042801885274399094644149285148, -109591301038319780124830640270, -60778280668871559686920910, 2083072862750631420970640], [302797969583680356809816514627650, 64450652231943544878151690612, -471551846167854160953029292, -3044392178683660915290000], [-690614782290811947414834401729080, 22868128919474358298869550336, -238952957797313235564335392, -20005563395990314772314352], [136454518425782280548694105987750, -107072202774278949374971209423, 477335840312608698537547777, -16793860129991282258393200], [-601730871275946992625448904720250, -7244858685318324281718853900, 244005903431258805572682900, 61031064080330154928294800], [-569009911754593359240560585971750, 130298653373234484790820683264, -1251712355415187694859507456, -33764321690913277592380800], [-1467746555978963408946921994343298, 14311346238576236588137813560, -434668767862947823135176520, -27357186398928012030129920], [134712942650920032876723189387950, 86687763246936771857268546407, 36476406371411156854518535, 68186295708343264303355000], [768496414037860054770624529368450, -317386706421913062944514509381, -421650886628816122905053653, -56039350142360551949306000], [-822624550130065950132443150334360, -13658901453725515917491813388, -1381325930830362278543393164, -151554435402937111796482784], [-748948103124451317567576542134150, -30182917852013481194978651871, -94774582789665701688307167, 18368280060169525019172600], [426904764318751432058134951525152, 1512713823542421186133492870, 722955727439151795890846710, -54673685193653710661188840], [1587371420911037048158150525588700, -262287693669815505084248488640, -209419997814302457472467120, 244991687885503146064095480], [1478450164942615538506308095134350, 126839769317870407050538271467, 5153349444494332170379029291, 65299293889757386652795400], [-931865206672945823157146266006170, 304931883169543068755509693664, 6467344773699932235421285792, 116329871702427410728456352], [-4630449253414037164067082824784198, -832813474188897015835899964160, -1580791411492667188464641280, 435662148673386979075749120], [6939638697588002125192484696389550, 909178181382508626228959598397, -279549294673190014350283571, -3404645535213603605950000], [-5481076015092861048660208996314898, 1645550224339445032518168629480, 1513686024140275033072580840, 455687726219296844848488640], [-6792285772801848707625608265434950, -1160354477078006130414757800641, -7477641812799826778146360209, 49588315483637816825622000], [-10455924965767567664072304795474750, -1237764918232760111502620442936, 8993501196935931628417318024, -860346647985090386396096800], [13527946765349955722021900126599950, -1292389926488016611384210500143, 17338141272971746247638608385, 226552879761602605854533600], [-19557911263398171829064122981753890, 2130175306264595019810206904588, -8351644258180575535514495636, -174248676556829182266345616], [-7024805131275873380687911770053848, 2260755373459066038629624706570, 20546249802934166627690274810, 181790729586780856708472760], [4687442481561133481224516737708650, -627010000180428531445956232176, -20054074569058864048450209520, 183214488383509234828499200], [7016113042544338270601623393805850, 2849860694497719314464656054579, 16379489399051780961740147843, -137147924280701058535985600], [-1058392942148350867291863735984750, -2770875473035830755029187135648, -43855994506342867130340378528, 316513764795091744446518400], [24023456210207783167843309187313600, 2782141930938020668188608618980, -1568859333394967020475444860, 1320966799753446755112954640], [-22994287624180741746229829386807498, 1171906923070410057027847159500, -13030357806179195082692748500, 381834303476370801329606000], [21733068148879505356883910025570250, 2713318762953490969648308661789, -27785334584921668443765899971, -1433192144437477703509201400], [-37723458487618928306289447715179550, -343632411685974673137803883068, -22494639063855623864348147420, -333852896912674708591272400], [-35972156364781222077588465183452550, 2548983983807524681233575162244, -20964492309422988083357585948, 286047544372704988237511600], [-34305207503100176645132301063617740, -9922762961907218303459348278992, -6213575289279719323962025376, -1081301533190886454277228056], [41716187194224685857545135242596452, -3115263367055577125324706900290, 26287742473943224163240622430, 2673634186033279055431993280], [57822074055538689800498183408766702, 6849072772284889430535974471460, -45086236402905462116986005820, 2582506067675868757414827280], [-40396672073638401261683847929511250, 1523448543085093448865042379577, 59992979770478768806327920297, 1345782563954775457140691200], [29365174908710776852344880803559050, 4421834031162023116101390938009, 11110913998666773353780502041, -5649591984854836333315665800], [-77515964816403484864677568795908150, 3879166899911878642053982372492, -51050931410823472696428212564, 4319718969149431555967834000], [155825329936625180247622140459474180, 11587742712436701514008313090244, -77783359405372991133331853868, 3132009937013851757749992792], [44215926954493618218047643214033802, -7716425047214030272308891636560, -150262941617076718089820470480, -1402452064649114185033894080], [97888327711157326186536569601612050, -4654199820642202319709738475828, -211405457088688476061971219476, -944150398617772652518044400], [9863319588757000511613942722449650, 9487411797190226690600583402324, 33626738675716686558873371700, 198665785967892298696911600], [-102201048333992187482386549008515850, -5930484223932363887491015062063, 50960684784320390326968949473, 7302566220919691653106924400], [104690304291850318832666524591198952, -4345592193240592236420512545490, -43937775675180279468984015170, -14094393297780120858928235320], [78429247214848217844811072052802, -34720139270423311136353328977160, -91868086516234172503662798280, 1890553475529904331214505120], [271428511598934238460573994945788030, 877115688976329297737325713224, -1770985421591325331757091128, 17127818808403759974065234432], [-521420687398172707278302630496268440, -50378201915912205008677287053052, -118319074301772829586116994556, 6535265957229548963439552864], [-207432867784154197365793378375670350, -5684544863039651144869234073451, 46754376403769268615051240405, -662695793785811420001453000], [-308799511716124845276959741627831350, -1467840268538695334941492068288, -320606783592031045260729072192, 1432918503278138980684372800], [398026511366031336219780171175298420, -7942777281769747014057871861964, -416120432398272325583164144892, -8382411686595735048776975752], [-93126686968672066971924714193868250, 64749770923576363792267425314327, -122278623057500892704883617193, -35383839011381023392752544600], [-389177296576765506035285829537658948, 43281033648926023064623036005190, 691844179562581571673667907270, -7297570602149886701218980080], [41063315008292184640913626070746250, -61583402367166170157453804318736, -453612488894889175326001745296, -7377990670120261329029777600], [-443986466108367014077486504297083798, 92068184895955897197690514064160, 677127782606828187040155477280, -4275552428501011309375429120], [-8281052628069815442820709192356990, 103459670918965949964195662963208, 248873203870994243967420292424, 11776181743689352851628416544], [173861087818818157547908434878890050, 155869125666863882925978235172172, -571267163092217015884795988116, 6169304138027068494766982800], [-1838371551165866500738313974736542150, 105179485032055793555146367355079, 434147152439637833429599180983, 20156811720938376093241765200], [612639186235264969350368229341311050, -38019276930786242405188931757716, -372102420107422384197287652724, -2165382817939002658569340400], [1228651456533345319726109134561523130, -187415548987291598864377303268096, -24186405236263493988442437888, 32089388397515187324368508672], [-2022368564735890994786861457244916848, -180300248668735326943954728387130, -424817725537782766170701105290, -19530384800613433806837368840], [-584895258642271175095867171995243798, -57492354420858056102332317770040, -476553296142466800517884723320, -51247329508325690945265154720], [-1335469544824731145817027889448843450, 27971259435557548487638466575047, -1538144823493558056693426512761, 62513172942474421367113143400], [-789969114394384255517898247883236350, -228269876409092088909273072730801, 1321182558453623607053615455, -14109679019654228325260012800], [-1103530094198986129432887682839105310, 138598845359987566216819698268352, 1111104805528028116509367973056, 34426363388761984810636737536], [548760512313786196350831684906322320, -372848829068242166004398320128644, 2965617037709109349827812525468, -4402575219952291405160298992], [-3024262103055249270962976471814855150, -86131730143825208993692979195908, 1970267950013415125228176773276, -19755858405330843223080740400], [-3202028104452038830241369804337336750, -66894598367772273900156076888936, 1249362495933992333552831952984, 48241240539888768062535170400], [948486371718448646490694197630247580, 916098465236606747558952634057564, -1189597040604445174607326054708, 9124737638625276249198856552], [2889071013979305852634063008668902950, -286807151101940007574896365738693, 563957825794931080847848585755, 58837834705888946428578828600], [55804184364539573409505113100470650, 104929445955226020718461153335024, -1312849717011192932620111618320, -42062723016152779454849635200], [1336349341036535905512537491930008302, -543655679714771598708114229697860, 535062494096472658080299182620, -106576056761441599767619182480], [2025842375041991522776665272648399150, -861192806366664502489756132162863, 2594829824035466383784334492033, -102451069413696723618671080800], [3731246522803930209834717864885572850, 331065414942999868965639232309029, -2154199109471923662978581172507, -213694185076642723902245733000], [-1034738719458588650977998189397924750, 314051591438072668161820647350639, -2740417512358242796148334255041, 72938957273121488814007268000], [-2706872323040004662151119308543604148, -52490787531649866149915407282570, -196668555117602298178775684810, -15545727480523925320975455760], [-1776087281111746954720542600482313040, -628030320108192330052952314568132, 6912735697022552355290258493404, -364644511673890226599398566576], [-4184859986047393742737432395264797610, 1055150429240367640512204333413812, -8996208669259791362183716353964, -350552735839130033433902803184], [-2129521068141343090142692944943504150, -1857318067649320314312224754056596, 2732953552614540913308052492428, -204670743635156277217805170800], [-3174537871411076431967560479668270898, 837629513687492762209549989539680, 9011188312622391946649464065440, 637897942915247705577840502240], [-14306736825147740199583099059012127950, -235815957533161426858518477453741, 4287225461435497369229101238851, 219867867457638019221115612400], [6099023453784984161489073866174657850, 1298999483489042705553153465766592, 1803009487000932348159307116736, -924005308972243476176136275200], [72664418763410593544963385294245450, 192013335751667335388009164011969, -12528150401251827359369131830783, 561162823189139429122576666200], [-15308515651018462472718996041596326648, 342775111738112658748133379350730, -1311253235722276807208567923910, 244752683272155482990644363640], [853625257244470786925432950711549650, -865097493884678854825415079165076, 3774817473392599455429943434380, 675940897537928250041005546000], [10717322264603209631508617591090667150, -606002559915204108932834486963613, -243547540996290293121621603357, -895623372834808324627156608600], [-17868054779205482766706501112262020548, -3070066288296397585590133877301090, -8672804992273518309496483911970, 447657307117772126267523888880], [-6498623759531113669996928307845330950, 2470285511322898558483084280018084, 24674010957646785442053288671876, -71791002764792404803817706000]];
    aps := ConvertToHeckeField(raw_aps);
    chi := MakeCharacter_5_a_Hecke(Universe(aps));
    return ExtendMultiplicatively(weight, aps, chi);
end function;


// To make the newform (type ModFrm), type "MakeNewformModFrm_5_26_a_a();".
// 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_5_26_a_a(:prec:=4)
    chi := MakeCharacter_5_a();
    f_vec := qexpCoeffs();
    Kf := Universe(f_vec);
    // SetVerbose("ModularForms", true);
    // SetVerbose("ModularSymbols", true);
    S := CuspidalSubspace(ModularForms(chi, 26));
    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_5_26_a_a();".
// 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_5_26_a_a( : sign := -1)
    R<x> := PolynomialRing(Rationals());
    chi := MakeCharacter_5_a();
    // SetVerbose("ModularSymbols", true);
    Snew := NewSubspace(CuspidalSubspace(ModularSymbols(chi,26,sign)));
    Vf := Kernel([<2,R![2578152318959616, -20279449600, -113135808, -600, 1]>],Snew);
    return Vf;
end function;