@@ -1250,6 +1250,19 @@ def _call_(self, P):
1250
1250
sage: phi = E.isogeny(3^99*P) # optional - sage.rings.finite_rings
1251
1251
sage: phi(Q)._order # optional - sage.rings.finite_rings
1252
1252
27
1253
+
1254
+ Test for :trac:`35983`::
1255
+
1256
+ sage: E = EllipticCurve([1,0,0,-1,0]) # optional - sage.rings.finite_rings
1257
+ sage: P = E([1,0]) # optional - sage.rings.finite_rings
1258
+ sage: P.order() # optional - sage.rings.finite_rings
1259
+ +Infinity
1260
+ sage: phi = E.isogenies_prime_degree(2)[0] # optional - sage.rings.finite_rings
1261
+ sage: Q = phi(P); Q # optional - sage.rings.finite_rings
1262
+ (0 : 1 : 1)
1263
+ sage: Q.order() # optional - sage.rings.finite_rings
1264
+ +Infinity
1265
+
1253
1266
"""
1254
1267
if P .is_zero ():
1255
1268
return self ._codomain (0 )
@@ -1281,9 +1294,11 @@ def _call_(self, P):
1281
1294
xP = self .__posti_ratl_maps [0 ](xP )
1282
1295
1283
1296
Q = self ._codomain (xP , yP )
1284
- if hasattr (P , '_order' ) and P ._order .gcd (self ._degree ).is_one ():
1297
+ if hasattr (P , '_order' ):
1298
+ if P .has_infinite_order () or P ._order .gcd (self ._degree ).is_one ():
1299
+ Q ._order = P ._order
1285
1300
# TODO: For non-coprime degree, the order of the point
1286
- # gets reduced by a divisor of the degree when passing
1301
+ # may get reduced by a divisor of the degree when passing
1287
1302
# through the isogeny. We could run something along the
1288
1303
# lines of order_from_multiple() to determine the new
1289
1304
# order, but this probably shouldn't happen by default
0 commit comments