Skip to content

Commit 1327240

Browse files
author
Release Manager
committed
gh-41154: some details in integer-valued polynomials to allow at least something to work over more general rings plus some additional typing annotations ### 📝 Checklist - [ ] The title is concise and informative. - [ ] The description explains in detail what this PR is about. - [ ] I have created tests covering the changes. URL: #41154 Reported by: Frédéric Chapoton Reviewer(s):
2 parents 4672bf0 + 5627d66 commit 1327240

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

src/sage/rings/polynomial/integer_valued_polynomials.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ def gen(self, i=0):
262262
return self.algebra_generators()[0]
263263

264264
@cached_method
265-
def algebra_generators(self):
265+
def algebra_generators(self) -> Family:
266266
r"""
267267
Return the generators of this algebra.
268268
@@ -456,7 +456,7 @@ class Shifted(CombinatorialFreeModule, BindableClass):
456456
sage: 1 - S[2] * S[2] / 2
457457
S[0] - 1/2*S[2] + 3*S[3] - 3*S[4]
458458
"""
459-
def __init__(self, A):
459+
def __init__(self, A) -> None:
460460
r"""
461461
Initialize ``self``.
462462
@@ -552,10 +552,9 @@ def from_h_vector(self, h):
552552
d = len(h) - 1
553553
m = matrix(QQ, d + 1, d + 1,
554554
lambda j, i: (-1)**(d - j) * binomial(d - i, d - j))
555-
v = vector(QQ, [h[i] for i in range(d + 1)])
556555
R = self.base_ring()
557-
return self._from_dict({i: R(c)
558-
for i, c in enumerate(m * v)})
556+
v = vector(R, [h[i] for i in range(d + 1)])
557+
return self._from_dict(dict(enumerate(m * v)))
559558

560559
def _element_constructor_(self, x):
561560
r"""
@@ -700,7 +699,7 @@ def _poly(self, i):
700699
sage: F._poly(4)
701700
1/24*x^4 + 5/12*x^3 + 35/24*x^2 + 25/12*x + 1
702701
"""
703-
x = polygen(QQ, 'x')
702+
x = polygen(self.base_ring(), 'x')
704703
return binomial(x + i, i)
705704

706705
class Element(CombinatorialFreeModule.Element):
@@ -809,7 +808,7 @@ def derivative_at_minus_one(self):
809808
"""
810809
return QQ.sum(c / QQ(i) for i, c in self if i)
811810

812-
def h_vector(self):
811+
def h_vector(self) -> vector:
813812
"""
814813
Return the numerator of the generating series of values.
815814
@@ -825,10 +824,11 @@ def h_vector(self):
825824
sage: ex.h_vector()
826825
(0, 1, 4, 1)
827826
"""
828-
d = max(self.support(), default=-1)
827+
d = ZZ(max(self.support(), default=-1))
829828
m = matrix(QQ, d + 1, d + 1,
830829
lambda j, i: (-1)**(d - j) * (d - i).binomial(d - j))
831-
v = vector(QQ, [self.coefficient(i) for i in range(d + 1)])
830+
v = vector(self.base_ring(),
831+
[self.coefficient(i) for i in range(d + 1)])
832832
return m * v
833833

834834
def h_polynomial(self):

0 commit comments

Comments
 (0)