Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions src/sage/rings/polynomial/integer_valued_polynomials.py
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ def gen(self, i=0):
return self.algebra_generators()[0]

@cached_method
def algebra_generators(self):
def algebra_generators(self) -> Family:
r"""
Return the generators of this algebra.

Expand Down Expand Up @@ -456,7 +456,7 @@ class Shifted(CombinatorialFreeModule, BindableClass):
sage: 1 - S[2] * S[2] / 2
S[0] - 1/2*S[2] + 3*S[3] - 3*S[4]
"""
def __init__(self, A):
def __init__(self, A) -> None:
r"""
Initialize ``self``.

Expand Down Expand Up @@ -552,10 +552,9 @@ def from_h_vector(self, h):
d = len(h) - 1
m = matrix(QQ, d + 1, d + 1,
lambda j, i: (-1)**(d - j) * binomial(d - i, d - j))
v = vector(QQ, [h[i] for i in range(d + 1)])
R = self.base_ring()
return self._from_dict({i: R(c)
for i, c in enumerate(m * v)})
v = vector(R, [h[i] for i in range(d + 1)])
return self._from_dict(dict(enumerate(m * v)))

def _element_constructor_(self, x):
r"""
Expand Down Expand Up @@ -700,7 +699,7 @@ def _poly(self, i):
sage: F._poly(4)
1/24*x^4 + 5/12*x^3 + 35/24*x^2 + 25/12*x + 1
"""
x = polygen(QQ, 'x')
x = polygen(self.base_ring(), 'x')
return binomial(x + i, i)

class Element(CombinatorialFreeModule.Element):
Expand Down Expand Up @@ -809,7 +808,7 @@ def derivative_at_minus_one(self):
"""
return QQ.sum(c / QQ(i) for i, c in self if i)

def h_vector(self):
def h_vector(self) -> vector:
"""
Return the numerator of the generating series of values.

Expand All @@ -825,10 +824,11 @@ def h_vector(self):
sage: ex.h_vector()
(0, 1, 4, 1)
"""
d = max(self.support(), default=-1)
d = ZZ(max(self.support(), default=-1))
m = matrix(QQ, d + 1, d + 1,
lambda j, i: (-1)**(d - j) * (d - i).binomial(d - j))
v = vector(QQ, [self.coefficient(i) for i in range(d + 1)])
v = vector(self.base_ring(),
[self.coefficient(i) for i in range(d + 1)])
return m * v

def h_polynomial(self):
Expand Down
Loading