Browse Source

Fixed merge

Christophe Riccio 12 years ago
parent
commit
e3da5f952c
3 changed files with 28 additions and 25 deletions
  1. 14 9
      glm/gtx/multiple.inl
  2. 2 2
      test/core/core_type_cast.cpp
  3. 12 14
      test/gtx/gtx_multiple.cpp

+ 14 - 9
glm/gtx/multiple.inl

@@ -22,13 +22,13 @@ namespace glm
 		genType const & Multiple
 	)
 	{
-		assert(genType(0) <= Multiple);
-	
-		genType SourceSign = sign(Source);
-		genType SourceAbs = abs(Source);
-	
-		genType Tmp = SourceAbs % Multiple;
-		return (Tmp ? SourceAbs + Multiple - Tmp : SourceAbs) * SourceSign;
+		if (Source > genType(0))
+		{
+			genType Tmp = Source - genType(1);
+			return Tmp + (Multiple - (Tmp % Multiple));
+		}
+		else
+			return Source + (-Source % Multiple);
 	}
 
 	template <>
@@ -95,8 +95,13 @@ namespace glm
 		genType const & Multiple
 	)
 	{
-		genType Tmp = Source % Multiple;
-		return Tmp ? Source - Tmp : Source;
+		if (Source >= 0)
+			return Source - Source % Multiple;
+		else
+		{
+			genType Tmp = Source + 1;
+			return Tmp - Tmp % Multiple - Multiple;
+		}
 	}
 
 	template <>

+ 2 - 2
test/core/core_type_cast.cpp

@@ -27,8 +27,8 @@ int test_vec2_cast()
 	glm::mediump_vec2 G = static_cast<glm::mediump_vec2>(A);
 	glm::highp_vec2 H = static_cast<glm::highp_vec2>(A);
 	
-	my_vec2 I;
-	glm::vec2 J = static_cast<glm::vec2>(I);
+	//my_vec2 I;
+	//glm::vec2 J = static_cast<glm::vec2>(I);
 
 	int Error(0);
 	

+ 12 - 14
test/gtx/gtx_multiple.cpp

@@ -14,16 +14,11 @@ int test_higher()
 {
 	int Error(0);
 
-	int Higher0 = glm::higherMultiple(-5, 4);
-	Error += Higher0 == -8 ? 0 : 1;
-	int Higher1 = glm::higherMultiple(-4, 4);
-	Error += Higher1 == -4 ? 0 : 1;
-	int Higher2 = glm::higherMultiple(-3, 4);
-	Error += Higher2 == -4 ? 0 : 1;
-	int Higher3 = glm::higherMultiple(-2, 4);
-	Error += Higher3 == -4 ? 0 : 1;
-	int Higher4 = glm::higherMultiple(-1, 4);
-	Error += Higher4 == -4 ? 0 : 1;
+	Error += glm::higherMultiple(-5, 4) == -4 ? 0 : 1;
+	Error += glm::higherMultiple(-4, 4) == -4 ? 0 : 1;
+	Error += glm::higherMultiple(-3, 4) == 0 ? 0 : 1;
+	Error += glm::higherMultiple(-2, 4) == 0 ? 0 : 1;
+	Error += glm::higherMultiple(-1, 4) == 0 ? 0 : 1;
 	Error += glm::higherMultiple(0, 4) == 0 ? 0 : 1;
 	Error += glm::higherMultiple(1, 4) == 4 ? 0 : 1;
 	Error += glm::higherMultiple(2, 4) == 4 ? 0 : 1;
@@ -42,12 +37,15 @@ int test_Lower()
 {
 	int Error(0);
 
-	Error += glm::lowerMultiple(-5, 4) == -4 ? 0 : 1;
+	Error += glm::lowerMultiple(-5, 4) == -8 ? 0 : 1;
 	Error += glm::lowerMultiple(-4, 4) == -4 ? 0 : 1;
-	Error += glm::lowerMultiple(-3, 4) == 0 ? 0 : 1;
-	Error += glm::lowerMultiple(-2, 4) == 0 ? 0 : 1;
-	Error += glm::lowerMultiple(-1, 4) == 0 ? 0 : 1;
+	Error += glm::lowerMultiple(-3, 4) == -4 ? 0 : 1;
+	Error += glm::lowerMultiple(-2, 4) == -4 ? 0 : 1;
+	Error += glm::lowerMultiple(-1, 4) == -4 ? 0 : 1;
 	Error += glm::lowerMultiple(0, 4) == 0 ? 0 : 1;
+	Error += glm::lowerMultiple(1, 4) == 0 ? 0 : 1;
+	Error += glm::lowerMultiple(2, 4) == 0 ? 0 : 1;
+	Error += glm::lowerMultiple(3, 4) == 0 ? 0 : 1;
 	Error += glm::lowerMultiple(4, 4) == 4 ? 0 : 1;
 	Error += glm::lowerMultiple(5, 4) == 4 ? 0 : 1;
 	Error += glm::lowerMultiple(6, 4) == 4 ? 0 : 1;