Browse Source

Update func_common.inl

plasmacel 11 years ago
parent
commit
7def337781
1 changed files with 3 additions and 10 deletions
  1. 3 10
      glm/detail/func_common.inl

+ 3 - 10
glm/detail/func_common.inl

@@ -151,22 +151,15 @@ namespace detail
 	}
 
 	// sign
-	//Try something like based on x >> 31 to get the sign bit
+	// fast and works for any type
 	template <typename genFIType> 
 	GLM_FUNC_QUALIFIER genFIType sign(genFIType x)
 	{
 		GLM_STATIC_ASSERT(
 			std::numeric_limits<genFIType>::is_iec559 ||
 			(std::numeric_limits<genFIType>::is_signed && std::numeric_limits<genFIType>::is_integer), "'sign' only accept signed inputs");
-
-		genFIType result;
-		if(x > genFIType(0))
-			result = genFIType(1);
-		else if(x < genFIType(0))
-			result = genFIType(-1);
-		else
-			result = genFIType(0);
-		return result;
+		
+		return genFIType(genFIType(0) < x) - (x < genFIType(0));
 	}
 
 	template <typename T, precision P, template <typename, precision> class vecType>