After looking at another question on SO (Using NaN in C++) I became curious about std::numeric_limits<double>::signaling_NaN().
I could not get signaling_NaN to throw an exception. I thought perhaps by signaling it really meant a signal so I tried catching SIGFPE but nope…
Here is my code:
double my_nan = numeric_limits<double>::signaling_NaN(); my_nan++; my_nan += 5; my_nan = my_nan / 10; my_nan = 15 / my_nan; cout << my_nan << endl;
numeric_limits<double>::has_signaling_NaN evaluates to true, so it is implemented on my system.
Any ideas?
I am using ms visual studio .net 2003’s C++ compiler. I want to test it on another when I get home.
Thanks!
You can use the
_control87()function to enable floating-point exceptions. From the MSDN documentation on_control87():When floating point exceptions are enabled, you can use
signal()or SEH (Structured Exception Handling) to catch them.