#1956: implement multivariate truncated power series arithmetic
-------------------------------------------+--------------------------------
   Reporter:  was                          |       Owner:  pernici              
    
       Type:  enhancement                  |      Status:  needs_work           
    
   Priority:  major                        |   Milestone:  sage-4.7             
    
  Component:  commutative algebra          |    Keywords:  multivariate power 
series
     Author:  Niles Johnson                |    Upstream:  N/A                  
    
   Reviewer:  Martin Albrecht, Simon King  |      Merged:                       
    
Work_issues:                               |  
-------------------------------------------+--------------------------------
Changes (by niles):

  * status:  needs_review => needs_work


Comment:

 Replying to [comment:96 hlaw]:
 > First, thanks for all your work Niles, what you've done has already
 saved me hours of pain!
 >

 Thanks -- glad to hear it!  It has cost me many hours, so I hope the
 review will be finished soon (after I fix this problem :)

 > There seems to be a problem with how coercion/evaluation works between
 two multivariate power series rings when the number of variables in each
 differs.

 Actually it never occurred to me that people would want to substitute into
 a power series from one ring elements from a different ring, or that such
 behavior should be supported, but I can see now why it might be useful.
 The problem is occurring in the `__call__` method of `MPowerSeries`, which
 assumes that the inputs should coerce to the parent of the power series
 they're being substituted into.  A separate part of the problem is that
 elements from one power series ring are incorrectly coercing to 1 in the
 other power series ring:

 {{{
 sage: B.<s, t> = PowerSeriesRing(QQ)
 sage: C.<z> = PowerSeriesRing(QQ)
 sage: B(z)
 1
 sage: C(s)
 ---------------------------------------------------------------------------
 ...
 TypeError: Unable to coerce s (<class
 'sage.rings.multi_power_series_ring_element.MPowerSeries'>) to Rational
 }}}

 So I will have to figure out what is going wrong here.  In the meantime,
 if you need to actually use this, you can use `._value()` to recover the
 underlying multivariate polynomial, do the substitution there, and then
 `.add_bigoh()` to get a power series again.  The important idea is that
 the precision of the power series after substitution should be `n*v`,
 where `n` is the precision of the original power series, and `v` is the
 minimum of the valuations of the input power series.

 Something smarter might be done by mimicking the `__call__` method of
 `MPolynomial_element`, but I haven't thought through that yet -- let me
 know if you do :)

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