|  |  |  | @ -280,12 +280,14 @@ static int test_shearing() | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(1, 1, 1, 0), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(1, 1, 0, 1)); | 
			
		
	
		
			
				
					|  |  |  |  |         glm::mat4x4 const B4x4 = glm::shear(A4x4, center, l_x, l_y, l_z); | 
			
		
	
		
			
				
					|  |  |  |  |         glm::mat4x4 const C4x4 = glm::shear_slow(A4x4, center, l_x, l_y, l_z); | 
			
		
	
		
			
				
					|  |  |  |  |         glm::mat4x4 const expected( | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(0, 0, 1, 1), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(2, 1, 1, 0), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(3, 1, 1, 0), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(3, 1, 0, 1)); | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(0, 1, 3, 2), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(1, 1, 1, 0), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(1, 1, 0, 1)); | 
			
		
	
		
			
				
					|  |  |  |  |         Error += all(equal(B4x4, expected, epsilon<float>())) ? 0 : 1; | 
			
		
	
		
			
				
					|  |  |  |  |         Error += all(equal(C4x4, expected, epsilon<float>())) ? 0 : 1; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
	
		
			
				
					|  |  |  | @ -299,12 +301,14 @@ static int test_shearing() | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(1, 1, 1, 0), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(1, 0, 0, 0)); | 
			
		
	
		
			
				
					|  |  |  |  |         glm::mat4x4 const B4x4 = glm::shear(A4x4, center, l_x, l_y, l_z); | 
			
		
	
		
			
				
					|  |  |  |  |         glm::mat4x4 const C4x4 = glm::shear_slow(A4x4, center, l_x, l_y, l_z); | 
			
		
	
		
			
				
					|  |  |  |  |         glm::mat4x4 const expected( | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(0, 1, 1, 0), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(1, 2, 1, 0), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(2, 2, 2, 0), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(1, 0, 1, 0)); | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(1, 1, 2, 0), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(0, 1, 2, 0), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(1, 2, 2, 0), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(1, 0, 0, 0)); | 
			
		
	
		
			
				
					|  |  |  |  |         Error += all(equal(B4x4, expected, epsilon<float>())) ? 0 : 1; | 
			
		
	
		
			
				
					|  |  |  |  |         Error += all(equal(C4x4, expected, epsilon<float>())) ? 0 : 1; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
	
		
			
				
					|  |  |  | @ -314,12 +318,14 @@ static int test_shearing() | 
			
		
	
		
			
				
					|  |  |  |  |         glm::vec2 const l_z(4, 5); | 
			
		
	
		
			
				
					|  |  |  |  |         glm::mat4x4 const A4x4(1); | 
			
		
	
		
			
				
					|  |  |  |  |         glm::mat4x4 const B4x4 = glm::shear(A4x4, center, l_x, l_y, l_z); | 
			
		
	
		
			
				
					|  |  |  |  |         glm::mat4x4 const C4x4 = glm::shear_slow(A4x4, center, l_x, l_y, l_z); | 
			
		
	
		
			
				
					|  |  |  |  |         glm::mat4x4 const expected( | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(1, 3, 4, 0), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(1, 1, 5, 0), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(2, 1, 1, 0), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(-9, -8, -9, 1)); | 
			
		
	
		
			
				
					|  |  |  |  |         Error += all(equal(B4x4, expected, epsilon<float>())) ? 0 : 1; | 
			
		
	
		
			
				
					|  |  |  |  |         Error += all(equal(C4x4, expected, epsilon<float>())) ? 0 : 1; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
	
		
			
				
					|  |  |  | @ -333,12 +339,14 @@ static int test_shearing() | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(4, -8, 0, 0), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(7, 1, -2, 0)); | 
			
		
	
		
			
				
					|  |  |  |  |         glm::mat4x4 const B4x4 = glm::shear(A4x4, center, l_x, l_y, l_z); | 
			
		
	
		
			
				
					|  |  |  |  |         glm::mat4x4 const C4x4 = glm::shear_slow(A4x4, center, l_x, l_y, l_z); | 
			
		
	
		
			
				
					|  |  |  |  |         glm::mat4x4 const expected( | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(1, -6, -1, 0), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(7, 12, 23, 0), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(-4, 4, -24, 0), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(4, 20, 31, 0)); | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(22, -24, 4, 0), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(20, -36, 2, 0), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(1, -2, 3, 0), | 
			
		
	
		
			
				
					|  |  |  |  |                 glm::vec4(-26, 39, -19, 0)); | 
			
		
	
		
			
				
					|  |  |  |  |         Error += all(equal(B4x4, expected, epsilon<float>())) ? 0 : 1; | 
			
		
	
		
			
				
					|  |  |  |  |         Error += all(equal(C4x4, expected, epsilon<float>())) ? 0 : 1; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     return Error; | 
			
		
	
	
		
			
				
					|  |  |  | @ -392,19 +400,20 @@ static int test_inverse_perf(std::size_t Count, std::size_t Instance, char const | 
			
		
	
		
			
				
					|  |  |  |  | int main() | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  | 	int Error = 0; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	Error += test_matrixCompMult(); | 
			
		
	
		
			
				
					|  |  |  |  | 	Error += test_outerProduct(); | 
			
		
	
		
			
				
					|  |  |  |  | 	Error += test_transpose(); | 
			
		
	
		
			
				
					|  |  |  |  | 	Error += test_determinant(); | 
			
		
	
		
			
				
					|  |  |  |  | 	Error += test_inverse(); | 
			
		
	
		
			
				
					|  |  |  |  |     Error += test_inverse_simd(); | 
			
		
	
		
			
				
					|  |  |  |  |     Error += test_shearing(); | 
			
		
	
		
			
				
					|  |  |  |  | 	Error += test_inverse_simd(); | 
			
		
	
		
			
				
					|  |  |  |  | 	Error += test_shearing(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | #	ifdef NDEBUG | 
			
		
	
		
			
				
					|  |  |  |  | #ifdef NDEBUG | 
			
		
	
		
			
				
					|  |  |  |  | 	std::size_t const Samples = 1000; | 
			
		
	
		
			
				
					|  |  |  |  | #	else | 
			
		
	
		
			
				
					|  |  |  |  | #else | 
			
		
	
		
			
				
					|  |  |  |  | 	std::size_t const Samples = 1; | 
			
		
	
		
			
				
					|  |  |  |  | #	endif//NDEBUG
 | 
			
		
	
		
			
				
					|  |  |  |  | #endif//NDEBUG
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	for(std::size_t i = 0; i < 1; ++i) | 
			
		
	
		
			
				
					|  |  |  |  | 	{ | 
			
		
	
	
		
			
				
					|  |  |  | 
 |