I would expect sympy.powsimp
to combine factors exp(subexprA)*exp(subexprB)
into exp(subexprA+subexprB)
in all cases. However, it fails to do so whenever either subexprA
or subexprB
are UnevaluatedExpr
s.
For example, when I try this:
import sympy
expr1 = sympy.sympify("exp(T)")
expr2 = sympy.UnevaluatedExpr(sympy.sympify("T"))
old_expr = expr1 * sympy.Pow(sympy.E, expr2)
simplified_expr = sympy.powsimp(old_expr)
print("old expr:", sympy.srepr(old_expr))
print("simplified expr:", sympy.srepr(simplified_expr))
It outputs:
old expr: Mul(exp(Symbol('T')), exp(UnevaluatedExpr(Symbol('T'))))
simplified expr: Mul(exp(Symbol('T')), exp(UnevaluatedExpr(Symbol('T'))))
But I would expect it to output this:
old expr: Mul(exp(Symbol('T')), exp(UnevaluatedExpr(Symbol('T'))))
simplified expr: Mul(exp(Add(Symbol('T')), UnevaluatedExpr(Symbol('T')))))