-
-
Notifications
You must be signed in to change notification settings - Fork 685
Description
Reported by the "Report a Problem" Form:
When typing the following:
S = LazyPowerSeriesRing(ZZ)
one = S(0) + S(1)
one.order
I get a "Infinite series order" message. When asking for
one.coefficients(3)
I get "[0, 0, 0]".
Looking into the code sage/combinat/species/series.py, the _add_ method calls the _new method to create the sum series. Trying:
zero = S(0)
test_series = zero._new(lambda ao: Stream(const=1), lambda: 0)
test_series.order
test_series.coefficients(3)
I again get "Infinite series order" and "[0, 0, 0]".
As I understand it, the _new() method calls the init() method of LazyPowerSeries in the line:
new_fps = self.__class__(parent, stream=None, order=unk, aorder=self.aorder, aorder_changed=True, is_initialized=False)
If the value self.aorder is inf, this puts new_fps.aorder to inf, which (in the init() code), also puts new_fps.order to inf, which makes Sage think that the series has infinite order.
Changing the argument aorder=self.aorder to aorder=unk in the above line solved the problem.
The sum of S(0) and S(1) should have order zero, and its first three coefficients should be [1, 0, 0].
The series test_series should also have order zero, and its coefficients should be [1, 1, 1].
CC: [email protected] @mwhansen @mantepse
Component: combinatorics
Keywords: LazyPowerSeries
Stopgaps: todo
Reviewer: Travis Scrimshaw
Issue created by migration from https://trac.sagemath.org/ticket/10084