Maybe using is_positive is better.

The description of Float._eval_power says that "expt is symbolic object but not equal to 0, 1"
Also, Pow._new_ says that "it's better to handle that in the calling routine".