Floating-point numbers can take on two classes of exceptional values; infinity and NaN (not-a-number). These values are returned as the result of exceptional or otherwise unresolvable floating point operations. (See also: Prevent or detect domain and range errors in math functions). Failure to detect and handle such values can result in undefined behavior.
NaN values are particularly problematic, as the expression NaN==NaN (for every possible value of NaN) returns false. It is possible to test that a variable x is NaN by checking that (x==x) evaluates to false.
Programs should check to ensure that all input floating point values (especially those controlled by the user) do not have either of these values if doing so would be inappropriate.