On Wed, Mar 24, 2010 at 7:31 PM, Mark Dickinson firstname.lastname@example.org wrote:
What if the two nans have different payloads or signs?
They are still equal. Just as 0.0 and -0.0 are now.
Interestingly, Java departs from IEEE 754 on that last point as well:
""" Note that in most cases, for two instances of class Double, d1 and d2, the value of d1.equals(d2) is true if and only if
d1.doubleValue() == d2.doubleValue()
also has the value true. However, there are two exceptions:
If d1 and d2 both represent Double.NaN, then the equals method returns true, even though Double.NaN==Double.NaN has the value false. If d1 represents +0.0 while d2 represents -0.0, or vice versa, the equal test has the value false, even though +0.0==-0.0 has the value true. This allows hashtables to operate properly. """ http://java.sun.com/j2se/1.3/docs/api/java/lang/Double.html