]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
comment NaN handling
authorMartin Taibr <taibr.martin@gmail.com>
Mon, 12 Nov 2018 22:27:46 +0000 (23:27 +0100)
committerMartin Taibr <taibr.martin@gmail.com>
Mon, 12 Nov 2018 22:27:46 +0000 (23:27 +0100)
qcsrc/lib/deglobalization.qh
qcsrc/lib/vector.qh

index 1097035bf77bff236f39d5267ea4e4b2d4f650a8..d9417b4895ae45b3b483cbdbad0d83ffe6c13415 100644 (file)
 #ifdef GAMEQC
 STATIC_INIT(globals) {
        // set to NaN to more easily detect uninitialized use
-    // TODO when all functions are wrapped and the raw functions are not used anymore,
-    // assert that the global vectors are NaN before calling the raw functions
-    // to make sure nobody (even builtins) is accidentally using them - NaN is the most likely value to expose remaining usages
+       // TODO when all functions are wrapped and the raw functions are not used anymore,
+       // assert that the global vectors are NaN before calling the raw functions
+       // to make sure nobody (even builtins) is accidentally using them - NaN is the most likely value to expose remaining usages
+
+       // TODO make sure `isnan` actually works - potential compiler bug:
+       //LOG_INFOF("%f\n", 0.0/0.0 == 0.0/0.0);
+       //LOG_INFOF("%f\n", 0.0/0.0 != 0.0/0.0);
+       //float x = 0.0/0.0;
+       //LOG_INFOF("%f\n", x == x);
+       //LOG_INFOF("%f\n", x != x);
+
        v_forward = VEC_NAN;
        v_right = VEC_NAN;
        v_up = VEC_NAN;
-       // FIXME check this is actually NaN
 }
 #endif
 
index eae8d4397c13d2ae0fa6f339318b11d60fd744ca..d49322efbd8a14389ca3afce4fe92e7f36857e1c 100644 (file)
@@ -109,6 +109,11 @@ noref vector _vec3;
 
 #define VEC_NAN vec3(FLOAT_NAN, FLOAT_NAN, FLOAT_NAN);
 
+ERASEABLE
+bool is_all_nans(vector v) {
+       return isnan(v.x) && isnan(v.y) && isnan(v.z);
+}
+
 ERASEABLE
 vector Rotate(vector v, float a)
 {