American Citizen on Sun, 29 Jun 2025 18:38:15 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
real point to algebraic point |
Hello everyone:I believe I have found a way to find the algebraic point for a given real point on an elliptic curve.
The first function of the gp pari code is courtesy of Karim Belabas and the second function is mine, after I realized using the polynomials from polred() and trying combinations of them using polcompositum to create a 4th degree field would work since all algebraic points on a real elliptic curve have x abcissa in degree 2 and y ordinate in degree 4 (please correct me if I am wrong, but I am talking about elliptic curves in Q)
Here's the script: nfrecognize(nf, z, j = 1) = { my(M = Mat(apply(conjvec, Mod(nf.zk, nf.pol)))); \\ N.B. we actually have M = nf[5][1] my(L = lindep(concat(nf[5][1][j,], z))); my(a = L[#L]); M=M; if (abs(a) != 1, error("Failed to recognize ", z);return(0),); if (a == 1, L = -L); nfbasistoalg(nf, L[1..-2]); } {real_pt_to_alg(Pt)= my(X,Y,poly_x,poly_y,red_x,red_y,poly_2,poly_4,P,a,b,K,L,M,sztwo,szfour,algpts); if(type(Pt)!="t_VEC",return([]);); X=Pt[1]; Y=Pt[2]; poly_x=algdep(X,2); poly_y=algdep(Y,4); red_x=polred(poly_x); red_y=polred(poly_y); poly_2=Set(); poly_4=Set(); \\ work on reduced polys for x first for(i=1,#red_x, if(poldegree(red_x[i])==2,poly_2=setunion(poly_2,[red_x[i]])); if(poldegree(red_x[i])==4,poly_4=setunion(poly_4,[red_x[i]])); ); \\ work on reduced polys for y next for(i=1,#red_y, if(poldegree(red_y[i])==2,poly_2=setunion(poly_2,[red_y[i]])); if(poldegree(red_y[i])==4,poly_4=setunion(poly_4,[red_y[i]])); ); sztwo=#poly_2; if(sztwo>1, for(i=1,sztwo-1, for(j=i+1,sztwo, [P,a,b]=polcompositum(poly_2[i],poly_2[j],1)[1]; if(poldegree(P)==4, poly_4=setunion(poly_4,[P])); ); ); ); szfour=#poly_4; algpts=Set(); for(root=1,4, for(i=1,szfour, K=nfinit(poly_4[i]); L=nfrecognize(K,X,root); M=nfrecognize(K,Y,root); if((L!=0)&&(M!=0), algpts=setunion(algpts,[[L,M]])); ); ); return(algpts); }You are welcome to use this, if you need it. And yes, number fields are fascinating and fun!
Randall