Exemple #1
0
def test_setattr():
	sym = Symbol()
	sym.foo = 5
	expr = "symbol.foo = 5"
	p_expr = ast.parse(expr, mode='exec')
	c_expr = compile(ast.fix_missing_locations(p_expr), '', 'exec')
	c_sym = compile_sym(sym)
	assert ast.dump(p_expr) == ast.dump(ast.Module([sym_getattr(sym_getattr(sym, "prior")[0], "ast")]))
Exemple #2
0
 def __neg__(self):
     if len(self.expr) == 2 and self.expr[0] in ('+', '-'):
         if self.expr[0] == '+':
             self.expr = tuple(['-', Symbol(('-', self.expr[1]))])
         elif self.expr[0] == '-':
             self.expr = tuple(['+', Symbol(('-', self.expr[1]))])
     elif len(self.expr) == 3 and self.expr[0] in ('+', '-'):
         if self.expr[0] == '+':
             self.expr = tuple(
                 ['-', Symbol(('-', self.expr[1]), self.expr[2])])
         elif self.expr[0] == '-':
             self.expr = tuple(
                 ['+', Symbol(('-', self.expr[1]), self.expr[2])])
     return self
Exemple #3
0
 def __rpow__(self, obj):
     if len(self.expr) in (2, 3) and self.expr[0] in ('+', '-', '*', '/',
                                                      '**'):
         self.setBracket()
     if isinstance(obj, Symbol) and len(
             obj.expr) in (2, 3) and obj.expr[0] in ('+', '-', '*', '/',
                                                     '**'):
         obj.setBracket()
     return Symbol(('**', obj, self))
Exemple #4
0
 def __rdiv__(self, obj):
     if isinstance(obj, Symbol) and self.expr == obj.expr:
         return 1.0
     if isinstance(obj, (float, int)) and self.expr == obj:
         return 1.0
     if len(self.expr) in (2, 3) and self.expr[0] in ('+', '-', '*', '/'):
         self.setBracket()
     if isinstance(obj, Symbol) and len(
             obj.expr) in (2, 3) and obj.expr[0] in ('+', '-'):
         obj.setBracket()
     return Symbol(('/', obj, self))
Exemple #5
0
 def __rmul__(self, obj):
     if isinstance(obj, (float, int)) and obj == 1.0:
         return self
     if isinstance(obj, (float, int)) and obj == 0.0:
         return 0.0
     if len(self.expr) in (2, 3) and self.expr[0] in ('+', '-'):
         self.setBracket()
     if isinstance(obj, Symbol) and len(
             obj.expr) in (2, 3) and obj.expr[0] in ('+', '-'):
         obj.setBracket()
     return Symbol(('*', obj, self))
Exemple #6
0
    def _convert_symbolserver_match(self, instruction_addr, symbolserver_match, obj):
        """Symbolizes a frame with system symbols only."""
        if symbolserver_match is None:
            return []

        symbol = symbolserver_match['symbol']
        if symbol[:1] == '_':
            symbol = symbol[1:]

        return [
            self._process_frame(Symbol(
                sym_addr=parse_addr(symbolserver_match['addr']),
                instr_addr=parse_addr(instruction_addr),
                line=None,
                symbol=symbol,
            ), obj, package=symbolserver_match['object_name'])
        ]
Exemple #7
0
    def test(expr, i):

        from symbolic import Symbol

        x = Symbol('x')
        y = Symbol('y')
        z = Symbol('z')
        try:
            f1 = eval(expr)
            x1 = random()
            y1 = random()
            z1 = random()
            x, y, z = x1, y1, z1
            res1 = eval(str(f1))
        except:
            res1 = None

        from sympy import Symbol

        x = Symbol('x')
        y = Symbol('y')
        z = Symbol('z')
        try:
            f2 = eval(expr)
            x, y, z = x1, y1, z1
            res2 = eval(str(f2))
        except:
            res2 = None

        if res1 <> res2 and res1 <> None and res2 <> None and res2 <> 0 and abs(
                res1 - res2) > 1e-6 * abs(res2):
            print expr
            print f1
            print res1
            print f2
            print res2
            raise Exception()
Exemple #8
0
 def __rsub__(self, obj):
     if len(self.expr) in (2, 3) and self.expr[0] in ('+', '-'):
         self.setBracket()
     return Symbol(('-', obj, self))
Exemple #9
0
 def __sub__(self, obj):
     if isinstance(obj, Symbol) and len(
             obj.expr) in (2, 3) and obj.expr[0] in ('+', '-'):
         obj.setBracket()
     return Symbol(('-', self, obj))
Exemple #10
0
 def __radd__(self, obj):
     return Symbol(('+', obj, self))
Exemple #11
0
def log(obj):
    if isinstance(obj, Symbol):
        return Symbol('log({a})'.format(a=obj))
    return math.atan(obj)
Exemple #12
0
 def __add__(self, obj):
     if isinstance(obj, Symbol) and self.expr == obj.expr:
         return Symbol(('*', 2.0, self))
     return Symbol(('+', self, obj))
Exemple #13
0
def exp(obj):
    if isinstance(obj, Symbol):
        return Symbol('exp({a})'.format(a=obj))
    return math.exp(obj)
Exemple #14
0
def tan(obj):
    if isinstance(obj, Symbol):
        return Symbol('tan({a})'.format(a=obj))
    return math.tan(obj)
Exemple #15
0
def cos(obj):
    if isinstance(obj, Symbol):
        return Symbol('cos({a})'.format(a=obj))
    return math.cos(obj)
Exemple #16
0
def sqrt(obj):
    if isinstance(obj, Symbol):
        return Symbol('sqrt({a})'.format(a=obj))
    return math.sqrt(obj)