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:
Matthias Schiffer 2021-08-07 21:02:32 +02:00
parent dcb8738a5a
commit f2e0f7e3a8
No known key found for this signature in database
GPG Key ID: 16EF3F64CB201D9C

View File

@ -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)