Skip to content
This repository has been archived by the owner on Jan 30, 2023. It is now read-only.

Commit

Permalink
Merge branch 'public/16203-1' of trac.sagemath.org:sage into tmp06
Browse files Browse the repository at this point in the history
* 'public/16203-1' of trac.sagemath.org:sage:
  16203: fixes
  16203: sync with 17659
  16203: conversion from SR.series to PowerSeries
  • Loading branch information
rwst committed Feb 5, 2016
2 parents bcb68d0 + 50cb33c commit 9cb0cc9
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
20 changes: 20 additions & 0 deletions src/sage/rings/power_series_ring.py
Original file line number Diff line number Diff line change
Expand Up @@ -703,6 +703,19 @@ def _element_constructor_(self, f, prec=infinity, check=True):
1 - x + x^2 - x^3 + x^4 + O(x^5)
sage: PowerSeriesRing(PowerSeriesRing(QQ,'x'),'x')(x).coefficients()
[x]
Conversion from symbolic series::
sage: x,y = var('x,y')
sage: s=(1/(1-x)).series(x,3); s
1 + 1*x + 1*x^2 + Order(x^3)
sage: R.<x> = PowerSeriesRing(QQ)
sage: R(s)
1 + x + x^2 + O(x^3)
sage: ex=(gamma(1-y)).series(y,3)
sage: R.<y> = PowerSeriesRing(SR)
sage: R(ex)
1 + euler_gamma*y + (1/2*euler_gamma^2 + 1/12*pi^2)*y^2 + O(y^3)
Laurent series with non-negative valuation are accepted (see
:trac:`6431`)::
Expand All @@ -729,6 +742,7 @@ def _element_constructor_(self, f, prec=infinity, check=True):
prec = integer.Integer(prec)
if prec < 0:
raise ValueError("prec (= %s) must be non-negative" % prec)
from sage.symbolic.series import SymbolicSeries
if isinstance(f, power_series_ring_element.PowerSeries) and f.parent() is self:
if prec >= f.prec():
return f
Expand All @@ -745,6 +759,12 @@ def _element_constructor_(self, f, prec=infinity, check=True):
num = self.element_class(self, f.numerator(), prec, check=check)
den = self.element_class(self, f.denominator(), prec, check=check)
return self.coerce(num/den)
elif isinstance(f, SymbolicSeries):
if str(f.default_variable()) is self.variable_name():
return self.element_class(self, f.list(),
f.degree(f.default_variable()), check=check)
else:
raise TypeError("Can only convert series into ring with same variable name.")
return self.element_class(self, f, prec, check=check)

def construction(self):
Expand Down
5 changes: 4 additions & 1 deletion src/sage/symbolic/ring.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,10 @@ from sage.structure.element cimport RingElement, Element, Matrix
from sage.categories.morphism cimport Morphism
from sage.structure.coerce cimport is_numpy_type

from sage.rings.all import RR, CC, ZZ
from sage.rings.integer_ring import ZZ
from sage.rings.real_mpfr import RR
from sage.rings.complex_field import ComplexField
CC = ComplexField()


cdef class SymbolicRing(CommutativeRing):
Expand Down

0 comments on commit 9cb0cc9

Please sign in to comment.