Skip to content

Commit dc748ce

Browse files
committed
compiler: Fixup SafeInv.is_commutative
1 parent d61a644 commit dc748ce

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

devito/finite_differences/differentiable.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -650,6 +650,10 @@ def base(self):
650650
def val(self):
651651
return self.args[0]
652652

653+
@property
654+
def is_commutative(self):
655+
return self.val.is_commutative and self.base.is_commutative
656+
653657
def __str__(self):
654658
return Pow(self.args[0], -1).__str__()
655659

tests/test_symbolics.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -710,11 +710,15 @@ def test_canonical_ordering_of_weights():
710710
fi = f[x, y + i, z]
711711
wi = w[i]
712712
cf = ComponentAccess(fi, 0)
713+
safeinv = SafeInv(f, f)
713714

714715
assert (ccode(1.0*f[x, y, z] + 2.0*f[x, y + 1, z] + 3.0*f[x, y + 2, z]) ==
715716
'1.0F*f[x][y][z] + 2.0F*f[x][y + 1][z] + 3.0F*f[x][y + 2][z]')
716717
assert ccode(fi*wi) == 'f[x][y + i0][z]*w0[i0]'
717718
assert ccode(cf*wi) == 'f[x][y + i0][z].x*w0[i0]'
719+
assert ccode(safeinv*wi) == 'SAFEINV(f(x, y, z), f(x, y, z))*w0[i0]'
720+
721+
assert str(safeinv*wi) == 'SafeInv(f(x, y, z), f(x, y, z))*w0[i0]'
718722

719723

720724
def test_ideriv_subs_complex():

0 commit comments

Comments
 (0)