From 2d3aa32457f8f228f300cbb5b4bd13633fea9a84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Chapoton?= Date: Sun, 9 Nov 2025 09:35:56 +0100 Subject: [PATCH 1/3] some details in integer-valued polynomials --- .../rings/polynomial/integer_valued_polynomials.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/sage/rings/polynomial/integer_valued_polynomials.py b/src/sage/rings/polynomial/integer_valued_polynomials.py index b0d30fde304..024c25a480e 100644 --- a/src/sage/rings/polynomial/integer_valued_polynomials.py +++ b/src/sage/rings/polynomial/integer_valued_polynomials.py @@ -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. @@ -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``. @@ -700,7 +700,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): @@ -809,7 +809,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. @@ -828,7 +828,8 @@ def h_vector(self): d = 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): From 70f3bb5bd48ce64a836bfabdb15a8cdf8bdf3ba4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Chapoton?= Date: Sun, 9 Nov 2025 19:46:35 +0100 Subject: [PATCH 2/3] one more fix --- src/sage/rings/polynomial/integer_valued_polynomials.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/sage/rings/polynomial/integer_valued_polynomials.py b/src/sage/rings/polynomial/integer_valued_polynomials.py index 024c25a480e..6371901ae15 100644 --- a/src/sage/rings/polynomial/integer_valued_polynomials.py +++ b/src/sage/rings/polynomial/integer_valued_polynomials.py @@ -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""" From 5627d6645ed785917e75acef57f8b0e47403a7d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Chapoton?= Date: Sun, 9 Nov 2025 20:33:41 +0100 Subject: [PATCH 3/3] yet another detail --- src/sage/rings/polynomial/integer_valued_polynomials.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sage/rings/polynomial/integer_valued_polynomials.py b/src/sage/rings/polynomial/integer_valued_polynomials.py index 6371901ae15..c226d0d82ab 100644 --- a/src/sage/rings/polynomial/integer_valued_polynomials.py +++ b/src/sage/rings/polynomial/integer_valued_polynomials.py @@ -824,7 +824,7 @@ def h_vector(self) -> vector: 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(self.base_ring(),