If we really wanted to do this The Right Way, there would be seven cases to be considered, best expressed as three flags. I'll call them CAN_BE_LESS, CAN_BE_EQUAL and CAN_BE_MORE.
Comparing a vs. a+1 would yield CAN_BE_LESS for integers and
CAN_BE_LESS | CAN_BE_EQUAL for floats.
Comparing 3 vs. 4 would yield CAN_BE_LESS.
Comparing a vs. 5 would yield CAN_BE_LESS | CAN_BE_EQUAL | CAN_BE_MORE.
Comparing NaN against anything would yield 0.
And so on...
Thomas
