gluon-status-page: avoid complex math
This code is usually running on an embedded CPU without FPU. In addtition to its inefficience, the algorithm is also much harder to understand. Replace the logarithm formula with a simple loop.
This commit is contained in:
		
							parent
							
								
									dcb8738a5a
								
							
						
					
					
						commit
						f2e0f7e3a8
					
				| @ -66,12 +66,17 @@ | ||||
| 
 | ||||
| 	local function formatBits(bits) | ||||
| 		local units = {[0]='', 'k', 'M', 'G'} | ||||
| 		local unit = 0 | ||||
| 
 | ||||
| 		local pow = math.floor(math.log(math.max(math.abs(bits), 1)) / math.log(1000)) | ||||
| 		local known_pow = math.min(pow, #units) | ||||
| 		for i = 1, #units do | ||||
| 			if math.abs(bits) < 1000 then | ||||
| 				break | ||||
| 			end | ||||
| 			unit = i | ||||
| 			bits = bits / 1000 | ||||
| 		end | ||||
| 
 | ||||
| 		local significand = bits/(1000^known_pow) | ||||
| 		return string.format('%g %sbit', significand, units[known_pow]) | ||||
| 		return string.format('%g %sbit', bits, units[unit]) | ||||
| 	end | ||||
| 
 | ||||
| 	local function statistics(key, format) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user