Merge pull request #80 from robert-ancell/0.9.4

Fix glm::higherMultiple and glm::lowerMultiple and assoicated test cases...
This commit is contained in:
Christophe Riccio 2013-05-06 06:16:35 -07:00
commit 86a5825fee
2 changed files with 29 additions and 13 deletions

View File

@ -22,8 +22,13 @@ namespace glm
genType const & Multiple genType const & Multiple
) )
{ {
genType Tmp = Source % Multiple; if (Source > 0)
return Tmp ? Source + Multiple - Tmp : Source; {
genType Tmp = Source - 1;
return Tmp + (Multiple - (Tmp % Multiple));
}
else
return Source + (-Source % Multiple);
} }
template <> template <>
@ -74,8 +79,13 @@ namespace glm
genType const & Multiple genType const & Multiple
) )
{ {
genType Tmp = Source % Multiple; if (Source >= 0)
return Tmp ? Source - Tmp : Source; return Source - Source % Multiple;
else
{
genType Tmp = Source + 1;
return Tmp - Tmp % Multiple - Multiple;
}
} }
template <> template <>

View File

@ -14,13 +14,16 @@ int test_higher()
{ {
int Error(0); int Error(0);
int Higher0 = glm::higherMultiple(-5, 4); Error += glm::higherMultiple(-5, 4) == -4 ? 0 : 1;
Error += Higher0 == -4 ? 0 : 1;
Error += glm::higherMultiple(-4, 4) == -4 ? 0 : 1; Error += glm::higherMultiple(-4, 4) == -4 ? 0 : 1;
Error += glm::higherMultiple(-3, 4) == -4 ? 0 : 1; Error += glm::higherMultiple(-3, 4) == 0 ? 0 : 1;
Error += glm::higherMultiple(-2, 4) == -4 ? 0 : 1; Error += glm::higherMultiple(-2, 4) == 0 ? 0 : 1;
Error += glm::higherMultiple(-1, 4) == -4 ? 0 : 1; Error += glm::higherMultiple(-1, 4) == 0 ? 0 : 1;
Error += glm::higherMultiple(0, 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;
Error += glm::higherMultiple(3, 4) == 4 ? 0 : 1;
Error += glm::higherMultiple(4, 4) == 4 ? 0 : 1; Error += glm::higherMultiple(4, 4) == 4 ? 0 : 1;
Error += glm::higherMultiple(5, 4) == 8 ? 0 : 1; Error += glm::higherMultiple(5, 4) == 8 ? 0 : 1;
Error += glm::higherMultiple(6, 4) == 8 ? 0 : 1; Error += glm::higherMultiple(6, 4) == 8 ? 0 : 1;
@ -35,12 +38,15 @@ int test_Lower()
{ {
int Error(0); 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(-4, 4) == -4 ? 0 : 1;
Error += glm::lowerMultiple(-3, 4) == 0 ? 0 : 1; Error += glm::lowerMultiple(-3, 4) == -4 ? 0 : 1;
Error += glm::lowerMultiple(-2, 4) == 0 ? 0 : 1; Error += glm::lowerMultiple(-2, 4) == -4 ? 0 : 1;
Error += glm::lowerMultiple(-1, 4) == 0 ? 0 : 1; Error += glm::lowerMultiple(-1, 4) == -4 ? 0 : 1;
Error += glm::lowerMultiple(0, 4) == 0 ? 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(4, 4) == 4 ? 0 : 1;
Error += glm::lowerMultiple(5, 4) == 4 ? 0 : 1; Error += glm::lowerMultiple(5, 4) == 4 ? 0 : 1;
Error += glm::lowerMultiple(6, 4) == 4 ? 0 : 1; Error += glm::lowerMultiple(6, 4) == 4 ? 0 : 1;