On 16 October 2013 13:54, Georgi Guninski <gunin...@guninski.com> wrote: > After debugging this I saw the problem. > In sha_tate.py:410 > you consider the first derivative non-zero and use it > in computations, while in practice it is zero > (e-15 vs error_bound=e-25).
This looks like a bug to me. Even with more work: sage: L1, error_bound = E.lseries().deriv_at1(100*sqrt(E.conductor()) + 10) sage: abs(L1) , error_bound (1.94655218772191e-15, 1.82478252135394e-270) We seem to be very confident that L'(1) is nonzero, so the code which then runs uses this presumed nonzero value in a formula which expects to compute an integer, so it rounds it, but in this case it is computing 0 approximately and then rounds to 0. The problem is that the function E.lseries().deriv_at_1() uses Python floats, which is insufficient. It is better to use E.lseries().dokchitser(prec=...): the prec parameter is by default 53 bits but can be increased. sage: E.lseries().dokchitser().derivative(1,1) 1.80716657412868e-23 sage: E.lseries().dokchitser(prec=100).derivative(1,1) 3.2664255659421097770000000000e-39 sage: log(_,2) -127.84748293607692539561741115 which I think means that to 100 bits the result is less than 2^-127. The Sha function should be rewritten to use this. I will open a trac ticket for this. John Cremona > > On Wed, Oct 16, 2013 at 10:56:27AM +0100, John Cremona wrote: >> We have theory that tells us that for curves of analytic rank 0 or 1, >> Sha is finite and while BSD is not completely proved for such curves, >> the formula it claims for #Sha is certainly rational -- and Sage does >> compute this exactly. But for analytic rank >1 the "analytic Sha" is >> just the value predicted by BSD which is not known theoretically to be >> rational and can only be computed as a floating point approximation, >> for which it is most honest to leave as such. >> >> John Cremona >> >> On 16 October 2013 10:39, Georgi Guninski <gunin...@guninski.com> wrote: >> > Why E.sha().an() = 0 and E.sha().an_numerical() = 1.0 ? >> > >> > On 5.11 on linux and on cloud.sagemath.com: >> > >> > sage: E=EllipticCurve(QQ,[0, 0, 1, -79, >> > 342]);E.sha().an(),E.sha().an_numerical() >> > (0, 1.00000000000000) >> > #^ why different and 0 is integer ? >> > sage: E.sha().bound() >> > (0, 0) >> > >> > sage: type(E.sha().an()) >> > <type 'sage.rings.integer.Integer'> >> > sage: E.rank(),E.analytic_rank() >> > (5, 5) >> > >> > sage: E.conductor() >> > 19047851 >> > >> > E.sha().an_padic(3) # stopped this at about 7G of RAM >> > >> > -- >> > You received this message because you are subscribed to the Google Groups >> > "sage-support" group. >> > To unsubscribe from this group and stop receiving emails from it, send an >> > email to sage-support+unsubscr...@googlegroups.com. >> > To post to this group, send email to sage-support@googlegroups.com. >> > Visit this group at http://groups.google.com/group/sage-support. >> > For more options, visit https://groups.google.com/groups/opt_out. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "sage-support" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to sage-support+unsubscr...@googlegroups.com. >> To post to this group, send email to sage-support@googlegroups.com. >> Visit this group at http://groups.google.com/group/sage-support. >> For more options, visit https://groups.google.com/groups/opt_out. > > -- > You received this message because you are subscribed to the Google Groups > "sage-support" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sage-support+unsubscr...@googlegroups.com. > To post to this group, send email to sage-support@googlegroups.com. > Visit this group at http://groups.google.com/group/sage-support. > For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups "sage-support" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-support+unsubscr...@googlegroups.com. To post to this group, send email to sage-support@googlegroups.com. Visit this group at http://groups.google.com/group/sage-support. For more options, visit https://groups.google.com/groups/opt_out.