Bill Allombert on Mon, 27 Nov 2023 15:03:33 +0100


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: general educational question on elliptic curve isogenies and moving points around


On Sun, Nov 26, 2023 at 05:32:03PM -0800, American Citizen wrote:
> Using
> 
> All results = 0 for using K[1] and trying the other 7 curves.
> 
> for example ellisisom(K[1],K[2]) = 0
> 
> What am I doing wrong?

Your curves are isogenous but not isomorphic.

I suppose you want to do:

E=ellinit(K[1]);
S=ellisomat(E)[1];
vector(#K,i,apply(e->ellisisom(ellinit(e[1]),ellinit(K[i])),S))
%4 = [[[1,1/12,1/2,0],0,0,0,0,0,0,0],[0,[2,1/3,1,0],0,0,0,0,0,0],[0,0,[2,1/3,1,0],0,0,0,0,0],[0,0,0,[4,4/3,2,0],0,0,0,0],[0,0,0,0,[1,1/12,1/2,0],0,0,0],[0,0,0,0,0,[1,1/12,1/2,0],0,0],[0,0,0,0,0,0,[1,1/12,1/2,0],0],[0,0,0,0,0,0,0,[1,1/12,1/2,0]]]

So you get the correspondance between ellisomat output and your list, with the variable change.

Cheers,
Bill.

PS: I join a new version of ellisisom which fix a typo if j=0 or 1728.
ellisisom(E,F)=
{
  my(u,r,s,t);
  if (E.j!=F.j, return(0));
  if (E.j==0,
       if(!ispower(E.c6/F.c6,6,&u),return(0))
     ,E.j==1728,
       if(!ispower(E.c4/F.c4,4,&u),return(0))
     , if(!ispower(F.c4*E.c6/(F.c6*E.c4),2,&u),return(0)));
  s = (u*F.a1-E.a1)/2;
  r = (u^2*F.a2 + s*E.a1 - E.a2 + s^2)/3;
  t = (u^3*F.a3 - r*E.a1 - E.a3)/2;
  [u,r,s,t]
}