Spaces:
Running
Running
from sympy.strategies.branch.tools import canon | |
from sympy.core.basic import Basic | |
from sympy.core.numbers import Integer | |
from sympy.core.singleton import S | |
def posdec(x): | |
if isinstance(x, Integer) and x > 0: | |
yield x - 1 | |
else: | |
yield x | |
def branch5(x): | |
if isinstance(x, Integer): | |
if 0 < x < 5: | |
yield x - 1 | |
elif 5 < x < 10: | |
yield x + 1 | |
elif x == 5: | |
yield x + 1 | |
yield x - 1 | |
else: | |
yield x | |
def test_zero_ints(): | |
expr = Basic(S(2), Basic(S(5), S(3)), S(8)) | |
expected = {Basic(S(0), Basic(S(0), S(0)), S(0))} | |
brl = canon(posdec) | |
assert set(brl(expr)) == expected | |
def test_split5(): | |
expr = Basic(S(2), Basic(S(5), S(3)), S(8)) | |
expected = { | |
Basic(S(0), Basic(S(0), S(0)), S(10)), | |
Basic(S(0), Basic(S(10), S(0)), S(10))} | |
brl = canon(branch5) | |
assert set(brl(expr)) == expected | |