diff --git a/base/complex.jl b/base/complex.jl index b108c5c34d634..270143182b711 100644 --- a/base/complex.jl +++ b/base/complex.jl @@ -477,21 +477,19 @@ function ^{T<:Complex}(z::T, p::T) # apply some corrections to force known zeros if pim == 0 - ip = trunc(pr) - if ip == pr + if isinteger(pr) if zi == 0 im = copysign(zero(im), im) elseif zr == 0 - if isodd(ip) - re = copysign(zero(re), re) - else + if isinteger(0.5*pr) # pr is even im = copysign(zero(im), im) + else + re = copysign(zero(re), re) end end else dr = pr*2 - ip = trunc(dr) - if ip == dr && zi == 0 + if isinteger(dr) && zi == 0 if zr < 0 re = copysign(zero(re), re) else