See:
http://spanky.triumf.ca/www/fractint/append_a_misc.htmlJust find the section on trig identities.
To calculate a fractional or fully complex power e.g. a^b then use exp(b*log(a)).
This method is clear and straightforward for complex numbers and standard hypercomplex (bicomplex) numbers but is a little woolly when it comes to quaternions or other number forms that are not commutative since then: exp(b*log(a)) is not necessarily the same as exp(log(a)*b).
(Of course here I'm using "exp" so "log" here is the natural log)
Edit: Of course the above is the complete general method, in fact for a real power for (x+i*y)^p I think one can use:
m = (x*x + y*y)^(p/2)
a = p*atan(y/x)
x = m*cos(a)
y = m*sin(a)
which is essentially just a simplification of the method you posted.