Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!ogicse!decwrl!shelby!portia!hines From: hines@portia.Stanford.EDU (Melissa Hines) Newsgroups: comp.sys.mac Subject: Testing for NaN in Think C (help!) Message-ID: <10538@portia.Stanford.EDU> Date: 26 Mar 90 19:40:07 GMT Sender: Melissa Hines Reply-To: hines@portia.Stanford.EDU (Melissa Hines) Organization: Stanford University Lines: 29 I've got a quick Think C question: How do you test for NaN (Not A Number) in Think C? It is very easy to generate NaN: float Nan; NaN = 0.0/0.0; It is not as easy to test for it however. For example, the following does not work: float test,NaN; NaN = 0.0/0.0; if (test == NaN) ; else ; /* I always break to this loop, not the one above regardless of what I set test to. */ The following does work, but is pretty ugly: if((test/test != 1) && (test != 0)) ; /* Here if NaN */ else ; /* Here otherwise */ Is there a simpler/ more elegant way of doing this? I think part of the problem is that the IEEE have decreed that the result of any operation on a NaN is a Nan. Also, I think Think C may have more than one type of NaN. I couldn't care less about the type, I just want to know if it is a NaN. Thanks for your help! Melissa Hines Dept. of Chemistry Stanford Univ. Hines@Portia.Stanford.Edu Hines@Cellbio.Stanford.Edu