nantst.c 705 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. float inf = 1.0f/0.0f;
  2. float nnn = 1.0f/0.0f - 1.0f/0.0f;
  3. float fin = 1.0f;
  4. float neg = -1.0f;
  5. float nn2;
  6. int isnanf(), isfinitef(), signbitf();
  7. void pvalue (char *str, float x)
  8. {
  9. union
  10. {
  11. float f;
  12. unsigned int i;
  13. }u;
  14. printf("%s ", str);
  15. u.f = x;
  16. printf("%08x\n", u.i);
  17. }
  18. int
  19. main()
  20. {
  21. if (!isnanf(nnn))
  22. abort();
  23. pvalue("nnn", nnn);
  24. pvalue("inf", inf);
  25. nn2 = inf - inf;
  26. pvalue("inf - inf", nn2);
  27. if (isnanf(fin))
  28. abort();
  29. if (isnanf(inf))
  30. abort();
  31. if (!isfinitef(fin))
  32. abort();
  33. if (isfinitef(nnn))
  34. abort();
  35. if (isfinitef(inf))
  36. abort();
  37. if (!signbitf(neg))
  38. abort();
  39. if (signbitf(fin))
  40. abort();
  41. if (signbitf(inf))
  42. abort();
  43. /*
  44. if (signbitf(nnn))
  45. abort();
  46. */
  47. exit (0);
  48. }