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()
:
Note:
The run-time libraries mask all floating-point exceptions by default.
When floating point exceptions are enabled, you can use signal()
or SEH (Structured Exception Handling) to catch them.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With