def __init__(self, constant_mapper=repr, reverse=True, cse_prefix="_cse", complex_constant_base_type="double", cse_name_list=[]): SimplifyingSortingStringifyMapper.__init__(self, constant_mapper, reverse) self.cse_prefix = cse_prefix self.cse_to_name = dict((cse, name) for name, cse in cse_name_list) self.cse_names = set(cse for name, cse in cse_name_list) self.cse_name_list = cse_name_list[:] self.complex_constant_base_type = complex_constant_base_type
def __init__(self, constant_mapper=repr, reverse=True, cse_prefix="_cse", complex_constant_base_type="double", cse_name_list=[]): SimplifyingSortingStringifyMapper.__init__(self, constant_mapper, reverse) self.cse_prefix = cse_prefix self.cse_to_name = dict((cse, name) for name, cse in cse_name_list) self.cse_names = set(cse for name, cse in cse_name_list) self.cse_name_list = cse_name_list[:] self.complex_constant_base_type = complex_constant_base_type
def map_constant(self, x, enclosing_prec): if isinstance(x, complex): return "std::complex<%s>(%s, %s)" % ( self.complex_constant_base_type, self.constant_mapper( x.real), self.constant_mapper(x.imag)) else: return SimplifyingSortingStringifyMapper.map_constant( self, x, enclosing_prec)
def map_constant(self, x, enclosing_prec): if isinstance(x, complex): return "std::complex<%s>(%s, %s)" % ( self.complex_constant_base_type, self.constant_mapper(x.real), self.constant_mapper(x.imag)) else: return SimplifyingSortingStringifyMapper.map_constant( self, x, enclosing_prec)
def simplify(expr): "Simplify pymbolic expr via SymPy." # TODO switch entirely to SymPy? parts = SimplifyingSortingStringifyMapper()(expr) simplified = parse_expr(parts).simplify() return parse(repr(simplified))