From 5e0aae41ecbfd149d4f6d250fc52af94ddcfc371 Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Mon, 6 May 2024 17:10:18 +0200 Subject: Fix MonomialIndex ordering and MonomialIndex.is_constant --- polymatrix/polymatrix/index.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/polymatrix/polymatrix/index.py b/polymatrix/polymatrix/index.py index 79b8161..384feb8 100644 --- a/polymatrix/polymatrix/index.py +++ b/polymatrix/polymatrix/index.py @@ -1,7 +1,8 @@ from __future__ import annotations + from typing import NamedTuple, Iterable, cast from collections import UserDict -from itertools import filterfalse +from itertools import dropwhile # TODO: remove these types, they are here for backward compatiblity MonomialData = tuple[tuple[int, int], ...] @@ -56,9 +57,11 @@ class MonomialIndex(tuple[VariableIndex]): # they have the same degree the index counts if self.degree == other.degree: # Assumes that monomialindex is sorted! - # FIXME: if the first variable is also the same continue until one + # if the first variable is also the same continue until one # finishes or the values differ. - return self[0] < other[0] + # FIXME: check that return value is not none + s, o = next(dropwhile(lambda t: t[0] == t[1], zip(self, other))) + return s < o return self.degree < other.degree @@ -75,7 +78,7 @@ class MonomialIndex(tuple[VariableIndex]): @staticmethod def is_constant(index: MonomialIndex) -> bool: """ Returns true if it is indexing a constant monomial. """ - return len(index) > 1 + return len(index) == 0 @staticmethod def sort(index: MonomialIndex) -> MonomialIndex: -- cgit v1.2.1