Search code examples
pythonsympysymbolic-math

Simplify nested exponentials and logs with sympy


How can I get sympy to simplify an expression like log(exp(exp(x))) to exp(x)? It seems to work on simpler expressions like exp(log(x)) => x. This is a minimal example showing what I've tried so far:

import sympy
from sympy import exp, log

x = sympy.symbols('x')

a = exp(log(x))
print a

# Gives `x` automatically, no call to simplify needed

b = log(exp(exp(x)))
print sympy.simplify(b), sympy.powsimp(b,deep=True)

# Gives `log(exp(exp(x)))` back, expected `exp(x)`

Solution

  • This is happening because of lack of information. I think you want to do this:

    In [7]: x = Symbol('x', real=True)
    
    In [8]: (log(exp(exp(x)))).simplify()
    Out[8]: exp(x)