Browse Source

Rely on C++11 to implement isinf and isnan

Christophe Riccio 11 years ago
parent
commit
f916339ca7
2 changed files with 8 additions and 5 deletions
  1. 7 5
      glm/detail/func_common.inl
  2. 1 0
      readme.txt

+ 7 - 5
glm/detail/func_common.inl

@@ -713,7 +713,9 @@ namespace detail
 			std::numeric_limits<genType>::is_iec559,
 			std::numeric_limits<genType>::is_iec559,
 			"'isnan' only accept floating-point inputs");
 			"'isnan' only accept floating-point inputs");
 
 
-#		if(GLM_COMPILER & (GLM_COMPILER_VC | GLM_COMPILER_INTEL))
+#		if(GLM_LANG & GLM_LANG_CXX11_FLAG)
+			return std::isnan(x);
+#		elif(GLM_COMPILER & (GLM_COMPILER_VC | GLM_COMPILER_INTEL))
 			return _isnan(x) != 0;
 			return _isnan(x) != 0;
 #		elif(GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_CLANG))
 #		elif(GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_CLANG))
 #			if(GLM_PLATFORM & GLM_PLATFORM_ANDROID && __cplusplus < 201103L)
 #			if(GLM_PLATFORM & GLM_PLATFORM_ANDROID && __cplusplus < 201103L)
@@ -780,11 +782,11 @@ namespace detail
 	GLM_FUNC_QUALIFIER bool isinf(
 	GLM_FUNC_QUALIFIER bool isinf(
 		genType const & x)
 		genType const & x)
 	{
 	{
-		GLM_STATIC_ASSERT(
-			std::numeric_limits<genType>::is_iec559,
-			"'isinf' only accept floating-point inputs");
+		GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'isinf' only accept floating-point inputs");
 
 
-#		if(GLM_COMPILER & (GLM_COMPILER_INTEL | GLM_COMPILER_VC))
+#		if(GLM_LANG & GLM_LANG_CXX11_FLAG)
+			return std::isinf(x);
+#		elif(GLM_COMPILER & (GLM_COMPILER_INTEL | GLM_COMPILER_VC))
 			return _fpclass(x) == _FPCLASS_NINF || _fpclass(x) == _FPCLASS_PINF;
 			return _fpclass(x) == _FPCLASS_NINF || _fpclass(x) == _FPCLASS_PINF;
 #		elif(GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_CLANG))
 #		elif(GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_CLANG))
 #			if(GLM_PLATFORM & GLM_PLATFORM_ANDROID && __cplusplus < 201103L)
 #			if(GLM_PLATFORM & GLM_PLATFORM_ANDROID && __cplusplus < 201103L)

+ 1 - 0
readme.txt

@@ -43,6 +43,7 @@ GLM 0.9.5.5: 2014-XX-XX
 - Fixed missing value_type for dual quaternion
 - Fixed missing value_type for dual quaternion
 - Fixed return type of dual quaternion length
 - Fixed return type of dual quaternion length
 - Fixed infinite loop in isfinite function with GCC #221
 - Fixed infinite loop in isfinite function with GCC #221
+- Rely on C++11 to implement isinf and isnan
 
 
 ================================================================================
 ================================================================================
 GLM 0.9.5.4: 2014-06-21
 GLM 0.9.5.4: 2014-06-21