C99 annex F (IEEE floating point support) says this:
pow(−∞, y)
returns +∞ for y > 0 and not an odd integer.
But, say, (−∞)0.5 actually has the imaginary values ±∞i, not +∞. C99’s own sqrt(−∞)
returns a NaN and generates a domain error as expected. Why then is pow
required to return +∞?
(Most other languages use the C library directly or, like Python in this case, copy the behaviour required of it by standards, so in practice this affects more than just C99.)