a<b or a>b or a=bfor any two ordinary numbers. But either a or b being a NaN means they are all false.
if (a>b) then x else y is NOT THE SAME as if (a<=b) then y else x
The kinds of branching and loop exits that are compiled must respect the NaN. Many, if not all, compiler books routinely suggest rearrangement of inequalities and Boolean conditions containing them, based on trichotomy. The tradition continues even today with new books that are in other respects authoritative.