#include #include void properties(double x) { std::cout << std::isnormal(x) << '\t' << std::isfinite(x) << '\t' << std::isinf(x) << '\t' << std::isnan(x) << '\t' << !std::isunordered(x,x) << '\t' << std::signbit(x) << '\t' << x << '\n'; } int main() { std::cout << std::boolalpha << "normal\tfinite\tinf\tNaN\tordered\tsignbit\tx\n\n"; properties(0.0); properties(1.0); properties(1.0/0.0); properties(0.0/0.0); properties(-0.0); properties(-1.0); properties(-1.0/0.0); properties(-0.0/0.0); properties(HUGE_VAL); properties(INFINITY); properties(NAN); }