Open tornaria opened 1 year ago
I'll look into it. I cannot remember who wrote this -- not me!
I had forgotten that Robert Miller had made this cython implementation -- it is a rewrite of my C++ code in eclib.
I don't know enough cython to debug and have little motivation. As far as I can tell the code here is not used anywhere -- I could find no reference to it in ell_rational_field where 2-descent (on elliptic curves over Q) is done either by calling eclib (as in the method two_descent) or Denis Simon's gp script (in simon_two_descent), the latter being now obsolete.
What is your interest in this, @tornaria ?
I had forgotten that Robert Miller had made this cython implementation -- it is a rewrite of my C++ code in eclib.
I don't know enough cython to debug and have little motivation. As far as I can tell the code here is not used anywhere -- I could find no reference to it in ell_rational_field where 2-descent (on elliptic curves over Q) is done either by calling eclib (as in the method two_descent) or Denis Simon's gp script (in simon_two_descent), the latter being now obsolete.
What is your interest in this, @tornaria ?
None, other than making sure the testsuite passes as predictable as possible.
This bug strikes every once in a while, as far as I remember always on 32 bit (i686). The actual doctest failure is this:
sage: from sage.schemes.elliptic_curves.descent_two_isogeny import test_els ## line 921 ##
sage: for _ in range(1000):
a,b,c,d,e = randint(1,1000), randint(1,1000), randint(1,1000), randint(1,1000), randint(1,1000)
if pari.Pol([a,b,c,d,e]).hyperellratpoints(1000, 1):
try:
if not test_els(a,b,c,d,e):
print("This never happened", a, b, c, d, e)
except ValueError:
continue ## line 922 ##
-----------------------------------------------------------------------
<backtrace for the segfault>
-----------------------------------------------------------------------
What I did is figure out what are some values of a, b, c, d, e that cause the failure, and track it down to that track_qpls()
.
Debugging is a pain, not helped by the fact that I only have a case that breaks on 32 bit (it is possible that the bug also affects 64 bits but it's much harder to trigger).
Thanks for the explanation. I am going to unassign myself for reasons I already explained + not having a 32-bit machine.
Is there an existing issue for this?
Did you read the documentation and troubleshoot guide?
Environment
Steps To Reproduce
Expected Behavior
Actual Behavior
Additional Information
Found while doctesting
descent_two_isogeny
for some random seed the doctest fortest_els
fails. Tracked it down toQp_soluble()
with some large p (681692926869431 > 2^32).I have not been able to reproduce this on 64 bits. Maybe it's too hard to hit a polynomial of degree 4 with a large prime in the discriminant ( > 2^64) that it is globally solvable (because that is what
test_els()
seems to check before indirectly callingQp_solvable
).