"Equality for floating point types is more complicated. -0 and +0 compare as equal. If either or both operands are NAN, then both the == and != comparisons return false. Otherwise, the bit patterns are compared for equality." The second line should read: If either or both operands are NAN, then == will return false and != will return true.