| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -97,16 +97,22 @@ namespace glm | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						GLM_FUNC_QUALIFIER bool isOrthogonal(mat<C, R, T, Q> const& m, T const& epsilon) | 
					 | 
					 | 
					 | 
						GLM_FUNC_QUALIFIER bool isOrthogonal(mat<C, R, T, Q> const& m, T const& epsilon) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						{ | 
					 | 
					 | 
					 | 
						{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							bool result = true; | 
					 | 
					 | 
					 | 
							bool result = true; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							for(length_t i(0); result && i < m.length() - 1; ++i) | 
					 | 
					 | 
					 | 
							for(length_t i(0); result && i < m.length(); ++i) | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							for(length_t j(i + 1); result && j < m.length(); ++j) | 
					 | 
					 | 
					 | 
							{ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								result = areOrthogonal(m[i], m[j], epsilon); | 
					 | 
					 | 
					 | 
								result = isNormalized(m[i], epsilon); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								for(length_t j(i + 1); result && j < m.length(); ++j) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									result = abs(dot(m[i], m[j])) <= epsilon; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if(result) | 
					 | 
					 | 
					 | 
							if(result) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							{ | 
					 | 
					 | 
					 | 
							{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								mat<C, R, T, Q> tmp = transpose(m); | 
					 | 
					 | 
					 | 
								mat<C, R, T, Q> tmp = transpose(m); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								for(length_t i(0); result && i < m.length() - 1 ; ++i) | 
					 | 
					 | 
					 | 
								for(length_t i(0); result && i < m.length(); ++i) | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								for(length_t j(i + 1); result && j < m.length(); ++j) | 
					 | 
					 | 
					 | 
								{ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									result = areOrthogonal(tmp[i], tmp[j], epsilon); | 
					 | 
					 | 
					 | 
									result = isNormalized(tmp[i], epsilon); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									for(length_t j(i + 1); result && j < m.length(); ++j) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
										result = abs(dot(tmp[i], tmp[j])) <= epsilon; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							} | 
					 | 
					 | 
					 | 
							} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							return result; | 
					 | 
					 | 
					 | 
							return result; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} | 
					 | 
					 | 
					 | 
						} | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |