Skip to content

Commit e87fd84

Browse files
committed
src/sage/rings/polynomial: fix cython codegen
function pointers to `cpdef`d functions don't work because of dispatch
1 parent ab1a517 commit e87fd84

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

src/sage/rings/polynomial/hilbert.pyx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ cdef inline list interred(list L) noexcept:
106106
# that appears later in L.
107107
if not L:
108108
return []
109-
L.sort(key=ETuple.unweighted_degree)
109+
L.sort(key=ETuple._unweighted_degree)
110110
cdef size_t i
111111
cdef ETuple m
112112
cdef list result = [<ETuple> PyList_GET_ITEM(L, 0)]

src/sage/rings/polynomial/polydict.pxd

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ cdef class ETuple:
1414
cdef ETuple _new(self) noexcept
1515
cdef int get_exp(self, size_t i) noexcept
1616

17+
# need a cdef version for function pointers
18+
cdef int _unweighted_degree(self) except *
1719
cpdef int unweighted_degree(self) except *
1820
cpdef int weighted_degree(self, tuple w) except *
1921
cpdef int unweighted_quotient_degree(self, ETuple other) except *

src/sage/rings/polynomial/polydict.pyx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1845,7 +1845,7 @@ cdef class ETuple:
18451845

18461846
# additional methods
18471847

1848-
cpdef int unweighted_degree(self) except *:
1848+
cdef int _unweighted_degree(self) except *:
18491849
r"""
18501850
Return the sum of entries.
18511851
@@ -1863,6 +1863,20 @@ cdef class ETuple:
18631863
degree += self._data[2 * i + 1]
18641864
return degree
18651865

1866+
cpdef int unweighted_degree(self) except *:
1867+
r"""
1868+
Return the sum of entries.
1869+
1870+
EXAMPLES::
1871+
1872+
sage: from sage.rings.polynomial.polydict import ETuple
1873+
sage: ETuple([1, 1, 0, 2, 0]).unweighted_degree()
1874+
4
1875+
sage: ETuple([-1, 1]).unweighted_degree()
1876+
0
1877+
"""
1878+
return self._unweighted_degree()
1879+
18661880
@cython.boundscheck(False)
18671881
@cython.wraparound(False)
18681882
cpdef int weighted_degree(self, tuple w) except *:

0 commit comments

Comments
 (0)