
Martin Bonner wrote:
----Original Message---- From: Johan RĂ¥de
template<class T> bool is_nan(T a) { return a != a; }
1. Do these implementations work an all platforms?
I believe is_nan is vunerable to over-eager optimizers for built-in types.
If implemented that way, then yes: only compilers in strict IEEE mode and probably with optimisations turned off will do the right thing. It won't work at all on platforms with non-IEEE arithmetic :-( Which I why I routed everything through fpclassify: try get it right once in one place and hopefully it doesn't turn into a maintenence problem :-) Of course if the platform has native floating point classification macros then these should be used: they're likely to be much more efficient than "generic" solutions. Unfortunately I found several platforms with native macros that didn't actually do the right thing in all cases during testing of that code :-( John.