I'm going with a solution that
- uses `compare_uint`,
- ensures the things that should *definitively* return false *will* return false (e.g. 2 vs -2), and
- other results stay the same as before (in the 0.0/-0.0/subnormal range), even if of dubious value.
I think Henri is right, though; we don't want positive and negative denormals to compare as equal.