mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-10-30 23:15:32 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			42 lines
		
	
	
		
			749 B
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			749 B
		
	
	
	
		
			Lua
		
	
	
	
	
	
| --[[
 | |
|     Math utils.
 | |
| --]]
 | |
| 
 | |
| function math.hypot(x, y)
 | |
| 	return math.sqrt(x * x + y * y)
 | |
| end
 | |
| 
 | |
| function math.sign(x, tolerance)
 | |
| 	tolerance = tolerance or 0
 | |
| 	if x > tolerance then
 | |
| 		return 1
 | |
| 	elseif x < -tolerance then
 | |
| 		return -1
 | |
| 	end
 | |
| 	return 0
 | |
| end
 | |
| 
 | |
| function math.factorial(x)
 | |
| 	assert(x % 1 == 0 and x >= 0, "factorial expects a non-negative integer")
 | |
| 	if x >= 171 then
 | |
| 		-- 171! is greater than the biggest double, no need to calculate
 | |
| 		return math.huge
 | |
| 	end
 | |
| 	local v = 1
 | |
| 	for k = 2, x do
 | |
| 		v = v * k
 | |
| 	end
 | |
| 	return v
 | |
| end
 | |
| 
 | |
| function math.round(x)
 | |
| 	if x < 0 then
 | |
| 		local int = math.ceil(x)
 | |
| 		local frac = x - int
 | |
| 		return int - ((frac <= -0.5) and 1 or 0)
 | |
| 	end
 | |
| 	local int = math.floor(x)
 | |
| 	local frac = x - int
 | |
| 	return int + ((frac >= 0.5) and 1 or 0)
 | |
| end
 |