def test_unpack_binops(self): def fn(a, b): _hm_generated_2 = a + b _hm_generated_1 = a / _hm_generated_2 _hm_generated_0 = _hm_generated_1 * b return _hm_generated_0 expected = get_ast(fn) def fn(a, b): return a / (a + b) * b result = UnpackBinOps().visit(get_ast(fn)) self.assertEqual(ast.dump(expected), ast.dump(result))
def test_convert_arrayops(self): def fn(a, b): _hm_generated_2 = ArrayAdd(a, b) _hm_generated_1 = ArrayDiv(a, _hm_generated_2) _hm_generated_0 = ArrayMul(_hm_generated_1, b) return _hm_generated_0 expected = get_ast(fn) def fn(a, b): return a / (a + b) * b symbol_table = {'a': self.a, 'b': self.b} symbol_table.update(globals()) unpacked = UnpackBinOps().visit(get_ast(fn)) result = ReplaceArrayOps(symbol_table).visit(unpacked) self.assertEqual(ast.dump(expected), ast.dump(result))
def test_convert_arrayops(self): def fn(a, b): _hm_generated_2 = ArrayAdd(a, b) _hm_generated_1 = ArrayDiv(a, _hm_generated_2) _hm_generated_0 = ArrayMul(_hm_generated_1, b) return _hm_generated_0 expected = get_ast(fn) def fn(a, b): return a / (a + b) * b symbol_table = { 'a': self.a, 'b': self.b } symbol_table.update(globals()) unpacked = UnpackBinOps().visit(get_ast(fn)) result = ReplaceArrayOps(symbol_table).visit(unpacked) self.assertEqual(ast.dump(expected), ast.dump(result))