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.

Reply via email to