def _finalize(self, cluster, *args, **kwargs): """ Finalize the DSE output: :: * Pow-->Mul. Convert integer powers in an expression to Muls, like a**2 => a*a. * Freezing. Make sure that subsequent SymPy operations applied to the expressions in ``cluster.exprs`` will not alter the effect of the DSE passes. """ exprs = [pow_to_mul(e) for e in cluster.exprs] return cluster.rebuild([freeze(e) for e in exprs])
def test_pow_to_mul(fa, fb, expr, expected): assert str(pow_to_mul(eval(expr))) == expected
def optimize_pows(cluster, *args): """ Convert integer powers into Muls, such as ``a**2 => a*a``. """ return cluster.rebuild(exprs=[pow_to_mul(e) for e in cluster.exprs])
def test_pow_to_mul(expr, expected): grid = Grid((4, 5)) x, y = grid.dimensions fa = Function(name='fa', grid=grid, dimensions=(x, ), shape=(4, )) # noqa fb = Function(name='fb', grid=grid, dimensions=(x, ), shape=(4, )) # noqa assert str(pow_to_mul(eval(expr))) == expected