This patch enables the following expansion in replacePowWithSqrt:
pow(x, -0.5) to (x == -infinity ? +0.0 : fabs(1/sqrt(x)))
I am not entirely sure about handling x == +-0.0, as it seems like different
implementations treat it differently. E.g. on Linux
If x is +0 or -0, and y is less than 0 and not an odd integer, a pole error occurs and +HUGE_VAL, +HUGE_VALF, or +HUGE_VALL, is returned.
On MacOS
pow(+-0, y) returns +infinity and raises the "divide-by-zero" floating-point exception for y < 0 and not an odd integer.
So on MacOS we should do the right thing and return +infinity for both
+0 and -0, but on Linux we should actually return +HUGE_VAL.
This one and the line below could be shared with the else clause.