|  |  |  | @ -31,6 +31,7 @@ | 
			
		
	
		
			
				
					|  |  |  |  | #include <glm/gtc/round.hpp> | 
			
		
	
		
			
				
					|  |  |  |  | #include <glm/gtc/type_precision.hpp> | 
			
		
	
		
			
				
					|  |  |  |  | #include <glm/gtc/vec1.hpp> | 
			
		
	
		
			
				
					|  |  |  |  | #include <glm/gtc/epsilon.hpp> | 
			
		
	
		
			
				
					|  |  |  |  | #include <vector> | 
			
		
	
		
			
				
					|  |  |  |  | #include <ctime> | 
			
		
	
		
			
				
					|  |  |  |  | #include <cstdio> | 
			
		
	
	
		
			
				
					|  |  |  | @ -293,6 +294,86 @@ namespace ceilPowerOfTwo | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | }//namespace ceilPowerOfTwo
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | namespace floorMultiple | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  | 	template <typename genType> | 
			
		
	
		
			
				
					|  |  |  |  | 	struct type | 
			
		
	
		
			
				
					|  |  |  |  | 	{ | 
			
		
	
		
			
				
					|  |  |  |  | 		genType		Source; | 
			
		
	
		
			
				
					|  |  |  |  | 		genType		Multiple; | 
			
		
	
		
			
				
					|  |  |  |  | 		genType		Return; | 
			
		
	
		
			
				
					|  |  |  |  | 		genType		Epsilon; | 
			
		
	
		
			
				
					|  |  |  |  | 	}; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	int test_float() | 
			
		
	
		
			
				
					|  |  |  |  | 	{ | 
			
		
	
		
			
				
					|  |  |  |  | 		type<glm::float64> const Data[] = 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		{ | 
			
		
	
		
			
				
					|  |  |  |  | 			{3.4, 0.3, 3.3, 0.0001}, | 
			
		
	
		
			
				
					|  |  |  |  | 			{-1.4, 0.3, -1.5, 0.0001}, | 
			
		
	
		
			
				
					|  |  |  |  | 		}; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		int Error(0); | 
			
		
	
		
			
				
					|  |  |  |  | 		
 | 
			
		
	
		
			
				
					|  |  |  |  | 		for(std::size_t i = 0, n = sizeof(Data) / sizeof(type<glm::float64>); i < n; ++i) | 
			
		
	
		
			
				
					|  |  |  |  | 		{ | 
			
		
	
		
			
				
					|  |  |  |  | 			glm::float64 Result = glm::floorMultiple(Data[i].Source, Data[i].Multiple); | 
			
		
	
		
			
				
					|  |  |  |  | 			Error += glm::epsilonEqual(Data[i].Return, Result, Data[i].Epsilon) ? 0 : 1; | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		return Error; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	int test() | 
			
		
	
		
			
				
					|  |  |  |  | 	{ | 
			
		
	
		
			
				
					|  |  |  |  | 		int Error(0); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		Error += test_float(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		return Error; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | }//namespace floorMultiple
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | namespace ceilMultiple | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  | 	template <typename genType> | 
			
		
	
		
			
				
					|  |  |  |  | 	struct type | 
			
		
	
		
			
				
					|  |  |  |  | 	{ | 
			
		
	
		
			
				
					|  |  |  |  | 		genType		Source; | 
			
		
	
		
			
				
					|  |  |  |  | 		genType		Multiple; | 
			
		
	
		
			
				
					|  |  |  |  | 		genType		Return; | 
			
		
	
		
			
				
					|  |  |  |  | 		genType		Epsilon; | 
			
		
	
		
			
				
					|  |  |  |  | 	}; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	int test_float() | 
			
		
	
		
			
				
					|  |  |  |  | 	{ | 
			
		
	
		
			
				
					|  |  |  |  | 		type<glm::float64> const Data[] = 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		{ | 
			
		
	
		
			
				
					|  |  |  |  | 			{3.4, 0.3, 3.6, 0.0001}, | 
			
		
	
		
			
				
					|  |  |  |  | 			{-1.4, 0.3, -1.2, 0.0001}, | 
			
		
	
		
			
				
					|  |  |  |  | 		}; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		int Error(0); | 
			
		
	
		
			
				
					|  |  |  |  | 		
 | 
			
		
	
		
			
				
					|  |  |  |  | 		for(std::size_t i = 0, n = sizeof(Data) / sizeof(type<glm::float64>); i < n; ++i) | 
			
		
	
		
			
				
					|  |  |  |  | 		{ | 
			
		
	
		
			
				
					|  |  |  |  | 			glm::float64 Result = glm::ceilMultiple(Data[i].Source, Data[i].Multiple); | 
			
		
	
		
			
				
					|  |  |  |  | 			Error += glm::epsilonEqual(Data[i].Return, Result, Data[i].Epsilon) ? 0 : 1; | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		return Error; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	int test() | 
			
		
	
		
			
				
					|  |  |  |  | 	{ | 
			
		
	
		
			
				
					|  |  |  |  | 		int Error(0); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		Error += test_float(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		return Error; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | }//namespace ceilMultiple
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | int main() | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  | 	int Error(0); | 
			
		
	
	
		
			
				
					|  |  |  | @ -304,5 +385,8 @@ int main() | 
			
		
	
		
			
				
					|  |  |  |  | 		Error += ceilPowerOfTwo::perf(); | 
			
		
	
		
			
				
					|  |  |  |  | #	endif//NDEBUG
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	Error += floorMultiple::test(); | 
			
		
	
		
			
				
					|  |  |  |  | 	Error += ceilMultiple::test(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	return Error; | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
	
		
			
				
					|  |  |  | 
 |