Why is double.NaN not equal to itself?

.net, c#

Solution

If you are curious, this is what `Double.IsNaN` looks like:

public static bool IsNaN(double d)
{
    return (d != d);
}

Funky, huh?

Problem

Can someone explain this to me? In C# double.NaN is not equal to double.NaN ``` bool huh = double.NaN == double.NaN; // huh = false bool huh2 = double.NaN >= 0; // huh2 = false bool huh3 = double.NaN <= 0; // huh3 = false ``` What constant can I compare to a double.NaN and get true?

Original source