Opened 7 years ago

Closed 7 years ago

#12124 closed defect (fixed)

Fix Eisenstein L-series precision

Reported by: jdemeyer Owned by: craigcitro
Priority: minor Milestone: sage-4.8
Component: modular forms Keywords:
Cc: Merged in: sage-4.8.alpha6
Authors: Jeroen Demeyer Reviewers: Frithjof Schulze, David Loeffler
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Description (last modified by jdemeyer)

The LCalc interface uses PARI/GP through strings. This is problematic for the Eisenstein series L-function where Sage passes the value of

str(float(pi)**0.5)

to PARI/GP. There are two problems with this:

  1. Using float has at most 53 bits precision, regardless of what precision is used in PARI/GP.
  2. Using strings causes an additional loss of precision.

Letting PARI/GP compute the value of sqrt(Pi) solves both these problems.

Attachments (1)

12124_eisenstein.patch (1.6 KB) - added by jdemeyer 7 years ago.

Download all attachments as: .zip

Change History (9)

Changed 7 years ago by jdemeyer

comment:1 Changed 7 years ago by jdemeyer

  • Status changed from new to needs_review

comment:2 follow-up: Changed 7 years ago by fbissey

Just for clarification, does this work with either python-2.6 or 2.7 or does it require python-2.7?

comment:3 in reply to: ↑ 2 Changed 7 years ago by jdemeyer

Replying to fbissey:

Just for clarification, does this work with either python-2.6 or 2.7 or does it require python-2.7?

It should have nothing to do with Python, it is simply a problem that I discovered because of the Python upgrade.

comment:4 Changed 7 years ago by strogdon

I backed out that portion of http://trac.sagemath.org/sage_trac/attachment/ticket/9958/trac_9958-fixing_numericalnoise-part1_p2.patch from #9958 that touched sage/modular/modform/eis_series.py in my build of sage-4.8.alpha3 with python-2.7 and applied the eisenstein patch of this ticket. Testing the touched file passes on x86 and amd64

./sage -t -long  -force_lib devel/sage-main/sage/modular/modform/eis_series.py
sage -t -long -force_lib "devel/sage-main/sage/modular/modform/eis_series.py"
         [2.6 s]
 
----------------------------------------------------------------------
All tests passed!

comment:5 Changed 7 years ago by davidloeffler

  • Status changed from needs_review to needs_info
  • Summary changed from Fix Eisenstein series precision to Fix Eisenstein L-series precision

I've assembled a team of people at SD35 to do some modular forms patch reviewing, and we saw this one. Could you perhaps give us a tiny bit of background on what's going on here and why the change is needed?

comment:6 Changed 7 years ago by jdemeyer

  • Description modified (diff)
  • Status changed from needs_info to needs_review

comment:7 Changed 7 years ago by davidloeffler

  • Reviewers set to Frithjof Schulze, David Loeffler
  • Status changed from needs_review to positive_review

Frithjof and I both looked at this during SD35, and it looks fine. There is some oddness in the eisenstein_series_lseries code -- it is weird that the prec argument is used as both a power series precision and a real-number precision -- but we both feel that is orthogonal to this patch.

comment:8 Changed 7 years ago by jdemeyer

  • Merged in set to sage-4.8.alpha6
  • Resolution set to fixed
  • Status changed from positive_review to closed
Note: See TracTickets for help on using tickets.