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.

(cherry picked from commit f2e0f7e3a8)
This commit is contained in:
Matthias Schiffer 2021-08-07 21:02:32 +02:00
parent b03e1e280e
commit cc20271cb8

View File

@ -66,12 +66,17 @@
local function formatBits(bits) local function formatBits(bits)
local units = {[0]='', 'k', 'M', 'G'} local units = {[0]='', 'k', 'M', 'G'}
local unit = 0
local pow = math.floor(math.log(math.max(math.abs(bits), 1)) / math.log(1000)) for i = 1, #units do
local known_pow = math.min(pow, #units) 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', bits, units[unit])
return string.format('%g %sbit', significand, units[known_pow])
end end
local function statistics(key, format) local function statistics(key, format)