\\ \\ de6577.gp \\ \\ find U,V,W \in Z \\ such that C: U^4-64V^4=6577W^2 \\ \\f1: C --> E1 \\ (U,V,W)--> (x,y) \\ E1: y^2=6577(x^4-4) \\ x=U/(2V), y=6577W/(4V^2) z0=[20363903417612421139,1610510408687359833,5106975486965454582435003602977739281]; z1=[10500084257375984596799,1980407963453953023564,1303262616226128053329966805106514807822601]; f1(p)= { local(u,v,w,x,y); u=p[1]; v=p[2]; w=p[3]; x=u/(2*v); y=6577*w/(4*v^2); [x,y] } \\ \\ g1: E1 ---> C \\ (x,y) --> (U,V,W) \\ g1(p)= { local(u,v,w,x,y); local(xn,xd,yn,yd); local(wn,wd,g); x=p[1]; y=p[2]; xn=numerator(x); xd=denominator(x); u=2*xn; v=xd; w=y*4*v^2/6577; wd=denominator(w); u=u*wd; v=v*wd; w=w*wd^2; g=gcd(gcd(u,v),w); u=u/g; v=v/g; w=w/g^2; [u,v,w] } \\ \\ f2: E1 ---> E2 \\ (x,y)---->(u,v) \\ \\ E1: y^2=6577*(x^4-4) ----> E2: v^2=u^3+2^4*6577^2*u \\ f2(p)= { local(u,v,x,y); x=p[1]; y=p[2]; u=52616*(3221020817374719666*x+20363903417612421139)^2/(414688562401846845739625323577494057321*x^2-5106975486965454582435003602977739281*y-41499900423845228714363956288348606224); v=105232*(3221020817374719666*x+20363903417612421139)*(683994553801507673603375097588545243943108174446799756585043*x^3-8444677833139750750784239640070880536274878231207258108619*y*x-133672043184183433700948992658788986303248354423822801184*y+432758032992851406144304080950560891893404916906006315040968)/(414688562401846845739625323577494057321*x^2-5106975486965454582435003602977739281*y-41499900423845228714363956288348606224)^2; [u,v] } \\ \\ g2: E2 ---> E1 \\ (u,v)-->(x,y) \\ E2: v^2=u^3+2^4*6577^2*u ----> E1: y^2=6577*(x^4-4) \\ g2(p)= { local(u,v,x,y); u=p[1]; v=p[2]; x=(32796278415568904006796917764828709787*u^2-33588577777771794788675018696784591251137*v-22698660590183945203677276626752547142685825968)/(2*(2593743776490326794647747268021787889*u^2-2727406674916946704429515753169178415000217*u+1795158246141342965486002937324199186680526096)); y=6577*(13246185886005303871069859073455163387857067453696217606300313360925367809*u^4+13928799031786805177952406961901504164701572138866488807231845200624665784423977*u^3-27200483096565976495579146088842013078852826987737540664342500656960503401254*v*u^2+(71612601052705921918376190567499983972103898891367125172952185461709060498177408*v-9640273132372329195512314133281265130331203395189213549019561830118590775768916463786128)*u-18825749857181673425358974979930666431504130215325546674433222121609501622916844623456*v-6345154159733075762910794818204971361567141822751397091788805298833330071941157080186667264)/(4*(2593743776490326794647747268021787889*u^2-2727406674916946704429515753169178415000217*u+1795158246141342965486002937324199186680526096)^2); [x,y] } \\ \\ f3: E2 ---> E3 \\ (x,y)--->(X,Y) \\ E2: y^2 = x^3+2^4*6577^2*x ----> E3: Y^2=X^3+6577^2*X \\ X=x/2^2, Y=y/2^3 \\ f3(p)= { local(u,v,x,y); x=p[1]; y=p[2]; u=x/2^2; v=y/2^3; [u,v] } \\ \\ g3: E3 ---> E2 \\ (X,Y)--->(x,y) \\ Y^2 = X^3+6577^2*X ----> y^2=x^3+2^4*6577^2*x \\ x=X*2^2, y=Y*2^3 \\ g3(p)= { local(u,v,x,y); u=p[1]; v=p[2]; x=u*2^2; y=v*2^3; [x,y] } \\ height of P[x,y] ht(p)= { local(x,xn,xd); if(p==[0], 0, x=p[1]; xn=numerator(x); xd=denominator(x); max(abs(xn),abs(xd)) ) } \\ height of P[U:V:W] htp(p)= { local(x,y,z); x=abs(p[1]); y=abs(p[2]); z=abs(p[3]); max(max(x,y),z) } \\ \\ printpt(e,p,hlim) \\ print point p if height(p) <= hlim printpt(e,p,hlim)= { local(h); h=ellheight(e,p); if(h <= hlim, print(p)) } \\ \\ smallpt(e,p,hlim) \\ return [h,p] if h=ellheight(p)< hlim \\ or [] otherwise \\ smallpt(e,p,hlim)= { local(h); h=ellheight(e,p); if(h <= hlim, [h,p], []) } \\ \\ |i|,|j| <= n \\ return vector of points [i]p1+[j]p2 or [i]p1+[j]p2+t1 \\ on E:y^2=x^3+6577^2x \\ ratpointE2(n,hlim)= { local(e,p1,p2,t1,p,q,r,s,count); local(v,h); v=vector(1000); e=ellinit([0,0,0,6577^2,0]); \\generator of E(Q)/E(Q)_{tors} p1=[236772/729, 86513858/729]; p2=[1128192557133425240304183955743582762876355178378582639290998595946064723003792769/17209534046584172489951442984437012949979792174994736003865738759153113365904, 38084615452164770926096667668794151428316247311268071637285024401174943079659759026657370425245088233085859001237366377665/2257634679975946694348164094801882397081683916761332382578078496433317131136368647245728682369256601586004627609792]; \\ generator of E(Q)_{tors} t1=[0,0]; count=0; for(i=0,n, p=ellpow(e,p1,i); for(j=0,n, q=ellpow(e,p2,j); s=ellpow(e,q,-1); if(i^2+j^2>0, \\ i*p1+j*p2 r=elladd(e,p,q); h=smallpt(e,r,hlim); if(h!=[], count++;v[count]=h); \\ i*p1+j*p2+t1 r=elladd(e,r,t1); h=smallpt(e,r,hlim); if(h!=[], count++;v[count]=h); if(j!=0, r=elladd(e,p,s); \\ i*p1-j*p2 h=smallpt(e,r,hlim); if(h!=[], count++;v[count]=h); \\ i*p1-j*p2+t1 h=smallpt(e,elladd(e,r,t1),hlim); if(h!=[], count++;v[count]=h) ) ); if(i!=0, \\ -i*p1+j*p2: p=ellpow(e,p,-1); r=elladd(e,p,q); h=smallpt(e,r,hlim); if(h!=[], count++;v[count]=h); \\ -i*p1+j*p2+t1 h=smallpt(e,elladd(e,r,t1),hlim); if(h!=[], count++;v[count]=h); if(j!=0, \\ -i*p1-j*p2 r=elladd(e,p,s); h=smallpt(e,r,hlim); if(h!=[], count++;v[count]=h); \\ -i*p1-j*p2+t1 h=smallpt(e,elladd(e,r,t1),hlim); if(h!=[], count++;v[count]=h) ) ) ) ); \\ print("count=",count); v=vecextract(v,2^count-1); \\ print(v); v=vecsort(v,1); \\ print(v); for(i=1,count,v[i]=v[i][2];print(v[i])); v } \\ \\ printv(v) --- print each element of v \\ printv(v)= { local(n); n=length(v); print("Found ", n, " rational points."); for(i=1,length(v),print(v[i])) } ratpointE(v)= { local(n,w,p); n=length(v); w=vector(n); for(i=1,n,p=g2(g3(v[i]));w[i]=[ht(p),p]); w=vecsort(w,1); for(i=1,n,w[i]=w[i][2]); for(i=1,n,print(w[i])) } ratpointC(v)= { local(n,w,p); n=length(v); w=vector(n); for(i=1,n,p=g1(g2(g3(v[i])));w[i]=[htp(p),p]); w=vecsort(w,1); for(i=1,n,w[i]=w[i][2]); for(i=1,n,print(w[i])) } \\ \\ \\ \\ p1=[95037650/5929, -529464810960/456533]; \\ p2=[2727406674916946704429515753169178415000217/10374975105961307178590989072087151556, 4498632180352515969289398016839862069413822463336601999059827811/33418010796045858425237248164697246575812088605955700296]; \\ \\ E:y^2=x^3+6577x^2, E':y^2=x^3-4*6577^2x \\ \\ f5 : E ---> E' \\ (x,y) ---> (y^2/x^2,y(x^2-6577^2)/x^2) \\ \\ g5 : E'--->E \\ (x,y) ---> (y^2/{4x^2},y(x^2+4*6577^2)/{8x^2}) \\ f5(p)= { local(x,y); x=p[1]; y=p[2]; [(y/x)^2,y*(x^2-6577^2)/x^2] } g5(p)= { local(x,y); x=p[1]; y=p[2]; [(y/(2*x))^2,y*(x^2+4*6577^2)/(8*x^2)] } \\ \\ Elliptic Regurator of E/Q \\ Ne\'ron-Tate Paring on E/Q \\ pairing2(e,p1,p2)=[ellbil(e,p1,p1),ellbil(e,p1,p2); ellbil(e,p2,p1),ellbil(e,p2,p2)]; pairing3(e,p1,p2,p3)=[ellbil(e,p1,p1),ellbil(e,p1,p2),ellbil(e,p1,p3); ellbil(e,p2,p1),ellbil(e,p2,p2),ellbil(e,p2,p3); ellbil(e,p3,p1),ellbil(e,p3,p2),ellbil(e,p3,p3)]; ellreg2(e,p1,p2)=matdet(pairing2(e,p1,p2)); ellreg3(e,p1,p2,p3)=matdet(pairing3(e,p1,p2,p3));