The following code initializes the curve,
a1 = 0
a2 = 1385517326399
a3 = 0
a4 = 122858128750077837043200
a6 = 2723553057107893845651798389990400
E = EllipticCurve([a1, a2, a3, a4, a6])
print(E)
and the print confirms that we have what we want in our hands:
y^2 = x^3 + 1385517326399*x^2
+ 122858128750077837043200*x
+ 2723553057107893845651798389990400
(Result was manually rearranged.)
Then the call E.rank() was also running into an error on my older machine, the last traceback lines being:
43
44 cdef void NTL_error_callback(const char* s) except *:
---> 45 raise NTLError(char_to_str(s))
46
47
NTLError: RR: division by zero
However note that the error comes from running the do_descent method, in my case:
/usr/lib/python3.9/site-packages/sage/libs/eclib/interface.py in two_descent(self, verbose, selmer_only, first_limit, second_limit, n_aux, second_descent)
378 # (since otherwise mwrank just sets limit tiny)
379 self.__descent = _two_descent()
--> 380 self.__descent.do_descent(self.__curve,
381 verbose,
382 selmer_only,
and inside it the error happens in a cimport piece of code in sig_on().
So we outside python and cannot traceback it any longer.
Also, trying for instance a related method:
E.two_descent(second_limit=11)
we get verbose information on what is going on, and also this call runs into an error, but we know somehow closer where it happens:
-------------------------------------------------------
2. E'(Q)/phi'(E(Q))
-------------------------------------------------------
First stage (no second descent yet)...
(887753905,0,-2542826149054,0,1722641177203345): no rational point found (hlim=8)
After first global descent, this component of the rank
has lower bound 0
and upper bound 1
(difference = 1)
Second descent will attempt to reduce this
Second stage (using second descent)...
d1=887753905: ---------------------------------------------------------------------------
NTLError Traceback (most recent call last)
<ipython-input-10-99fadbf96833> in <module>
----> 1 E.two_descent(second_limit=Integer(11))
But well, note that we always we have at least:
sage: E.simon_two_descent()
(2, 8, [(-91824010798 : 48478807884801502 : 1)])
sage: E.rank_bounds()
(2, 6)
These are some rough bounds for the rank. And there is also a rational point found on the curve:
sage: P = E.point([-91824010798, 48478807884801502])
sage: P.order()
+Infinity
sage: P.height()
6.53112831073560*
A final remark. We have an elliptic curve constructed by a receipt - as described in the comments, involving big coefficients
sage: factor(x^3 + 1385517326399*x^2 + 122858128750077837043200*x + 2723553057107893845651798389990400)
(x + 1292061882720)*(x + 55420693055)*(x + 38034750624)
and with prescribed torsion points as above. We may still be lucky with one rational point of infinite order. But given the size of the coefficients, the effort to get the rank (and the generators, and all descent data) is in some disproportion to profit we get when we know the answer. What can we do with this virtual answer?
For the "smaller" curves covered by the same receipt we have ranks $1,2,3$.
And which is for instance the profit when knowing the rank of the curve which is previous in the list...?
sage: E5 = EllipticCurve([0, 35343024, 0, 79944226084800, 45207500520241382400])
sage: E5.rank()
2
sage: E5.gens()
[(-903538152/49 : -22540454171136/343 : 1),
(-6408468920/961 : -835866977892800/29791 : 1)]