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