Skip to content

Commit e4252f1

Browse files
committed
compiler: Add unevaluable Mod
1 parent 11765dc commit e4252f1

2 files changed

Lines changed: 15 additions & 1 deletion

File tree

‎devito/symbolics/unevaluation.py‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import sympy
22

3-
__all__ = ['Add', 'Mul', 'Pow']
3+
__all__ = ['Add', 'Mod', 'Mul', 'Pow']
44

55

66
class UnevaluableMixin:
@@ -13,6 +13,10 @@ class Add(sympy.Add, UnevaluableMixin):
1313
__new__ = UnevaluableMixin.__new__
1414

1515

16+
class Mod(sympy.Mod, UnevaluableMixin):
17+
__new__ = UnevaluableMixin.__new__
18+
19+
1620
class Mul(sympy.Mul, UnevaluableMixin):
1721
__new__ = UnevaluableMixin.__new__
1822

‎tests/test_pickle.py‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
CallFromPointer, Cast, DefFunction, FieldFromPointer, IntDiv, ListInitializer, SizeOf,
2323
indexify, pow_to_mul
2424
)
25+
from devito.symbolics.unevaluation import Mod
2526
from devito.tools import EnrichedTuple
2627
from devito.types import (
2728
Array, ComponentAccess, CustomDimension, DefaultDimension, DeviceID, FIndexed,
@@ -720,6 +721,15 @@ def test_local_sum(self, pickle):
720721
tuple(map(str, reduction.conditionals.values()))
721722
assert rebuilt.free_symbols.isdisjoint(rebuilt.bound_symbols)
722723

724+
@pytest.mark.parametrize('args', [(0, 3), (1, 3), (3, 3), (Symbol('i'), 3)])
725+
def test_unevaluated_mod(self, pickle, args):
726+
expr = Mod(*args)
727+
728+
rebuilt = pickle.loads(pickle.dumps(expr))
729+
730+
assert rebuilt == expr
731+
assert rebuilt.args == args
732+
723733

724734
class TestAdvanced:
725735

0 commit comments

Comments
 (0)