¿Por qué los infinitos de coma flotante, a diferencia de los NaN, son iguales?

¿Por qué la comparación infinita no sigue la lógica aplicada a los NaN? Este código se imprimefalse tres veces:

double a = Double.NaN;
double b = Double.NaN;
System.out.println(a == b); // false
System.out.println(a < b); //  false
System.out.println(a > b); //  false

Sin embargo, si cambioDouble.NaN&nbsp;aDouble.POSITIVE_INFINITY, Yo obtengotrue&nbsp;por la igualdad, perofalse&nbsp;para las comparaciones mayor que y menor que:

double a = Double.POSITIVE_INFINITY;
double b = Double.POSITIVE_INFINITY;
System.out.println(a == b); // true
System.out.println(a < b); //  false
System.out.println(a > b); //  false

Esto parece peligroso. Suponiendo que los valores infinitos resultan de desbordamientos, imagino que es más probable que dos variables que terminaron como infinitos no sean iguales en aritmética perfecta.