Suponiendo IEEE-754 de coma flotante:
a >= b
siempre es equivalente a b <= a
*
a >= b
es equivalente a !(a < b)
, a menos que uno o ambos de a
o b
es NaN..
a == b
siempre es equivalente a b == a
. *
a == b
es equivalente a !(a != b)
, a menos que uno o ambos de a
o b
es NaN.
De manera más general: tricotomía no se mantiene para los números de punto flotante. En lugar de ello, una propiedad relacionada sostiene [IEEE-754 (1985) §5.7]:
Cuatro relaciones mutuamente exclusivos son posibles: menor que, igual, mayor que, y no ordenada. El último caso surge cuando al menos un operando es NaN. Cada NaN debe comparar desordenado con todo, incluido él mismo.
Tenga en cuenta que esto no es realmente una "anomalía" tanto como consecuencia de la ampliación de la aritmética que ser cerrado de manera que los intentos de mantener la coherencia con la aritmética real cuando sea posible.
[*] true en aritmética abstracta IEEE-754. En el uso real, algunos compiladores pueden hacer que esto se viole en casos raros como resultado de hacer cálculos con precisión extendida (MSVC, te estoy mirando). Ahora que la mayoría del cálculo de coma flotante en la arquitectura Intel se realiza en SSE en lugar de x87, esto es menos preocupante (y siempre fue un error desde el punto de vista de IEEE-754, de todos modos).
Agregué un segundo párrafo para aclarar mi pregunta. Según la respuesta aceptada, parecería que son "simétricos" pero no "negables" debido a los NaN. – mwfearnley