As a workaround you probably can use analytic rank E.analytic_rank(leading_coefficient=1) (5, 3634.28250646374195) The second number is the value of first non-vanishing derivative. If you need more precision, you can set the precision in pari/gp and do: gp.ellanalyticrank(gp(E)) -- it returns the leading coefficient working with pari's realprecision and if needed specified epsilon.
Probably another issue: Sha = Integer(round ( (L1 * T * T) / (E.tamagawa_product() * regulator * omega) )) try: Sha = Integer(Sha) except ValueError: I think you can't throw in try: since Sha is already integer. On Wed, Oct 16, 2013 at 02:34:33PM +0100, John Cremona wrote: > 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 > > > -- 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.