wip

clearly indicate what we are looking for in each section

For (b**e)**o

if o is an integer, then it becomes b**(e*o)

if e is real then b*(e*o)*exp(2*I*pi*o*floor(1/2-e*arg(b)/2/pi))

else in general, b*(e*o)*exp(2*I*pi*o*floor(1/2-im(e*log(b))/2/pi))

exp(2*I*pi*x) will be 1 if x is an integer; -1 if x is a half integer

So if the floor is 0 then o can be anything; if floor is not zero then
o must be a half integer. If we aren't sure what the floor is but we
know that its value is constant over the domain of e or b that's ok.