|  |  | @@ -145,20 +145,23 @@ constexpr auto max(A&& a, B&& b) -> decltype(a < b ? std::forward<A>(a) : std::f | 
		
	
		
			
			|  |  |  | #define typeof(a) decltype(a) | 
		
	
		
			
			|  |  |  | #endif | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | #if !defined(__cplusplus) || __cplusplus < 201703L | 
		
	
		
			
			|  |  |  | #define abs(x) ({ \ | 
		
	
		
			
			|  |  |  | typeof(x) _x = (x); \ | 
		
	
		
			
			|  |  |  | (_x > 0) ? _x : -_x; \ | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | #define round(x) ({ \ | 
		
	
		
			
			|  |  |  | typeof(x) _x = (x); \ | 
		
	
		
			
			|  |  |  | (_x>=0) ? (long)(_x+0.5) : (long)(_x-0.5); \ | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | #endif /* __cplusplus < 201703L */ | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | #define constrain(amt, low, high) ({ \ | 
		
	
		
			
			|  |  |  | typeof(amt) _amt = (amt); \ | 
		
	
		
			
			|  |  |  | typeof(low) _low = (low); \ | 
		
	
		
			
			|  |  |  | typeof(high) _high = (high); \ | 
		
	
		
			
			|  |  |  | (_amt < _low) ? _low : ((_amt > _high) ? _high : _amt); \ | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | #define round(x) ({ \ | 
		
	
		
			
			|  |  |  | typeof(x) _x = (x); \ | 
		
	
		
			
			|  |  |  | (_x>=0) ? (long)(_x+0.5) : (long)(_x-0.5); \ | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | #define radians(deg) ((deg)*DEG_TO_RAD) | 
		
	
		
			
			|  |  |  | #define degrees(rad) ((rad)*RAD_TO_DEG) | 
		
	
		
			
			|  |  |  | #define sq(x) ({ \ |