# HG changeset patch
# User Chris Wuthrich <christian.wuthrich@gmail.com>
# Date 1300287229 0
# Node ID 31496a24bd30935497e95550314c771551e0df8b
# Parent bcfb1b518aeb98cb77413945d389716be533d611
trac 10888: bug in ellitpic curve isogenies due to the wrong type after evaluation
diff r bcfb1b518aeb r 31496a24bd30 sage/schemes/elliptic_curves/ell_curve_isogeny.py
a

b


962  962  sage: tau = E.isogeny([Q],E) 
963  963  sage: tau(Q) 
964  964  (0 : 1 : 0) 
965   
 965  
 966  TESTS (trac 10888):: 
 967  
 968  sage: K.<th> = NumberField(x^2+3) 
 969  sage: E = EllipticCurve(K,[7,0]) 
 970  sage: phi = E.isogeny(E(0,0)) 
 971  sage: P = E(3,4*th) 
 972  sage: phi(P) 
 973  (16/3 : 8/9*th : 1) 
 974  sage: Q = phi(P) 
 975  sage: phihat = phi.dual() 
 976  sage: phihat(Q) 
 977  (1/48 : 127/576*th : 1) 
 978  
966  979  """ 
967  980  E1 = self.__E1 
968  981  E_P = P.curve() 
… 
… 

987  1000  
988  1001  # if there is a pre isomorphism, apply it 
989  1002  if (self.__pre_isomorphism is not None): 
990   temp_xP = self.__prei_x_coord_ratl_map(x=xP, y=yP) 
991   temp_yP = self.__prei_y_coord_ratl_map(x=xP, y=yP) 
 1003  temp_xP = self.__prei_x_coord_ratl_map(xP, yP) 
 1004  temp_yP = self.__prei_y_coord_ratl_map(xP, yP) 
992  1005  (xP, yP) = (temp_xP, temp_yP) 
993  1006  
994  1007  if ("velu" == self.__algorithm): 
… 
… 

1003  1016  
1004  1017  # if there is a post isomorphism, apply it 
1005  1018  if (self.__post_isomorphism is not None): 
1006   tempX = self.__posti_x_coord_ratl_map(x=outP[0], y=outP[1]) 
1007   tempY = self.__posti_y_coord_ratl_map(x=outP[0], y=outP[1]) 
 1019  tempX = self.__posti_x_coord_ratl_map(outP[0], outP[1]) 
 1020  tempY = self.__posti_y_coord_ratl_map(outP[0], outP[1]) 
1008  1021  outP = [tempX, tempY] 
1009  1022  
1010  1023  if change_output_ring: 
… 
… 

2487  2500  x = self.__x_var 
2488  2501  y = self.__y_var 
2489  2502  
2490   psi_out = self.__psi(x=xP,y=yP) 
2491   phi_out = self.__phi(x=xP,y=yP) 
2492   omega_out =self.__omega(x=xP, y=yP) 
 2503  psi_out = self.__psi(xP,yP) 
 2504  phi_out = self.__phi(xP,yP) 
 2505  omega_out =self.__omega(xP, yP) 
2493  2506  
2494  2507  psi_inv_out = 1/psi_out 
2495  2508  