|  | 
| 47 | 47 |     sage: E = EllipticCurve('43a'); P = E.heegner_point(-7) | 
| 48 | 48 |     sage: P.x_poly_exact() | 
| 49 | 49 |     x | 
| 50 |  | -    sage: P.point_exact() | 
| 51 |  | -    (0 : 0 : 1) | 
|  | 50 | +    sage: z = P.point_exact(); z == E(0,0,1) or -z == E(0,0,1) | 
|  | 51 | +    True | 
| 52 | 52 | 
 | 
| 53 | 53 |     sage: E = EllipticCurve('997a') | 
| 54 | 54 |     sage: E.rank() | 
|  | 
| 58 | 58 |     sage: P = E.heegner_point(-19) | 
| 59 | 59 |     sage: P.x_poly_exact() | 
| 60 | 60 |     x - 141/49 | 
| 61 |  | -    sage: P.point_exact() | 
| 62 |  | -    (141/49 : -162/343 : 1) | 
|  | 61 | +    sage: z = P.point_exact(); z == E(141/49, -162/343, 1)  or -z == E(141/49, -162/343, 1) | 
|  | 62 | +    True | 
| 63 | 63 | 
 | 
| 64 | 64 | Here we find that the Heegner point generates a subgroup of index 3:: | 
| 65 | 65 | 
 | 
| 66 | 66 |     sage: E = EllipticCurve('92b1') | 
| 67 | 67 |     sage: E.heegner_discriminants_list(1) | 
| 68 | 68 |     [-7] | 
| 69 |  | -    sage: P = E.heegner_point(-7); z = P.point_exact(); z | 
| 70 |  | -    (0 : 1 : 1) | 
|  | 69 | +    sage: P = E.heegner_point(-7) | 
|  | 70 | +    sage: z = P.point_exact(); z == E(0, 1, 1)  or -z == E(0, 1, 1) | 
|  | 71 | +    True | 
| 71 | 72 |     sage: E.regulator() | 
| 72 | 73 |     0.0498083972980648 | 
| 73 | 74 |     sage: z.height() | 
| @@ -6421,8 +6422,8 @@ def ell_heegner_point(self, D, c=ZZ(1), f=None, check=True): | 
| 6421 | 6422 |         [-7, -11, -40, -47, -67, -71, -83, -84, -95, -104] | 
| 6422 | 6423 |         sage: P = E.heegner_point(-7); P                          # indirect doctest | 
| 6423 | 6424 |         Heegner point of discriminant -7 on elliptic curve of conductor 37 | 
| 6424 |  | -        sage: P.point_exact() | 
| 6425 |  | -        (0 : 0 : 1) | 
|  | 6425 | +        sage: z = P.point_exact(); z == E(0, 0, 1)  or -z == E(0, 0, 1) | 
|  | 6426 | +        True | 
| 6426 | 6427 |         sage: P.curve() | 
| 6427 | 6428 |         Elliptic Curve defined by y^2 + y = x^3 - x over Rational Field | 
| 6428 | 6429 |         sage: P = E.heegner_point(-40).point_exact(); P | 
| @@ -7139,14 +7140,15 @@ def heegner_sha_an(self, D, prec=53): | 
| 7139 | 7140 |     2.3 in [GZ1986]_ page 311, then that conjecture is | 
| 7140 | 7141 |     false, as the following example shows:: | 
| 7141 | 7142 | 
 | 
| 7142 |  | -        sage: E = EllipticCurve('65a')                              # long time | 
| 7143 |  | -        sage: E.heegner_sha_an(-56)                                 # long time | 
|  | 7143 | +        sage: # long time | 
|  | 7144 | +        sage: E = EllipticCurve('65a') | 
|  | 7145 | +        sage: E.heegner_sha_an(-56) | 
| 7144 | 7146 |         1.00000000000000 | 
| 7145 |  | -        sage: E.torsion_order()                                     # long time | 
|  | 7147 | +        sage: E.torsion_order() | 
| 7146 | 7148 |         2 | 
| 7147 |  | -        sage: E.tamagawa_product()                                  # long time | 
|  | 7149 | +        sage: E.tamagawa_product() | 
| 7148 | 7150 |         1 | 
| 7149 |  | -        sage: E.quadratic_twist(-56).rank()                         # long time | 
|  | 7151 | +        sage: E.quadratic_twist(-56).rank() | 
| 7150 | 7152 |         2 | 
| 7151 | 7153 |     """ | 
| 7152 | 7154 |     # check conditions, then return from cache if possible. | 
|  | 
0 commit comments