... And as for sqrt(-0.0) returning -0.0... Grr. I've never understood the motivation for that one, especially as it disagrees with the usual recommendations for complex square root (where the real part of the result *always* has its sign bit cleared).
The only rationale I've seen for this is in Kahan's obscure paper "Branch Cuts for Complex Elementary Functions or Much Ado About Nothing's Sign Bit". Hard to find. Here's a mostly readable scan:
In part it's to preserve various identities, such as that sqrt(conjugate(z)) is the same as conjugate(sqrt(z)). When z is +0, that becomes
sqrt(conjugate(+0)) same_as conjugate(sqrt(+0))
sqrt(-0) same_as conjugate(+0)
sqrt(-0) same as -0
Conviced? LOL. There are others in the paper ;-)