#include int IsNaN(double x) { int rc; /* The value return */ volatile double y = x; volatile double z = y; rc = (y != z); return rc; } int main() { double tests[] = {1.0, 3.333, 1.0 / 0.0, 0.0 / 0.0, -1.0 / 0.0, -0, 0, -123123123, 12.0E200}; for (int i = 0; i < sizeof(tests) / sizeof(double); i++) printf("%d - %f - %d\n", i, tests[i], IsNaN(tests[i])); }