1#ifndef SIGNAL_SUPPRESS 2#include <signal.h> 3#endif 4 5float fnan = 1.0f/0.0f - 1.0f/0.0f; 6float x = 1.0f; 7 8void leave () 9{ 10 exit (0); 11} 12 13main () 14{ 15#if ! defined (__vax__) && ! defined (_CRAY) 16 /* Move this line earlier, for architectures (like alpha) that issue 17 SIGFPE on the first comparisons. */ 18#ifndef SIGNAL_SUPPRESS 19 /* Some machines catches a SIGFPE when a NaN is compared. 20 Let this test succeed o such machines. */ 21 signal (SIGFPE, leave); 22#endif 23 /* NaN is an IEEE unordered operand. All these test should be false. */ 24 if (fnan == fnan) 25 abort (); 26 if (fnan != x) 27 x = 1.0; 28 else 29 abort (); 30 31 if (fnan < x) 32 abort (); 33 if (fnan > x) 34 abort (); 35 if (fnan <= x) 36 abort (); 37 if (fnan >= x) 38 abort (); 39 if (fnan == x) 40 abort (); 41#endif 42 exit (0); 43} 44