Example #1
0
    def apply(self, expr, evaluation):
        'Variables[expr_]'

        variables = set()

        def find_vars(e):
            if e.to_sympy().is_constant():
                return
            elif e.is_symbol():
                variables.add(e)
            elif (e.has_form('Plus', None) or e.has_form('Times', None)):
                for l in e.leaves:
                    find_vars(l)
            elif e.has_form('Power', 2):
                (a, b) = e.leaves  # a^b
                if not (a.to_sympy().is_constant()) and b.to_sympy(
                ).is_rational:
                    find_vars(a)
            elif not (e.is_atom()):
                variables.add(e)

        exprs = expr.leaves if expr.has_form('List', None) else [expr]
        for e in exprs:
            find_vars(from_sympy(e.to_sympy().expand()))

        variables = Expression('List', *variables)
        variables.sort()  # MMA doesn't do this
        return variables
Example #2
0
    def apply(self, expr, evaluation):
        'Variables[expr_]'

        variables = set()

        def find_vars(e):
            if e.to_sympy().is_constant():
                return
            elif e.is_symbol():
                variables.add(e)
            elif (e.has_form('Plus', None) or
                  e.has_form('Times', None)):
                for l in e.leaves:
                    find_vars(l)
            elif e.has_form('Power', 2):
                (a, b) = e.leaves  # a^b
                if not(a.to_sympy().is_constant()) and b.to_sympy().is_rational:
                    find_vars(a)
            elif not(e.is_atom()):
                variables.add(e)

        exprs = expr.leaves if expr.has_form('List', None) else [expr]
        for e in exprs:
            find_vars(from_sympy(e.to_sympy().expand()))

        variables = Expression('List', *variables)
        variables.sort()        # MMA doesn't do this
        return variables
Example #3
0
    def apply(self, expr, evaluation):
        'Variables[expr_]'

        variables = set()

        def find_vars(e, e_sympy):
            assert e_sympy is not None
            if e_sympy.is_constant():
                return
            elif e.is_symbol():
                variables.add(e)
            elif (e.has_form('Plus', None) or e.has_form('Times', None)):
                for l in e.leaves:
                    l_sympy = l.to_sympy()
                    if l_sympy is not None:
                        find_vars(l, l_sympy)
            elif e.has_form('Power', 2):
                (a, b) = e.leaves  # a^b
                a_sympy, b_sympy = a.to_sympy(), b.to_sympy()
                if a_sympy is None or b_sympy is None:
                    return
                if not (a_sympy.is_constant()) and b_sympy.is_rational:
                    find_vars(a, a_sympy)
            elif not (e.is_atom()):
                variables.add(e)

        exprs = expr.leaves if expr.has_form('List', None) else [expr]
        for e in exprs:
            e_sympy = e.to_sympy()
            if e_sympy is not None:
                find_vars(e, e_sympy)

        variables = Expression('List', *variables)
        variables.sort()  # MMA doesn't do this
        return variables
Example #4
0
    def apply(self, expr, evaluation):
        'Variables[expr_]'

        variables = find_all_vars(expr)
        
        variables = Expression('List', *variables)
        variables.sort()        # MMA doesn't do this
        return variables
Example #5
0
    def apply(self, expr, evaluation):
        'Variables[expr_]'

        variables = find_all_vars(expr)
        
        variables = Expression('List', *variables)
        variables.sort()        # MMA doesn't do this
        return variables
Example #6
0
    def apply(self, expr, evaluation):
        'Variables[expr_]'

        variables = set()

        def find_vars(e, e_sympy):
            assert e_sympy is not None
            if e_sympy.is_constant():
                return
            elif e.is_symbol():
                variables.add(e)
            elif (e.has_form('Plus', None) or
                  e.has_form('Times', None)):
                for l in e.leaves:
                    l_sympy = l.to_sympy()
                    if l_sympy is not None:
                        find_vars(l, l_sympy)
            elif e.has_form('Power', 2):
                (a, b) = e.leaves  # a^b
                a_sympy, b_sympy = a.to_sympy(), b.to_sympy()
                if a_sympy is None or b_sympy is None:
                    return
                if not(a_sympy.is_constant()) and b_sympy.is_rational:
                    find_vars(a, a_sympy)
            elif not(e.is_atom()):
                variables.add(e)

        exprs = expr.leaves if expr.has_form('List', None) else [expr]
        for e in exprs:
            e_sympy = e.to_sympy()
            if e_sympy is not None:
                find_vars(e, e_sympy)

        variables = Expression('List', *variables)
        variables.sort()        # MMA doesn't do this
        return variables