#3979: Power series composition messes up precision
------------------------+---------------------------------------------------
   Reporter:  kedlaya   |          Owner:  somebody                            
       Type:  defect    |         Status:  needs_review                        
   Priority:  critical  |      Milestone:  sage-4.7.2                          
  Component:  algebra   |       Keywords:  power series, composition, precision
Work_issues:            |       Upstream:  N/A                                 
   Reviewer:            |         Author:  Francis Clarke                      
     Merged:            |   Dependencies:                                      
------------------------+---------------------------------------------------
Changes (by fwclarke):

  * status:  needs_work => needs_review


Old description:

> The composition of two power series is sometimes returned with the wrong
> precision. A trivial example:
> {{{
> sage: pow.<u> = PowerSeriesRing(Rationals()); print (1 + O(u^4))(u)
> 1
> }}}
> where the return value should have precision 4 rather than infinity. A
> more nontrivial example:
> {{{
> sage: pow.<u> = PowerSeriesRing(Rationals()); print (1 + u^2 +
> O(u^4))(u^2)
> 1 + u^4 + O(u^10)
> }}}
> where the return value should have precision 8 instead of 10.

New description:

 The composition of two power series is sometimes returned with the wrong
 precision. A trivial example:

 {{{
 sage: pow.<u> = PowerSeriesRing(Rationals()); print (1 + O(u^4))(u)
 1
 }}}
 where the return value should have precision 4 rather than infinity. A
 more nontrivial example:

 {{{
 sage: pow.<u> = PowerSeriesRing(Rationals()); print (1 + u^2 +
 O(u^4))(u^2)
 1 + u^4 + O(u^10)
 }}}
 where the return value should have precision 8 instead of 10.

 ----

 Apply
 
[http://trac.sagemath.org/sage_trac/attachment/ticket/3979/trac_3979_power_series_substitution_rev1.patch
 trac_3979_power_series_substitution_rev1.patch]

--

Comment:

 I have attached a revised patch.  All the previous failures have been
 dealt with.  Some changes were essentially trivial, but more major were:

  1. Formal groups for elliptic curves have been rewritten to exploit the
 multi-variable power series code available since 4.7.1

  2. `local_coordinates_at_weierstrass` in
 `sage/schemes/hyperelliptic_curves/hyperelliptic_generic.py` has been
 substantially simplified.

  3. At several places in
 `sage/schemes/hyperelliptic_curves/hyperelliptic_padic_field.py`
 substitution in a power series has had to be replaced by substitution in
 the underlying polynomial.  This works for now because in these instances
 the p-adic radius of convergence is known.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/3979#comment:7>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to