I think it is because of this reason: a^x = y ln(a^x) = ln(y) x.ln(a) = ln(y) e^(x.ln(a)) = y ln(a) is undefined for a <= 0 it should work for a,x,y are of type complex. I have done such a thing many years ago. It works also for -1 ^ 1/2 (which is the complex number "i" or "j") written as y.re=0 and y.im=1 . I am not sure if pow can be called as "complex y = pow( complex a, complex x )", if not, you need to overload it in some way. That's a challenge!! :) Wish it helps some. Michel