// the sane way to detect NaN is broken because of a compiler bug
// (works with constants but breaks when assigned to variables)
// use conversion to string instead
-
//float f = e;
//return (e != f);
- return ftos(e) == "-nan";
+
+ // Negative NaN ("-nan") is much more common but plain "nan" can be created by negating *some* -nans so we need to check both.
+ // DP's QCVM and GMQCC's QCVM behave differently - one needs ftos(-(0.0 / 0.0)), the other ftos(-sqrt(-1)).
+ string s = ftos(e);
+ return s == "nan" || s == "-nan";
}
bool isnormal(float e)
{