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: \[<span style="color: #003366"><span style="text-decoration: underline; ">FLP32-C. Prevent or detect domain and range errors in math functions|</span></span>[https: //www.securecoding.cert.org/confluence/display/seccode/FLP32-C. + Prevent + or + detect + domain + and + range + errors + in + math + functions]\|[https://www.securecoding.cert.org/confluence/display/seccode/FLP32-C.+Prevent+or+detect+domain+and+range+errors+in+math+functions]\]). Additionally, they can be directly input by a user by scanf or similar functions. Failure to detect and handle such values can result in undefined behavior. Wiki Markup
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.
...