#3979: Power series composition messes up precision
--------------------------------------------------------+-------------------
       Reporter:  kedlaya                               |         Owner:  
somebody                                
           Type:  defect                                |        Status:  
needs_review                            
       Priority:  critical                              |     Milestone:  
sage-5.1                                
      Component:  algebra                               |    Resolution:        
                                  
       Keywords:  power series, composition, precision  |   Work issues:        
                                  
Report Upstream:  N/A                                   |     Reviewers:  Kiran 
Kedlaya, Luis Felipe Tabera Alonso
        Authors:  Francis Clarke                        |     Merged in:        
                                  
   Dependencies:                                        |      Stopgaps:  12783 
                                  
--------------------------------------------------------+-------------------
Changes (by fwclarke):

  * status:  needs_work => needs_review
  * milestone:  sage-5.0 => sage-5.1


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.
>
> ----
>
> Apply
> [http://trac.sagemath.org/sage_trac/attachment/ticket/3979/trac_3979_power_series_substitution_rev1.patch
> trac_3979_power_series_substitution_rev1.patch]

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_rev2.patch
 trac_3979_power_series_substitution_rev2.patch]

--

Comment:

 Replying to [comment:8 lftabera]:

 Finally I have a revised patch.  I have applied all your suggestions with
 two exceptions.  Comments on some of them follow:

 > On file laurent_series_ring_element.pyx @446

 Rather than changing the documentation I have changed the code, so it does
 now return a Laurent polynomial.

 > On file multi_power_series_ring  @964,989

 I've left this for another ticket, as you suggested.

 > On file power_series_mpoly @74

 I've left this unchanged, for reasons explained [comment:9 above].

 > On file scheme.py @178

 I've undone this change.  It belongs in another ticket.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/3979#comment:12>
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