#6431: PowerSeriesRing._element_constructor_() does not accept Laurent series
-------------------------------------------------+-------------------------
Reporter: ncalexan | Owner: malb
Type: defect | Status: new
Priority: major | Milestone: sage-6.2
Component: commutative algebra | Resolution:
Keywords: Laurent series power series | Merged in:
call method | Reviewers:
Authors: | Work issues:
Report Upstream: N/A | Commit:
Branch: | Stopgaps:
Dependencies: |
-------------------------------------------------+-------------------------
Old description:
> {{{
> sage: CDF[['t']]( ~(~CDF[['t']].gen()^2) )
> ---------------------------------------------------------------------------
> TypeError Traceback (most recent call
> last)
>
> /Users/ncalexan/Documents/School/period_matrix/riemann_surface.py in
> <module>()
>
> /Users/ncalexan/sage-4.0.1.alpha0/local/lib/python2.5/site-
> packages/sage/rings/power_series_ring.pyc in __call__(self, f, prec,
> check)
> 378 v = sage_eval(f.Eltseq())
> 379 return self(v) * (self.gen(0)**f.Valuation())
> --> 380 return self.__power_series_class(self, f, prec,
> check=check)
> 381
> 382 def construction(self):
>
> /Users/ncalexan/sage-4.0.1.alpha0/local/lib/python2.5/site-
> packages/sage/rings/power_series_poly.so in
> sage.rings.power_series_poly.PowerSeries_poly.__init__
> (sage/rings/power_series_poly.c:2307)()
>
> /Users/ncalexan/sage-4.0.1.alpha0/local/lib/python2.5/site-
> packages/sage/structure/parent.so in
> sage.structure.parent.Parent.__call__ (sage/structure/parent.c:4150)()
>
> /Users/ncalexan/sage-4.0.1.alpha0/local/lib/python2.5/site-
> packages/sage/structure/coerce_maps.so in
> sage.structure.coerce_maps.DefaultConvertMap_unique._call_with_args
> (sage/structure/coerce_maps.c:3448)()
>
> /Users/ncalexan/sage-4.0.1.alpha0/local/lib/python2.5/site-
> packages/sage/structure/coerce_maps.so in
> sage.structure.coerce_maps._call_with_args
> (sage/structure/coerce_maps.c:3262)()
>
> /Users/ncalexan/sage-4.0.1.alpha0/local/lib/python2.5/site-
> packages/sage/rings/polynomial/polynomial_ring.pyc in
> _element_constructor_(self, x, check, is_gen, construct, **kwds)
> 310 x = x.Polrev()
> 311
> --> 312 return C(self, x, check, is_gen, construct=construct,
> **kwds)
> 313
> 314 def is_integral_domain(self):
>
> /Users/ncalexan/sage-4.0.1.alpha0/local/lib/python2.5/site-
> packages/sage/rings/polynomial/polynomial_element_generic.pyc in
> __init__(self, parent, x, check, is_gen, construct)
> 581 class Polynomial_generic_dense_field(Polynomial_generic_dense,
> Polynomial_generic_field):
> 582 def __init__(self, parent, x=None, check=True, is_gen =
> False, construct=False):
> --> 583 Polynomial_generic_dense.__init__(self, parent, x, check,
> is_gen)
> 584
> 585
>
> /Users/ncalexan/sage-4.0.1.alpha0/local/lib/python2.5/site-
> packages/sage/rings/polynomial/polynomial_element.so in
> sage.rings.polynomial.polynomial_element.Polynomial_generic_dense.__init__
> (sage/rings/polynomial/polynomial_element.c:35169)()
>
> /Users/ncalexan/sage-4.0.1.alpha0/local/lib/python2.5/site-
> packages/sage/rings/complex_double.so in
> sage.rings.complex_double.ComplexDoubleField_class.__call__
> (sage/rings/complex_double.c:3596)()
>
> /Users/ncalexan/sage-4.0.1.alpha0/local/lib/python2.5/site-
> packages/sage/structure/parent.so in
> sage.structure.parent.Parent.__call__ (sage/structure/parent.c:4130)()
>
> /Users/ncalexan/sage-4.0.1.alpha0/local/lib/python2.5/site-
> packages/sage/structure/coerce_maps.so in
> sage.structure.coerce_maps.DefaultConvertMap_unique._call_
> (sage/structure/coerce_maps.c:3058)()
>
> /Users/ncalexan/sage-4.0.1.alpha0/local/lib/python2.5/site-
> packages/sage/structure/coerce_maps.so in
> sage.structure.coerce_maps._call_ (sage/structure/coerce_maps.c:2949)()
>
> /Users/ncalexan/sage-4.0.1.alpha0/local/lib/python2.5/site-
> packages/sage/rings/complex_double.so in
> sage.rings.complex_double.ComplexDoubleField_class._element_constructor_
> (sage/rings/complex_double.c:4022)()
>
> /Users/ncalexan/sage-4.0.1.alpha0/local/lib/python2.5/site-
> packages/sage/rings/complex_double.so in
> sage.rings.complex_double.ComplexDoubleElement.__init__
> (sage/rings/complex_double.c:5765)()
>
> TypeError: a float is required
> }}}
New description:
{{{
sage: CDF[['t']]( ~(~CDF[['t']].gen()^2) )
Traceback (most recent call last):
...
TypeError: a float is required
}}}
--
Comment (by pbruin):
No, the problem is that `PowerSeriesRing._element_constructor_(self, f)`
does not currently accept Laurent series. Here is another example:
{{{
sage: L.<q> = LaurentSeriesRing(QQ)
sage: P = L.power_series_ring()
sage: P(q)
Traceback (most recent call last):
...
TypeError: Unable to coerce q (<type
'sage.rings.laurent_series_ring_element.LaurentSeries'>) to Rational
}}}
Working on a patch...
--
Ticket URL: <http://trac.sagemath.org/ticket/6431#comment:4>
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 unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.