passagemath-schemes 10.5.48__cp312-cp312-musllinux_1_2_aarch64.whl → 10.6.47__cp312-cp312-musllinux_1_2_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of passagemath-schemes might be problematic. Click here for more details.

Files changed (165) hide show
  1. passagemath_schemes/__init__.py +3 -0
  2. {passagemath_schemes-10.5.48.dist-info → passagemath_schemes-10.6.47.dist-info}/METADATA +42 -42
  3. {passagemath_schemes-10.5.48.dist-info → passagemath_schemes-10.6.47.dist-info}/METADATA.bak +43 -43
  4. {passagemath_schemes-10.5.48.dist-info → passagemath_schemes-10.6.47.dist-info}/RECORD +159 -140
  5. passagemath_schemes-10.6.47.dist-info/top_level.txt +3 -0
  6. passagemath_schemes.libs/{libflint-7dd7ad94.so.19.0.0 → libflint-edf7fb90.so.22.0.0} +0 -0
  7. passagemath_schemes.libs/{libgcc_s-69c45f16.so.1 → libgcc_s-2d945d6c.so.1} +0 -0
  8. passagemath_schemes.libs/{libgmp-8e78bd9b.so.10.5.0 → libgmp-28992bcb.so.10.5.0} +0 -0
  9. passagemath_schemes.libs/{libgmpxx-e6de26f1.so.4.7.0 → libgmpxx-fecb01a9.so.4.7.0} +0 -0
  10. passagemath_schemes.libs/{libmpfr-5ff10580.so.6.2.1 → libmpfr-1fc8ea36.so.6.2.2} +0 -0
  11. passagemath_schemes.libs/{libstdc++-1f1a71be.so.6.0.33 → libstdc++-85f2cd6d.so.6.0.33} +0 -0
  12. sage/all__sagemath_schemes.py +3 -2
  13. sage/databases/all__sagemath_schemes.py +0 -10
  14. sage/dynamics/arithmetic_dynamics/berkovich_ds.py +4 -4
  15. sage/dynamics/arithmetic_dynamics/generic_ds.py +3 -3
  16. sage/dynamics/arithmetic_dynamics/projective_ds.py +6 -6
  17. sage/dynamics/arithmetic_dynamics/projective_ds_helper.cpython-312-aarch64-linux-musl.so +0 -0
  18. sage/dynamics/arithmetic_dynamics/wehlerK3.py +18 -18
  19. sage/lfunctions/zero_sums.cpython-312-aarch64-linux-musl.so +0 -0
  20. sage/modular/abvar/abvar.py +12 -11
  21. sage/modular/abvar/constructor.py +3 -3
  22. sage/modular/abvar/cuspidal_subgroup.py +5 -6
  23. sage/modular/abvar/finite_subgroup.py +20 -18
  24. sage/modular/abvar/homology.py +1 -2
  25. sage/modular/abvar/homspace.py +1 -1
  26. sage/modular/abvar/lseries.py +3 -3
  27. sage/modular/abvar/morphism.py +1 -1
  28. sage/modular/abvar/torsion_point.py +1 -1
  29. sage/modular/abvar/torsion_subgroup.py +1 -1
  30. sage/modular/arithgroup/arithgroup_element.cpython-312-aarch64-linux-musl.so +0 -0
  31. sage/modular/arithgroup/arithgroup_perm.py +16 -16
  32. sage/modular/arithgroup/congroup.cpython-312-aarch64-linux-musl.so +0 -0
  33. sage/modular/arithgroup/congroup_gamma0.py +2 -2
  34. sage/modular/arithgroup/congroup_gamma1.py +4 -4
  35. sage/modular/arithgroup/congroup_gammaH.py +2 -2
  36. sage/modular/arithgroup/congroup_generic.py +2 -3
  37. sage/modular/arithgroup/congroup_sl2z.py +3 -3
  38. sage/modular/arithgroup/farey_symbol.cpython-312-aarch64-linux-musl.so +0 -0
  39. sage/modular/arithgroup/farey_symbol.pyx +1 -2
  40. sage/modular/btquotients/btquotient.py +4 -5
  41. sage/modular/btquotients/pautomorphicform.py +2 -2
  42. sage/modular/cusps.py +6 -4
  43. sage/modular/cusps_nf.py +7 -8
  44. sage/modular/dirichlet.py +34 -43
  45. sage/modular/drinfeld_modform/element.py +4 -4
  46. sage/modular/drinfeld_modform/ring.py +12 -12
  47. sage/modular/drinfeld_modform/tutorial.py +1 -1
  48. sage/modular/hecke/algebra.py +7 -5
  49. sage/modular/hecke/ambient_module.py +2 -2
  50. sage/modular/hecke/element.py +7 -2
  51. sage/modular/hecke/module.py +9 -9
  52. sage/modular/hecke/submodule.py +6 -8
  53. sage/modular/hypergeometric_misc.cpython-312-aarch64-linux-musl.so +0 -0
  54. sage/modular/hypergeometric_misc.pyx +3 -2
  55. sage/modular/hypergeometric_motive.py +2 -2
  56. sage/modular/local_comp/local_comp.py +19 -11
  57. sage/modular/local_comp/type_space.py +10 -8
  58. sage/modular/modform/ambient.py +4 -3
  59. sage/modular/modform/cuspidal_submodule.py +2 -2
  60. sage/modular/modform/element.py +72 -72
  61. sage/modular/modform/half_integral.py +1 -1
  62. sage/modular/modform/l_series_gross_zagier.py +3 -0
  63. sage/modular/modform/l_series_gross_zagier_coeffs.cpython-312-aarch64-linux-musl.so +0 -0
  64. sage/modular/modform/l_series_gross_zagier_coeffs.pyx +5 -2
  65. sage/modular/modform/ring.py +10 -12
  66. sage/modular/modform/space.py +18 -21
  67. sage/modular/modform/weight1.py +1 -2
  68. sage/modular/modform_hecketriangle/abstract_ring.py +7 -14
  69. sage/modular/modform_hecketriangle/abstract_space.py +63 -66
  70. sage/modular/modform_hecketriangle/graded_ring_element.py +11 -12
  71. sage/modular/modform_hecketriangle/hecke_triangle_group_element.py +82 -84
  72. sage/modular/modform_hecketriangle/hecke_triangle_groups.py +2 -2
  73. sage/modular/modform_hecketriangle/readme.py +9 -11
  74. sage/modular/modform_hecketriangle/series_constructor.py +10 -18
  75. sage/modular/modform_hecketriangle/space.py +29 -30
  76. sage/modular/modform_hecketriangle/subspace.py +9 -7
  77. sage/modular/modsym/all.py +2 -2
  78. sage/modular/modsym/ambient.py +13 -20
  79. sage/modular/modsym/boundary.py +2 -2
  80. sage/modular/modsym/manin_symbol.cpython-312-aarch64-linux-musl.so +0 -0
  81. sage/modular/modsym/manin_symbol_list.py +3 -7
  82. sage/modular/modsym/relation_matrix_pyx.cpython-312-aarch64-linux-musl.so +0 -0
  83. sage/modular/modsym/space.py +10 -22
  84. sage/modular/modsym/subspace.py +5 -7
  85. sage/modular/multiple_zeta.py +11 -13
  86. sage/modular/multiple_zeta_F_algebra.py +4 -6
  87. sage/modular/overconvergent/genus0.py +5 -4
  88. sage/modular/overconvergent/hecke_series.py +2 -2
  89. sage/modular/pollack_stevens/distributions.py +2 -2
  90. sage/modular/pollack_stevens/fund_domain.py +26 -29
  91. sage/modular/pollack_stevens/manin_map.py +15 -10
  92. sage/modular/pollack_stevens/modsym.py +18 -18
  93. sage/modular/quasimodform/element.py +10 -10
  94. sage/modular/quasimodform/ring.py +22 -22
  95. sage/modular/ssmod/ssmod.py +5 -12
  96. sage/rings/polynomial/binary_form_reduce.py +1 -1
  97. sage/schemes/curves/affine_curve.py +4 -4
  98. sage/schemes/curves/plane_curve_arrangement.py +28 -24
  99. sage/schemes/elliptic_curves/BSD.py +1 -1
  100. sage/schemes/elliptic_curves/addition_formulas_ring.py +4 -0
  101. sage/schemes/elliptic_curves/cm.py +1 -1
  102. sage/schemes/elliptic_curves/constructor.py +3 -3
  103. sage/schemes/elliptic_curves/ell_egros.py +1 -1
  104. sage/schemes/elliptic_curves/ell_field.py +57 -46
  105. sage/schemes/elliptic_curves/ell_finite_field.py +138 -26
  106. sage/schemes/elliptic_curves/ell_local_data.py +9 -9
  107. sage/schemes/elliptic_curves/ell_number_field.py +25 -24
  108. sage/schemes/elliptic_curves/ell_point.py +21 -22
  109. sage/schemes/elliptic_curves/ell_rational_field.py +38 -28
  110. sage/schemes/elliptic_curves/formal_group.py +1 -1
  111. sage/schemes/elliptic_curves/heegner.py +11 -8
  112. sage/schemes/elliptic_curves/height.py +26 -23
  113. sage/schemes/elliptic_curves/hom.py +2 -1
  114. sage/schemes/elliptic_curves/hom_composite.py +11 -11
  115. sage/schemes/elliptic_curves/hom_frobenius.py +8 -8
  116. sage/schemes/elliptic_curves/hom_sum.py +7 -1
  117. sage/schemes/elliptic_curves/hom_velusqrt.py +13 -7
  118. sage/schemes/elliptic_curves/homset.py +2 -2
  119. sage/schemes/elliptic_curves/isogeny_small_degree.py +1 -1
  120. sage/schemes/elliptic_curves/mod_poly.py +12 -5
  121. sage/schemes/elliptic_curves/mod_sym_num.cpython-312-aarch64-linux-musl.so +0 -0
  122. sage/schemes/elliptic_curves/padic_lseries.py +25 -13
  123. sage/schemes/elliptic_curves/padics.py +71 -62
  124. sage/schemes/elliptic_curves/period_lattice.py +78 -27
  125. sage/schemes/elliptic_curves/period_lattice_region.cpython-312-aarch64-linux-musl.so +0 -0
  126. sage/schemes/elliptic_curves/sha_tate.py +1 -1
  127. sage/schemes/elliptic_curves/weierstrass_morphism.py +2 -2
  128. sage/schemes/hyperelliptic_curves/hyperelliptic_generic.py +1 -1
  129. sage/schemes/hyperelliptic_curves/jacobian_endomorphism_utils.py +1 -1
  130. sage/schemes/hyperelliptic_curves/monsky_washnitzer.py +10 -20
  131. sage/schemes/jacobians/abstract_jacobian.py +1 -1
  132. sage/schemes/plane_conics/con_field.py +42 -42
  133. sage/schemes/plane_conics/con_rational_field.py +1 -1
  134. sage/schemes/riemann_surfaces/riemann_surface.py +8 -8
  135. sage_wheels/share/cremona/cremona_mini.db +0 -0
  136. sage_wheels/share/ellcurves/rank0 +30427 -0
  137. sage_wheels/share/ellcurves/rank1 +31871 -0
  138. sage_wheels/share/ellcurves/rank10 +6 -0
  139. sage_wheels/share/ellcurves/rank11 +6 -0
  140. sage_wheels/share/ellcurves/rank12 +1 -0
  141. sage_wheels/share/ellcurves/rank14 +1 -0
  142. sage_wheels/share/ellcurves/rank15 +1 -0
  143. sage_wheels/share/ellcurves/rank17 +1 -0
  144. sage_wheels/share/ellcurves/rank19 +1 -0
  145. sage_wheels/share/ellcurves/rank2 +2388 -0
  146. sage_wheels/share/ellcurves/rank20 +1 -0
  147. sage_wheels/share/ellcurves/rank21 +1 -0
  148. sage_wheels/share/ellcurves/rank22 +1 -0
  149. sage_wheels/share/ellcurves/rank23 +1 -0
  150. sage_wheels/share/ellcurves/rank24 +1 -0
  151. sage_wheels/share/ellcurves/rank28 +1 -0
  152. sage_wheels/share/ellcurves/rank3 +836 -0
  153. sage_wheels/share/ellcurves/rank4 +10 -0
  154. sage_wheels/share/ellcurves/rank5 +5 -0
  155. sage_wheels/share/ellcurves/rank6 +5 -0
  156. sage_wheels/share/ellcurves/rank7 +5 -0
  157. sage_wheels/share/ellcurves/rank8 +6 -0
  158. sage_wheels/share/ellcurves/rank9 +7 -0
  159. passagemath_schemes-10.5.48.dist-info/top_level.txt +0 -2
  160. sage/databases/db_modular_polynomials.py +0 -250
  161. sage/databases/stein_watkins.py +0 -363
  162. sage/modular/modsym/p1list.cpython-312-aarch64-linux-musl.so +0 -0
  163. sage/modular/modsym/p1list.pxd +0 -29
  164. sage/modular/modsym/p1list.pyx +0 -1372
  165. {passagemath_schemes-10.5.48.dist-info → passagemath_schemes-10.6.47.dist-info}/WHEEL +0 -0
@@ -162,7 +162,7 @@ class EllipticCurve_number_field(EllipticCurve_field):
162
162
  [(52 : 111 : 1)]
163
163
  sage: EK = E.base_extend(K)
164
164
  sage: EK.gens() # needs eclib
165
- [(52 : 111 : 1)]
165
+ ((52 : 111 : 1),)
166
166
  """
167
167
  E = super().base_extend(R)
168
168
  if isinstance(E, EllipticCurve_number_field):
@@ -1064,7 +1064,7 @@ class EllipticCurve_number_field(EllipticCurve_field):
1064
1064
 
1065
1065
  return self.local_data(P, proof, algorithm).minimal_model()
1066
1066
 
1067
- def has_good_reduction(self, P):
1067
+ def has_good_reduction(self, P) -> bool:
1068
1068
  r"""
1069
1069
  Return ``True`` if this elliptic curve has good reduction at the prime `P`.
1070
1070
 
@@ -1099,7 +1099,7 @@ class EllipticCurve_number_field(EllipticCurve_field):
1099
1099
  """
1100
1100
  return self.local_data(P).has_good_reduction()
1101
1101
 
1102
- def has_bad_reduction(self, P):
1102
+ def has_bad_reduction(self, P) -> bool:
1103
1103
  r"""
1104
1104
  Return ``True`` if this elliptic curve has bad reduction at the prime `P`.
1105
1105
 
@@ -1134,7 +1134,7 @@ class EllipticCurve_number_field(EllipticCurve_field):
1134
1134
  """
1135
1135
  return self.local_data(P).has_bad_reduction()
1136
1136
 
1137
- def has_multiplicative_reduction(self, P):
1137
+ def has_multiplicative_reduction(self, P) -> bool:
1138
1138
  r"""
1139
1139
  Return ``True`` if this elliptic curve has (bad) multiplicative
1140
1140
  reduction at the prime `P`.
@@ -1170,7 +1170,7 @@ class EllipticCurve_number_field(EllipticCurve_field):
1170
1170
  """
1171
1171
  return self.local_data(P).has_multiplicative_reduction()
1172
1172
 
1173
- def has_split_multiplicative_reduction(self, P):
1173
+ def has_split_multiplicative_reduction(self, P) -> bool:
1174
1174
  r"""
1175
1175
  Return ``True`` if this elliptic curve has (bad) split multiplicative reduction at the prime `P`.
1176
1176
 
@@ -1200,7 +1200,7 @@ class EllipticCurve_number_field(EllipticCurve_field):
1200
1200
  """
1201
1201
  return self.local_data(P).has_split_multiplicative_reduction()
1202
1202
 
1203
- def has_nonsplit_multiplicative_reduction(self, P):
1203
+ def has_nonsplit_multiplicative_reduction(self, P) -> bool:
1204
1204
  r"""
1205
1205
  Return ``True`` if this elliptic curve has (bad) non-split
1206
1206
  multiplicative reduction at the prime `P`.
@@ -1231,7 +1231,7 @@ class EllipticCurve_number_field(EllipticCurve_field):
1231
1231
  """
1232
1232
  return self.local_data(P).has_nonsplit_multiplicative_reduction()
1233
1233
 
1234
- def has_additive_reduction(self, P):
1234
+ def has_additive_reduction(self, P) -> bool:
1235
1235
  r"""
1236
1236
  Return ``True`` if this elliptic curve has (bad) additive reduction at
1237
1237
  the prime `P`.
@@ -1296,7 +1296,7 @@ class EllipticCurve_number_field(EllipticCurve_field):
1296
1296
 
1297
1297
  return self.local_data(P, proof).tamagawa_number()
1298
1298
 
1299
- def tamagawa_numbers(self):
1299
+ def tamagawa_numbers(self) -> list:
1300
1300
  """
1301
1301
  Return a list of all Tamagawa numbers for all prime divisors of the
1302
1302
  conductor (in order).
@@ -1775,7 +1775,7 @@ class EllipticCurve_number_field(EllipticCurve_field):
1775
1775
  K.ideal(1))
1776
1776
  return Cl(I)
1777
1777
 
1778
- def has_global_minimal_model(self):
1778
+ def has_global_minimal_model(self) -> bool:
1779
1779
  r"""
1780
1780
  Return whether this elliptic curve has a global minimal model.
1781
1781
 
@@ -1902,7 +1902,7 @@ class EllipticCurve_number_field(EllipticCurve_field):
1902
1902
  y^2 + a*x*y = x^3 + a*x^2 + (3*a+8)*x + (4*a+3) over Number Field
1903
1903
  in a with defining polynomial x^2 - 10 has no global minimal model!
1904
1904
  For a semi-global minimal model use semi_global=True
1905
- sage: E.global_minimal_model(semi_global=True)
1905
+ sage: E.global_minimal_model(semi_global=True) # needs sage.symbolic
1906
1906
  Elliptic Curve defined by
1907
1907
  y^2 + a*x*y = x^3 + a*x^2 + (3*a+8)*x + (4*a+3) over Number Field in a
1908
1908
  with defining polynomial x^2 - 10
@@ -1910,6 +1910,7 @@ class EllipticCurve_number_field(EllipticCurve_field):
1910
1910
  An example of a curve with everywhere good reduction but which
1911
1911
  has no model with unit discriminant::
1912
1912
 
1913
+ sage: # needs sage.symbolic
1913
1914
  sage: x = polygen(QQ)
1914
1915
  sage: K.<a> = NumberField(x^2 - x - 16)
1915
1916
  sage: K.class_number()
@@ -2375,9 +2376,9 @@ class EllipticCurve_number_field(EllipticCurve_field):
2375
2376
  sage: K.<a> = NumberField(x^2 + 23, 'a')
2376
2377
  sage: E = EllipticCurve(K,[0,0,0,101,0])
2377
2378
  sage: E.gens() # needs eclib
2378
- [(23831509/8669448*a - 2867471/8669448 : 76507317707/18049790736*a - 424166479633/18049790736 : 1),
2379
+ ((23831509/8669448*a - 2867471/8669448 : 76507317707/18049790736*a - 424166479633/18049790736 : 1),
2379
2380
  (-2031032029/969232392*a + 58813561/969232392 : -15575984630401/21336681877488*a + 451041199309/21336681877488 : 1),
2380
- (-186948623/4656964 : 549438861195/10049728312*a : 1)]
2381
+ (-186948623/4656964 : 549438861195/10049728312*a : 1))
2381
2382
 
2382
2383
  It can happen that no points are found if the height bounds
2383
2384
  used in the search are too small (see :issue:`10745`)::
@@ -2386,11 +2387,11 @@ class EllipticCurve_number_field(EllipticCurve_field):
2386
2387
  sage: K.<t> = NumberField(x^4 + x^2 - 7)
2387
2388
  sage: E = EllipticCurve(K, [1, 0, 5*t^2 + 16, 0, 0])
2388
2389
  sage: E.gens(lim1=1, lim3=1)
2389
- []
2390
+ ()
2390
2391
  sage: E.rank()
2391
2392
  1
2392
2393
  sage: gg = E.gens(lim3=13); gg # long time (about 4s)
2393
- [(... : 1)]
2394
+ ((... : 1),)
2394
2395
 
2395
2396
  Check that the point found has infinite order, and that it is on the curve::
2396
2397
 
@@ -2405,7 +2406,7 @@ class EllipticCurve_number_field(EllipticCurve_field):
2405
2406
  sage: K.<t> = NumberField(x^2 - 17)
2406
2407
  sage: E = EllipticCurve(K, [-4, 0])
2407
2408
  sage: E.gens() # needs eclib
2408
- [(-1/2*t + 1/2 : -1/2*t + 1/2 : 1), (-t + 3 : -2*t + 10 : 1)]
2409
+ ((-1/2*t + 1/2 : -1/2*t + 1/2 : 1), (-t + 3 : -2*t + 10 : 1))
2409
2410
  sage: E.rank()
2410
2411
  2
2411
2412
 
@@ -2417,7 +2418,7 @@ class EllipticCurve_number_field(EllipticCurve_field):
2417
2418
  sage: EK.rank()
2418
2419
  0
2419
2420
  sage: EK.gens() # needs eclib
2420
- []
2421
+ ()
2421
2422
 
2422
2423
  IMPLEMENTATION:
2423
2424
 
@@ -2427,10 +2428,10 @@ class EllipticCurve_number_field(EllipticCurve_field):
2427
2428
  PARI/GP scripts from http://www.math.unicaen.fr/~simon/.
2428
2429
  """
2429
2430
  try:
2430
- return self.gens_quadratic(**kwds)
2431
+ return tuple(self.gens_quadratic(**kwds))
2431
2432
  except ValueError:
2432
2433
  self.simon_two_descent(**kwds)
2433
- return self._known_points
2434
+ return tuple(self._known_points)
2434
2435
 
2435
2436
  def period_lattice(self, embedding):
2436
2437
  r"""
@@ -3187,7 +3188,7 @@ class EllipticCurve_number_field(EllipticCurve_field):
3187
3188
  sage: c6c = -124369 + 15988*(1 + s)/2
3188
3189
  sage: E = EllipticCurve_from_c4c6(c4, c6)
3189
3190
  sage: Ec = EllipticCurve_from_c4c6(c4c, c6c)
3190
- sage: E.is_isogenous(Ec)
3191
+ sage: E.is_isogenous(Ec) # needs sage.symbolic
3191
3192
  True
3192
3193
 
3193
3194
  Check that :issue:`17295` is fixed::
@@ -3198,7 +3199,7 @@ class EllipticCurve_number_field(EllipticCurve_field):
3198
3199
  sage: Ec = EllipticCurve(k, [3*s*(4 - 5*s), -2*s*(2 - 14*s + 11*s^2)])
3199
3200
  sage: EK = E.base_extend(K)
3200
3201
  sage: EcK = Ec.base_extend(K)
3201
- sage: EK.is_isogenous(EcK) # long time (about 3.5 s)
3202
+ sage: EK.is_isogenous(EcK) # long time (about 3.5 s) # needs sage.symbolic
3202
3203
  True
3203
3204
  """
3204
3205
  if not isinstance(other, EllipticCurve_generic):
@@ -3596,7 +3597,7 @@ class EllipticCurve_number_field(EllipticCurve_field):
3596
3597
  return ZZ.zero()
3597
3598
 
3598
3599
  @cached_method
3599
- def has_cm(self):
3600
+ def has_cm(self) -> bool:
3600
3601
  """
3601
3602
  Return whether or not this curve has a CM `j`-invariant.
3602
3603
 
@@ -3637,7 +3638,7 @@ class EllipticCurve_number_field(EllipticCurve_field):
3637
3638
  return not self.cm_discriminant().is_zero()
3638
3639
 
3639
3640
  @cached_method
3640
- def has_rational_cm(self, field=None):
3641
+ def has_rational_cm(self, field=None) -> bool:
3641
3642
  r"""
3642
3643
  Return whether or not this curve has CM defined over its
3643
3644
  base field or a given extension.
@@ -4194,9 +4195,9 @@ class EllipticCurve_number_field(EllipticCurve_field):
4194
4195
 
4195
4196
  sage: # needs database_cremona_mini_ellcurve
4196
4197
  sage: E = EllipticCurve("11a1")
4197
- sage: E.rational_points(bound=5)
4198
+ sage: E.rational_points(bound=5) # needs sage.symbolic
4198
4199
  [(0 : 1 : 0), (5 : 5 : 1)]
4199
- sage: E.rational_points(bound=6) # long time
4200
+ sage: E.rational_points(bound=6) # long time # needs sage.symbolic
4200
4201
  [(0 : 1 : 0), (5 : -6 : 1), (5 : 5 : 1)]
4201
4202
 
4202
4203
  An example over a number field::
@@ -275,8 +275,8 @@ class EllipticCurvePoint(AdditiveGroupElement,
275
275
  ....: if xs:
276
276
  ....: pts.append(E(choice(xs), y, z))
277
277
  sage: P, Q = pts
278
- sage: R = P + Q
279
- sage: for d in N.divisors():
278
+ sage: R = P + Q # not tested (:issue:`39191`)
279
+ sage: for d in N.divisors(): # not tested (:issue:`39191`)
280
280
  ....: if d > 1:
281
281
  ....: assert R.change_ring(Zmod(d)) == P.change_ring(Zmod(d)) + Q.change_ring(Zmod(d))
282
282
  """
@@ -790,7 +790,7 @@ class EllipticCurvePoint_field(EllipticCurvePoint,
790
790
 
791
791
  additive_order = order
792
792
 
793
- def __bool__(self):
793
+ def __bool__(self) -> bool:
794
794
  """
795
795
  Return ``True`` if this is not the zero point on the curve.
796
796
 
@@ -808,7 +808,7 @@ class EllipticCurvePoint_field(EllipticCurvePoint,
808
808
  """
809
809
  return bool(self._coords[2])
810
810
 
811
- def has_order(self, n):
811
+ def has_order(self, n) -> bool:
812
812
  r"""
813
813
  Test if this point has order exactly `n`.
814
814
 
@@ -907,7 +907,7 @@ class EllipticCurvePoint_field(EllipticCurvePoint,
907
907
  self._order = n
908
908
  return ret
909
909
 
910
- def has_finite_order(self):
910
+ def has_finite_order(self) -> bool:
911
911
  """
912
912
  Return ``True`` if this point has finite additive order as an
913
913
  element of the group of points on this curve.
@@ -937,7 +937,7 @@ class EllipticCurvePoint_field(EllipticCurvePoint,
937
937
 
938
938
  is_finite_order = has_finite_order # for backward compatibility
939
939
 
940
- def has_infinite_order(self):
940
+ def has_infinite_order(self) -> bool:
941
941
  """
942
942
  Return ``True`` if this point has infinite additive order as an element
943
943
  of the group of points on this curve.
@@ -2417,11 +2417,11 @@ class EllipticCurvePoint_field(EllipticCurvePoint,
2417
2417
  raise ValueError("The point P must be n-torsion")
2418
2418
 
2419
2419
  # NOTE: Pari returns the non-reduced Tate pairing, so we
2420
- # must perform the exponentation ourselves using the supplied
2420
+ # must perform the exponentiation ourselves using the supplied
2421
2421
  # k value
2422
2422
  ePQ = pari.elltatepairing(E, P, Q, n)
2423
2423
  exp = Integer((q**k - 1)/n)
2424
- return K(ePQ**exp) # Cast the PARI type back to the base ring
2424
+ return K(ePQ**exp) # Cast the PARI type back to the base ring
2425
2425
 
2426
2426
  def ate_pairing(self, Q, n, k, t, q=None):
2427
2427
  r"""
@@ -2816,7 +2816,7 @@ class EllipticCurvePoint_number_field(EllipticCurvePoint_field):
2816
2816
 
2817
2817
  additive_order = order
2818
2818
 
2819
- def has_finite_order(self):
2819
+ def has_finite_order(self) -> bool:
2820
2820
  """
2821
2821
  Return ``True`` iff this point has finite order on the elliptic curve.
2822
2822
 
@@ -2839,7 +2839,7 @@ class EllipticCurvePoint_number_field(EllipticCurvePoint_field):
2839
2839
  return True
2840
2840
  return self.order() != oo
2841
2841
 
2842
- def has_infinite_order(self):
2842
+ def has_infinite_order(self) -> bool:
2843
2843
  r"""
2844
2844
  Return ``True`` iff this point has infinite order on the elliptic curve.
2845
2845
 
@@ -3037,7 +3037,7 @@ class EllipticCurvePoint_number_field(EllipticCurvePoint_field):
3037
3037
  gxdd = gxd.derivative()
3038
3038
  return (e(gxd(self[0])) > 0 and e(gxdd(self[0])) > 0)
3039
3039
 
3040
- def has_good_reduction(self, P=None):
3040
+ def has_good_reduction(self, P=None) -> bool:
3041
3041
  r"""
3042
3042
  Return ``True`` iff this point has good reduction modulo a prime.
3043
3043
 
@@ -3770,7 +3770,7 @@ class EllipticCurvePoint_number_field(EllipticCurvePoint_field):
3770
3770
 
3771
3771
  Examples 2 and 3 from [Sil1988]_::
3772
3772
 
3773
- sage: # needs sage.rings.number_field
3773
+ sage: # needs sage.rings.number_field sage.symbolic
3774
3774
  sage: x = polygen(ZZ, 'x')
3775
3775
  sage: K.<i> = NumberField(x^2 + 1)
3776
3776
  sage: E = EllipticCurve(K, [0,0,4,6*i,0]); E
@@ -3783,8 +3783,6 @@ class EllipticCurvePoint_number_field(EllipticCurvePoint_field):
3783
3783
  0
3784
3784
  sage: P.non_archimedean_local_height(K.ideal(1-2*i))
3785
3785
  0
3786
-
3787
- sage: # needs sage.rings.number_field
3788
3786
  sage: Q = E.lift_x(-9/4); Q
3789
3787
  (-9/4 : 27/8*i - 4 : 1)
3790
3788
  sage: Q.non_archimedean_local_height(K.ideal(1+i))
@@ -3800,13 +3798,13 @@ class EllipticCurvePoint_number_field(EllipticCurvePoint_field):
3800
3798
 
3801
3799
  sage: E = EllipticCurve([0, 0, 0, -36, 0])
3802
3800
  sage: P = E([-3, 9])
3803
- sage: P.non_archimedean_local_height()
3801
+ sage: P.non_archimedean_local_height() # needs sage.symbolic
3804
3802
  -log(3)
3805
3803
 
3806
3804
  Local heights of torsion points can be nonzero (unlike the
3807
3805
  global height)::
3808
3806
 
3809
- sage: # needs sage.rings.number_field
3807
+ sage: # needs sage.rings.number_field sage.symbolic
3810
3808
  sage: K.<i> = QuadraticField(-1)
3811
3809
  sage: E = EllipticCurve([0, 0, 0, K(1), 0])
3812
3810
  sage: P = E(i, 0)
@@ -3815,12 +3813,13 @@ class EllipticCurvePoint_number_field(EllipticCurvePoint_field):
3815
3813
 
3816
3814
  TESTS::
3817
3815
 
3818
- sage: Q.non_archimedean_local_height(prec=100) # needs sage.rings.number_field
3816
+ sage: Q.non_archimedean_local_height(prec=100) # needs sage.rings.number_field sage.symbolic
3819
3817
  1.3862943611198906188344642429
3820
- sage: (3*Q).non_archimedean_local_height() # needs sage.rings.number_field
3818
+ sage: (3*Q).non_archimedean_local_height() # needs sage.rings.number_field sage.symbolic
3821
3819
  1/2*log(75923153929839865104)
3822
3820
 
3823
3821
  sage: # needs sage.rings.number_field
3822
+ sage: x = polygen(ZZ, 'x')
3824
3823
  sage: F.<a> = NumberField(x^4 + 2*x^3 + 19*x^2 + 18*x + 288)
3825
3824
  sage: F.ring_of_integers().basis()
3826
3825
  [1, 5/6*a^3 + 1/6*a, 1/6*a^3 + 1/6*a^2, a^3]
@@ -3831,20 +3830,20 @@ class EllipticCurvePoint_number_field(EllipticCurvePoint_field):
3831
3830
  (-1/6*a^2 - 1/6*a - 1 : a : 1)
3832
3831
  sage: P[0].is_integral()
3833
3832
  True
3834
- sage: P.non_archimedean_local_height()
3833
+ sage: P.non_archimedean_local_height() # needs sage.symbolic
3835
3834
  0
3836
3835
 
3837
3836
  This shows that the bug reported at :issue:`13951` has been fixed::
3838
3837
 
3839
3838
  sage: E = EllipticCurve([0,17])
3840
3839
  sage: P = E(2,5)
3841
- sage: P.non_archimedean_local_height(2)
3840
+ sage: P.non_archimedean_local_height(2) # needs sage.symbolic
3842
3841
  -2/3*log(2)
3843
3842
 
3844
3843
  This shows that the bug reported at :issue:`36834` (incorrect
3845
3844
  value when the model is not integral) has been fixed::
3846
3845
 
3847
- sage: # needs sage.rings.number_field
3846
+ sage: # needs sage.rings.number_field sage.symbolic
3848
3847
  sage: K.<a> = QuadraticField(84131656042917)
3849
3848
  sage: E = EllipticCurve(K, [0, 0, 0, -5482707841/48, -244634179112639/864])
3850
3849
  sage: P = E(349189/12, 1/2*a)
@@ -4673,7 +4672,7 @@ class EllipticCurvePoint_finite_field(EllipticCurvePoint_field):
4673
4672
 
4674
4673
  return ZZ(k % p)
4675
4674
 
4676
- def has_finite_order(self):
4675
+ def has_finite_order(self) -> bool:
4677
4676
  r"""
4678
4677
  Return ``True`` if this point has finite additive order as an element
4679
4678
  of the group of points on this curve.
@@ -1726,9 +1726,9 @@ class EllipticCurve_rational_field(EllipticCurve_number_field):
1726
1726
  sage: E = EllipticCurve("974b1")
1727
1727
  sage: r = E.rank(); r
1728
1728
  0
1729
- sage: E.analytic_rank_upper_bound(max_Delta=1, root_number='ignore')
1729
+ sage: E.analytic_rank_upper_bound(max_Delta=1, root_number='ignore') # needs sage.symbolic
1730
1730
  1
1731
- sage: E.analytic_rank_upper_bound(max_Delta=1.3, root_number='ignore')
1731
+ sage: E.analytic_rank_upper_bound(max_Delta=1.3, root_number='ignore') # needs sage.symbolic
1732
1732
  0
1733
1733
 
1734
1734
  Knowing the root number of `E` allows us to use smaller Delta values
@@ -1736,7 +1736,7 @@ class EllipticCurve_rational_field(EllipticCurve_number_field):
1736
1736
 
1737
1737
  ::
1738
1738
 
1739
- sage: E.analytic_rank_upper_bound(max_Delta=0.6, root_number='compute')
1739
+ sage: E.analytic_rank_upper_bound(max_Delta=0.6, root_number='compute') # needs sage.symbolic
1740
1740
  0
1741
1741
 
1742
1742
  There are a small number of curves which have pathologically low-lying
@@ -1751,9 +1751,9 @@ class EllipticCurve_rational_field(EllipticCurve_number_field):
1751
1751
  sage: E = EllipticCurve([0, -1, 0, -7460362000712, -7842981500851012704])
1752
1752
  sage: N, r = E.conductor(), E.analytic_rank(); N, r
1753
1753
  (256944, 0)
1754
- sage: E.analytic_rank_upper_bound(max_Delta=1, adaptive=False)
1754
+ sage: E.analytic_rank_upper_bound(max_Delta=1, adaptive=False) # needs sage.symbolic
1755
1755
  2
1756
- sage: E.analytic_rank_upper_bound(max_Delta=2, adaptive=False)
1756
+ sage: E.analytic_rank_upper_bound(max_Delta=2, adaptive=False) # needs sage.symbolic
1757
1757
  2
1758
1758
 
1759
1759
  This method is can be called on curves with large conductor.
@@ -1761,7 +1761,7 @@ class EllipticCurve_rational_field(EllipticCurve_number_field):
1761
1761
  ::
1762
1762
 
1763
1763
  sage: E = EllipticCurve([-2934,19238])
1764
- sage: E.analytic_rank_upper_bound()
1764
+ sage: E.analytic_rank_upper_bound() # needs sage.symbolic
1765
1765
  1
1766
1766
 
1767
1767
  And it can bound rank on curves with *very* large conductor, so long as
@@ -1777,7 +1777,7 @@ class EllipticCurve_rational_field(EllipticCurve_number_field):
1777
1777
  sage: E = EllipticCurve([1, -1, 1, a4, a6])
1778
1778
  sage: bad_primes = [2, 3, 5, 7, 11, 13, 17, 19, 48463]
1779
1779
  sage: N = 3455601108357547341532253864901605231198511505793733138900595189472144724781456635380154149870961231592352897621963802238155192936274322687070
1780
- sage: E.analytic_rank_upper_bound(max_Delta=2.37, adaptive=False, # long time
1780
+ sage: E.analytic_rank_upper_bound(max_Delta=2.37, adaptive=False, # long time, needs sage.symbolic
1781
1781
  ....: N=N, root_number=1,
1782
1782
  ....: bad_primes=bad_primes, ncpus=2)
1783
1783
  32
@@ -2367,6 +2367,15 @@ class EllipticCurve_rational_field(EllipticCurve_number_field):
2367
2367
  sage: P = E.lift_x(10/9)
2368
2368
  sage: set(E.gens()) <= set([P,-P]) # needs eclib
2369
2369
  True
2370
+
2371
+ Check that :issue:`38813` has been fixed::
2372
+
2373
+ sage: # long time
2374
+ sage: E = EllipticCurve([-127^2,0])
2375
+ sage: l = E.gens(use_database=False, algorithm='pari', pari_effort=4); l # random
2376
+ [(611429153205013185025/9492121848205441 : 15118836457596902442737698070880/924793900700594415341761 : 1)]
2377
+ sage: a = E(611429153205013185025/9492121848205441, 15118836457596902442737698070880/924793900700594415341761)
2378
+ sage: assert len(l) == 1 and ((l[0] - a).is_finite_order() or (l[0] + a).is_finite_order())
2370
2379
  """
2371
2380
  if proof is None:
2372
2381
  from sage.structure.proof.proof import get_flag
@@ -2419,14 +2428,15 @@ class EllipticCurve_rational_field(EllipticCurve_number_field):
2419
2428
  True
2420
2429
 
2421
2430
  sage: E = EllipticCurve([-127^2,0])
2422
- sage: E.gens(use_database=False, algorithm='pari',pari_effort=4) # random, needs eclib
2431
+ sage: E.gens(use_database=False, algorithm='pari', pari_effort=4) # long time, needs eclib # random
2423
2432
  [(611429153205013185025/9492121848205441 : 15118836457596902442737698070880/924793900700594415341761 : 1)]
2424
2433
 
2425
2434
  TESTS::
2426
2435
 
2436
+ sage: E = EllipticCurve([-127^2,0])
2427
2437
  sage: P = E.lift_x(611429153205013185025/9492121848205441)
2428
- sage: ge = set(E.gens(use_database=False, algorithm='pari', pari_effort=4)) # needs eclib
2429
- sage: ge <= set([P+T for T in E.torsion_points()] # needs eclib
2438
+ sage: ge = set(E.gens(use_database=False, algorithm='pari', pari_effort=4)) # long time, needs eclib
2439
+ sage: ge <= set([P+T for T in E.torsion_points()] # long time, needs eclib
2430
2440
  ....: + [-P+T for T in E.torsion_points()])
2431
2441
  True
2432
2442
  """
@@ -3402,7 +3412,7 @@ class EllipticCurve_rational_field(EllipticCurve_number_field):
3402
3412
  self.__tamagawa_product = Integer(self.pari_mincurve().ellglobalred()[2].sage())
3403
3413
  return self.__tamagawa_product
3404
3414
 
3405
- def real_components(self):
3415
+ def real_components(self) -> int:
3406
3416
  r"""
3407
3417
  Return the number of real components.
3408
3418
 
@@ -3420,7 +3430,7 @@ class EllipticCurve_rational_field(EllipticCurve_number_field):
3420
3430
  """
3421
3431
  return 2 if self.discriminant() > 0 else 1
3422
3432
 
3423
- def has_good_reduction_outside_S(self, S=None):
3433
+ def has_good_reduction_outside_S(self, S=None) -> bool:
3424
3434
  r"""
3425
3435
  Test if this elliptic curve has good reduction outside ``S``.
3426
3436
 
@@ -4420,7 +4430,7 @@ class EllipticCurve_rational_field(EllipticCurve_number_field):
4420
4430
  else:
4421
4431
  return Integer(e.ellrootno(p))
4422
4432
 
4423
- def has_cm(self):
4433
+ def has_cm(self) -> bool:
4424
4434
  r"""
4425
4435
  Return whether or not this curve has a CM `j`-invariant.
4426
4436
 
@@ -4486,7 +4496,7 @@ class EllipticCurve_rational_field(EllipticCurve_number_field):
4486
4496
  except KeyError:
4487
4497
  raise ValueError("%s does not have CM" % self)
4488
4498
 
4489
- def has_rational_cm(self, field=None):
4499
+ def has_rational_cm(self, field=None) -> bool:
4490
4500
  r"""
4491
4501
  Return whether or not this curve has CM defined over `\QQ`
4492
4502
  or the given field.
@@ -6014,7 +6024,7 @@ class EllipticCurve_rational_field(EllipticCurve_number_field):
6014
6024
  The bug reported on :issue:`22719` is now fixed::
6015
6025
 
6016
6026
  sage: E = EllipticCurve("141d1")
6017
- sage: E.integral_points() # needs eclib
6027
+ sage: E.integral_points() # needs eclib sage.symbolic
6018
6028
  [(0 : -1 : 1), (2 : -2 : 1)]
6019
6029
  """
6020
6030
  xmin = pari(xmin)
@@ -6090,7 +6100,7 @@ class EllipticCurve_rational_field(EllipticCurve_number_field):
6090
6100
  ::
6091
6101
 
6092
6102
  sage: E = EllipticCurve([0,0,1,-7,6])
6093
- sage: a = E.integral_points(both_signs=True); a # needs eclib
6103
+ sage: a = E.integral_points(both_signs=True); a # needs eclib sage.symbolic
6094
6104
  [(-3 : -1 : 1), (-3 : 0 : 1), (-2 : -4 : 1), (-2 : 3 : 1), (-1 : -4 : 1),
6095
6105
  (-1 : 3 : 1), (0 : -3 : 1), (0 : 2 : 1), (1 : -1 : 1), (1 : 0 : 1),
6096
6106
  (2 : -1 : 1), (2 : 0 : 1), (3 : -4 : 1), (3 : 3 : 1), (4 : -7 : 1),
@@ -6102,7 +6112,7 @@ class EllipticCurve_rational_field(EllipticCurve_number_field):
6102
6112
 
6103
6113
  An example with negative discriminant::
6104
6114
 
6105
- sage: EllipticCurve('900d1').integral_points()
6115
+ sage: EllipticCurve('900d1').integral_points() # needs eclib sage.symbolic
6106
6116
  [(-11 : -27 : 1), (-4 : -34 : 1), (4 : -18 : 1), (16 : -54 : 1)]
6107
6117
 
6108
6118
  Another example with rank 5 and no torsion points::
@@ -6111,29 +6121,29 @@ class EllipticCurve_rational_field(EllipticCurve_number_field):
6111
6121
  sage: P1 = E.point((540,1188)); P2 = E.point((576,1836))
6112
6122
  sage: P3 = E.point((468,3132)); P4 = E.point((612,3132))
6113
6123
  sage: P5 = E.point((432,4428))
6114
- sage: a = E.integral_points([P1,P2,P3,P4,P5]); len(a) # long time (18s on sage.math, 2011)
6124
+ sage: a = E.integral_points([P1,P2,P3,P4,P5]); len(a) # long time (18s on sage.math, 2011), needs sage.symbolic
6115
6125
  54
6116
6126
 
6117
6127
  TESTS:
6118
6128
 
6119
6129
  The bug reported on :issue:`4525` is now fixed::
6120
6130
 
6121
- sage: EllipticCurve('91b1').integral_points()
6131
+ sage: EllipticCurve('91b1').integral_points() # needs eclib sage.symbolic
6122
6132
  [(-1 : -4 : 1), (1 : -1 : 1), (3 : -5 : 1)]
6123
6133
 
6124
6134
  ::
6125
6135
 
6126
- sage: [len(e.integral_points(both_signs=False)) for e in cremona_curves([11..100])] # long time (15s on sage.math, 2011)
6136
+ sage: [len(e.integral_points(both_signs=False)) for e in cremona_curves([11..100])] # long time (15s on sage.math, 2011), needs eclib sage.symbolic
6127
6137
  [2, 0, 2, 3, 2, 1, 3, 0, 2, 4, 2, 4, 3, 0, 0, 1, 2, 1, 2, 0, 2, 1, 0, 1, 3, 3, 1, 1, 4, 2, 3, 2, 0, 0, 5, 3, 2, 2, 1, 1, 1, 0, 1, 3, 0, 1, 0, 1, 1, 3, 6, 1, 2, 2, 2, 0, 0, 2, 3, 1, 2, 2, 1, 1, 0, 3, 2, 1, 0, 1, 0, 1, 3, 3, 1, 1, 5, 1, 0, 1, 1, 0, 1, 2, 0, 2, 0, 1, 1, 3, 1, 2, 2, 4, 4, 2, 1, 0, 0, 5, 1, 0, 1, 2, 0, 2, 2, 0, 0, 0, 1, 0, 3, 1, 5, 1, 2, 4, 1, 0, 1, 0, 1, 0, 1, 0, 2, 2, 0, 0, 1, 0, 1, 1, 4, 1, 0, 1, 1, 0, 4, 2, 0, 1, 1, 2, 3, 1, 1, 1, 1, 6, 2, 1, 1, 0, 2, 0, 6, 2, 0, 4, 2, 2, 0, 0, 1, 2, 0, 2, 1, 0, 3, 1, 2, 1, 4, 6, 3, 2, 1, 0, 2, 2, 0, 0, 5, 4, 1, 0, 0, 1, 0, 2, 2, 0, 0, 2, 3, 1, 3, 1, 1, 0, 1, 0, 0, 1, 2, 2, 0, 2, 0, 0, 1, 2, 0, 0, 4, 1, 0, 1, 1, 0, 1, 2, 0, 1, 4, 3, 1, 2, 2, 1, 1, 1, 1, 6, 3, 3, 3, 3, 1, 1, 1, 1, 1, 0, 7, 3, 0, 1, 3, 2, 1, 0, 3, 2, 1, 0, 2, 2, 6, 0, 0, 6, 2, 2, 3, 3, 5, 5, 1, 0, 6, 1, 0, 3, 1, 1, 2, 3, 1, 2, 1, 1, 0, 1, 0, 1, 0, 5, 5, 2, 2, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1]
6128
6138
 
6129
6139
  The bug reported at :issue:`4897` is now fixed::
6130
6140
 
6131
- sage: [P[0] for P in EllipticCurve([0,0,0,-468,2592]).integral_points()]
6141
+ sage: [P[0] for P in EllipticCurve([0,0,0,-468,2592]).integral_points()] # needs sage.symbolic
6132
6142
  [-24, -18, -14, -6, -3, 4, 6, 18, 21, 24, 36, 46, 102, 168, 186, 381, 1476, 2034, 67246]
6133
6143
 
6134
6144
  See :issue:`22063`::
6135
6145
 
6136
- sage: for n in [67,71,74,91]: # long time
6146
+ sage: for n in [67,71,74,91]: # long time, needs sage.symbolic
6137
6147
  ....: assert 4*n^6 + 4*n^2 in [P[0] for P in EllipticCurve([0,0,0,2,n^2]).integral_points()]
6138
6148
 
6139
6149
  ALGORITHM:
@@ -6552,31 +6562,31 @@ class EllipticCurve_rational_field(EllipticCurve_number_field):
6552
6562
 
6553
6563
  ::
6554
6564
 
6555
- sage: a = E.S_integral_points([2,3]) # needs eclib
6556
- sage: len(a) # needs eclib
6565
+ sage: a = E.S_integral_points([2,3]) # needs eclib sage.symbolic
6566
+ sage: len(a) # needs eclib sage.symbolic
6557
6567
  43
6558
6568
 
6559
6569
  An example with negative discriminant::
6560
6570
 
6561
- sage: EllipticCurve('900d1').S_integral_points([17], both_signs=True) # needs eclib
6571
+ sage: EllipticCurve('900d1').S_integral_points([17], both_signs=True) # needs eclib sage.symbolic
6562
6572
  [(-11 : -27 : 1), (-11 : 27 : 1), (-4 : -34 : 1), (-4 : 34 : 1), (4 : -18 : 1),
6563
6573
  (4 : 18 : 1), (2636/289 : -98786/4913 : 1), (2636/289 : 98786/4913 : 1),
6564
6574
  (16 : -54 : 1), (16 : 54 : 1)]
6565
6575
 
6566
6576
  Output checked with Magma (corrected in 3 cases)::
6567
6577
 
6568
- sage: [len(e.S_integral_points([2], both_signs=False)) for e in cremona_curves([11..100])] # long time (17s on sage.math, 2011) # needs eclib
6578
+ sage: [len(e.S_integral_points([2], both_signs=False)) for e in cremona_curves([11..100])] # long time (17s on sage.math, 2011) # needs eclib sage.symbolic
6569
6579
  [2, 0, 2, 3, 3, 1, 3, 1, 3, 5, 3, 5, 4, 1, 1, 2, 2, 2, 3, 1, 2, 1, 0, 1, 3, 3, 1, 1, 5, 3, 4, 2, 1, 1, 5, 3, 2, 2, 1, 1, 1, 0, 1, 3, 0, 1, 0, 1, 1, 3, 7, 1, 3, 3, 3, 1, 1, 2, 3, 1, 2, 3, 1, 2, 1, 3, 3, 1, 1, 1, 0, 1, 3, 3, 1, 1, 7, 1, 0, 1, 1, 0, 1, 2, 0, 3, 1, 2, 1, 3, 1, 2, 2, 4, 5, 3, 2, 1, 1, 6, 1, 0, 1, 3, 1, 3, 3, 1, 1, 1, 1, 1, 3, 1, 5, 1, 2, 4, 1, 1, 1, 1, 1, 0, 1, 0, 2, 2, 0, 0, 1, 0, 1, 1, 6, 1, 0, 1, 1, 0, 4, 3, 1, 2, 1, 2, 3, 1, 1, 1, 1, 8, 3, 1, 2, 1, 2, 0, 8, 2, 0, 6, 2, 3, 1, 1, 1, 3, 1, 3, 2, 1, 3, 1, 2, 1, 6, 9, 3, 3, 1, 1, 2, 3, 1, 1, 5, 5, 1, 1, 0, 1, 1, 2, 3, 1, 1, 2, 3, 1, 3, 1, 1, 1, 1, 0, 0, 1, 3, 3, 1, 3, 1, 1, 2, 2, 0, 0, 6, 1, 0, 1, 1, 1, 1, 3, 1, 2, 6, 3, 1, 2, 2, 1, 1, 1, 1, 7, 5, 4, 3, 3, 1, 1, 1, 1, 1, 1, 8, 5, 1, 1, 3, 3, 1, 1, 3, 3, 1, 1, 2, 3, 6, 1, 1, 7, 3, 3, 4, 5, 9, 6, 1, 0, 7, 1, 1, 3, 1, 1, 2, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, 7, 8, 2, 3, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1]
6570
6580
 
6571
6581
  An example from [PZGH1999]_::
6572
6582
 
6573
6583
  sage: E = EllipticCurve([0,0,0,-172,505])
6574
- sage: E.rank(), len(E.S_integral_points([3,5,7])) # long time (5s on sage.math, 2011) # needs eclib
6584
+ sage: E.rank(), len(E.S_integral_points([3,5,7])) # long time (5s on sage.math, 2011) # needs eclib sage.symbolic
6575
6585
  (4, 72)
6576
6586
 
6577
6587
  This is curve "7690e1" which failed until :issue:`4805` was fixed::
6578
6588
 
6579
- sage: EllipticCurve([1,1,1,-301,-1821]).S_integral_points([13,2]) # needs eclib
6589
+ sage: EllipticCurve([1,1,1,-301,-1821]).S_integral_points([13,2]) # needs eclib sage.symbolic
6580
6590
  [(-13 : -4 : 1), (-9 : -12 : 1), (-7 : 2 : 1), (21 : -52 : 1),
6581
6591
  (23 : -76 : 1), (63 : -516 : 1), (71 : -620 : 1), (87 : -844 : 1),
6582
6592
  (2711 : -142540 : 1), (7323 : -630376 : 1), (17687 : -2361164 : 1)]
@@ -553,7 +553,7 @@ class EllipticCurveFormalGroup(SageObject):
553
553
  # note that the following formula differs from the one in Silverman page 119.
554
554
  # See github issue 9646 for the explanation and justification.
555
555
  t3 = -t1 - t2 - \
556
- (a1*lam + a3*lam2 + a2*nu + 2*a4*lam*nu + 3*a6*lam2*nu) / \
556
+ (a1*lam + a3*lam2 + a2*nu + 2*a4*lam*nu + 3*a6*lam2*nu) / \
557
557
  (1 + a2*lam + a4*lam2 + a6*lam3)
558
558
  inv = self.inverse(prec)
559
559