I would say that the change to stop Real.real from being an equality type was not because testing against 0.0 is probably foolish, but because of the fact that IEEE equality is NOT reflexive. If z is NaN then z = z is false.