def _eval_power(b, e): # don't break up NC terms: (A*B)**3 != A**3*B**3, it is A*B*A*B*A*B cargs, nc = b.args_cnc(split_1=False) if e.is_Integer: return Mul(*[Pow(b, e, evaluate=False) for b in cargs]) * Pow(Mul._from_args(nc), e, evaluate=False) p = Pow(b, e, evaluate=False) if e.is_Rational or e.is_Float: return p._eval_expand_power_base() return p
def _eval_power(b, e): # don't break up NC terms: (A*B)**3 != A**3*B**3, it is A*B*A*B*A*B cargs, nc = b.args_cnc(split_1=False) if e.is_Integer: return Mul(*[Pow(b, e, evaluate=False) for b in cargs]) * \ Pow(Mul._from_args(nc), e, evaluate=False) p = Pow(b, e, evaluate=False) if e.is_Rational or e.is_Float: return p._eval_expand_power_base() return p