P:=PolynomialRing(Rationals());
K<t>:=FieldOfFractions(P);

f:=673795044503345766407627366840406899945071834829625705462611991129585855136934314353942409012005098209034092373056886915174400000000*t^30 -
    1085284022951210361300432994157199478935701632054360264567044409936407065583505843681822380599414546220532526126392189599744000000*t^27 -
    51504921518215715825914555691698114485100142543415235439978662914013010813729009218841119167094416321736207722171469676753756160000*t^24 +
    425718015991063863201469401721617695368065461949581723523419338640069020368907189478824283375296647868061518260517758845337600000*t^21 +
    171257448533760256470767997903757369478190930976614262251275166597063684580901145140578062927032940076306631246550272042971488000000*t^18 -
    150532848252108620095705220881004163264533814150881512682249525794769605002787236944423312088590354570860151507254220958720000000*t^15 -
    6558025930008378010497051778217732852568630512474414965665375607488810932821868400374537343012368429121120630633326514437700000000*t^12 +
    49048553922052959956874732318845757266218498960381071087832410271231706209236733504577825555180834626639629273681892023000000000*t^9 +
    10756733505682366695889560788160399487928437077095046953611035713420564195648399685147757159849886163353583296769736001085351562500*t^6 +
    18418571340747975765209700574002130590806086520083254466604793000556729364962590782404725276428134815124847137416382031250000*t^3 -
    709653282382015580949323906923271165069542433124464049561677065230206886796975887731460055015146080241123356833246861328125000;

E:=EllipticCurve([0,0,0,0,f]);

P1:=E![5038684489441606340299663739923644196785600*t^9 -
    171741097423761983514106390335067264731600*t^6 +
    1774753874542964761898910943507433828896500*t^3 +
    892143120636851714613154773869462303430625,
    820850196140164034503063827173789718471166844066635892960690880000*t^15 -
    583151582047514586847347562497305456102605824635466934479532800*t^12 -
    31381086641063313197483859514010137328599669370932801269932376000*t^9 +
    319630900742425574392164378461645288175540148289681602746540000*t^6 +
    103753266959166925325314912207968295698574068809667046140936918750*t^3 +
    20510686239291239604909071938124853014327074852801850696953125];

P2:=E![-4989536454972958566511300992657245926411200*t^9 -
    97883877594528771204532706825122539579600*t^6 -
    1790209780304190255547989627244107126028500*t^3 +
    892143120636851714613154773869462303430625,
    -820850196140164034503063827173789718471166844066635892960690880000*t^15 +
    736736681006203319980246962372652469114386974785519795757907200*t^12 +
    31377695429676339052448830017673673494672627007565937009035864000*t^9 -
    149622938154470657938296285990104662157949957081505109259060000*t^6 -
    103754920258633819092197573531719247853476957023276418449612518750*t^3 +
    20510686239291239604909071938124853014327074852801850696953125];

P3:=E![59539885274303372138185341634385003561985600*t^9 -
    30466640397384082100107084140879644004843600*t^6 +
    6530611658052679058511823552023838204651500*t^3 +
    6929840116556427953445480875398763963430625,
    820850196140164034503063827173789718471166844066635892960690880000*t^15 +
    127906095118827273667928047573298566339703054068688297737602067200*t^12 -
    238702155845624137469830511470822020877123030263724014827895576000*t^9 +
    180751195157480201236670496830712086402523835004376194788087140000*t^6 +
    25815395039004370865649376171919326033082625520551129079040418750*t^3 +
    18223058719377906445788633477045445040321550519230826632853046875];

P4:=E![-229712155050412631728719865027039662933134400*t^9 +
    479570075768978717667746654510594782856103600*t^6 -
    328620744526877418750102796582862575229191500*t^3 +
    102685820344696208530617365002134792518910625,
    -820850196140164034503063827173789718471166844066635892960690880000*t^15 +
    7384088773706956204446147929652894765336427428264582376928382892800*t^12 -
    12999400299713375976108294729939978992447354586797050746333378024000*t^9 +
    11291051278284615972504166482889829315337400030983269628850453380000*t^6 -
    4995070409764748767915481139410437126121482107216987045076939218750*t^3 +
    1040556276460573687372212294054636824468815020273623459099548546875];


P5:=[229727914474508556830097655255782692813308800*t^9 +
    479468506940837566613312014266458271958893600*t^6 +
    328373622930115447874614983895517371756761000*t^3 +
    102574017870095603616149817741514523897263750,
    820850196140164034503063827173789718471166844066635892960690880000*t^15 +
    7384286353960249922112062843696652673261922120828878808204269132800*t^12 +
    12994172914148192474958967401735432791387265333252790019766888936000*t^9 +
    11281713033316996882426983082262006044273377309709508779628438880000*t^6 +
    4988596191603632375495308191603771788328692326773678325148395218750*t^3 +
    1038857329559106163867756148145097311039469591388152913315938312500];

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Verifying the 3-rank

C:=HyperellipticCurve(P!f);
FF<u,y>:=FunctionField(C);
psi:=hom<K->FF|u>;

D1:=PrincipalDivisor(y-psi(P1[2])) div 3;
D2:=PrincipalDivisor(y-psi(P2[2])) div 3;
D3:=PrincipalDivisor(y-psi(P3[2])) div 3;
D4:=PrincipalDivisor(y-psi(P4[2])) div 3;
D5:=PrincipalDivisor(y-psi(P5[2])) div 3;

IsPrincipal(3*D1);
IsPrincipal(3*D2);
IsPrincipal(3*D3);
IsPrincipal(3*D4);
IsPrincipal(3*D5);

for i1,i2,i3,i4,i5 in [0..2] do
D:=i1*D1+i2*D2+i3*D3+i4*D4+i5*D5;
if IsPrincipal(D) then
i1,i2,i3,i4,i5;
end if;
end for;

//////////////////////////////////////////////////////////////////////////////////////////////////
//Verifying f takes negative values

Evaluate(f,0);

/////////////////////////////////////////////////////////////////////////////////////////////////
//Verifying conditions of Theorem 1.3

f0:=Integers()!(Evaluate(f,0));
f1:=Integers()!(Evaluate(f,1));
Factorization(Gcd(f0,f1));

Valuation(f0,2);
Valuation(f0,5);