Skip to content

Commit 6eebb35

Browse files
committed
do not assume that the approximate valuation will not change over time
1 parent d5b86a8 commit 6eebb35

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

src/sage/data_structures/stream.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1611,18 +1611,16 @@ def __init__(self, f, g):
16111611
sage: h = Stream_cauchy_compose(f, g)
16121612
"""
16131613
#assert g._approximate_order > 0
1614-
self._fv = f._approximate_order
1615-
self._gv = g._approximate_order
1616-
if self._fv < 0:
1614+
if f._approximate_order < 0:
16171615
ginv = Stream_cauchy_invert(g)
16181616
# The constant part makes no contribution to the negative.
16191617
# We need this for the case so self._neg_powers[0][n] => 0.
16201618
self._neg_powers = [Stream_zero(f._is_sparse), ginv]
1621-
for i in range(1, -self._fv):
1619+
for i in range(1, -f._approximate_order):
16221620
self._neg_powers.append(Stream_cauchy_mul(self._neg_powers[-1], ginv))
16231621
# Placeholder None to make this 1-based.
16241622
self._pos_powers = [None, g]
1625-
val = self._fv * self._gv
1623+
val = f._approximate_order * g._approximate_order
16261624
super().__init__(f, g, f._is_sparse, val)
16271625

16281626
def get_coefficient(self, n):
@@ -1644,15 +1642,18 @@ def get_coefficient(self, n):
16441642
sage: [h.get_coefficient(i) for i in range(10)]
16451643
[0, 1, 6, 28, 124, 527, 2172, 8755, 34704, 135772]
16461644
"""
1645+
fv = self._left._approximate_order
1646+
gv = self._right._approximate_order
16471647
if n < 0:
1648-
return sum(self._left[i] * self._neg_powers[-i][n] for i in range(self._fv, n // self._gv + 1))
1648+
return sum(self._left[i] * self._neg_powers[-i][n]
1649+
for i in range(fv, n // gv + 1))
16491650
# n > 0
1650-
while len(self._pos_powers) <= n // self._gv:
1651+
while len(self._pos_powers) <= n // gv:
16511652
self._pos_powers.append(Stream_cauchy_mul(self._pos_powers[-1], self._right))
1652-
ret = sum(self._left[i] * self._neg_powers[-i][n] for i in range(self._fv, 0))
1653+
ret = sum(self._left[i] * self._neg_powers[-i][n] for i in range(fv, 0))
16531654
if n == 0:
16541655
ret += self._left[0]
1655-
return ret + sum(self._left[i] * self._pos_powers[i][n] for i in range(1, n // self._gv+1))
1656+
return ret + sum(self._left[i] * self._pos_powers[i][n] for i in range(1, n // gv+1))
16561657

16571658

16581659
class Stream_plethysm(Stream_binary):

0 commit comments

Comments
 (0)