Skip to content

Commit 0c96d61

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 0c96d61

3 files changed

Lines changed: 20 additions & 3 deletions

File tree

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: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ cdef class ETuple:
1414
cdef ETuple _new(self) noexcept
1515
cdef int get_exp(self, size_t i) noexcept
1616

17-
cpdef int unweighted_degree(self) except *
17+
# can't use cpdef because function pointers
18+
cdef int _unweighted_degree(self) except *
19+
def int unweighted_degree(self) except *
1820
cpdef int weighted_degree(self, tuple w) except *
1921
cpdef int unweighted_quotient_degree(self, ETuple other) except *
2022
cpdef int weighted_quotient_degree(self, ETuple other, tuple w) except *

src/sage/rings/polynomial/polydict.pyx

Lines changed: 16 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,21 @@ cdef class ETuple:
18631863
degree += self._data[2 * i + 1]
18641864
return degree
18651865

1866+
def 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+
1880+
18661881
@cython.boundscheck(False)
18671882
@cython.wraparound(False)
18681883
cpdef int weighted_degree(self, tuple w) except *:

0 commit comments

Comments
 (0)