12,704
edits
Falterfire (talk | contribs) (Added a pagename fix to handle apostrophes) |
(Replace GCD function with an implementation of the Euclidean algorithm, so that fewer iterations occur when numbers differ greatly in magnitude) |
||
(2 intermediate revisions by one other user not shown) | |||
Line 178: | Line 178: | ||
if(maxDigits ~= nil and decimals > maxDigits) then | if(maxDigits ~= nil and decimals > maxDigits) then | ||
result = tonumber(string.format("%."..maxDigits.."f", result)) | result = string.format("%."..minDigits.."f", tonumber(string.format("%."..maxDigits.."f", result))) | ||
elseif(minDigits ~= nil and decimals < minDigits) then | elseif(minDigits ~= nil and decimals < minDigits) then | ||
result = string.format("%."..minDigits.."f", result) | result = string.format("%."..minDigits.."f", result) | ||
Line 270: | Line 270: | ||
end | end | ||
-- | -- Euclidean Greatest Common Divisor algorithm | ||
function p.gcd(a, b) | function p.gcd(a, b) | ||
if | if b ~= 0 then | ||
return a | return p.gcd(b, a % b) | ||
else | else | ||
return math.abs(a) | |||
end | end | ||
end | end | ||
Line 355: | Line 343: | ||
return result | return result | ||
end | end | ||
function p.tablesEqual(t1, t2) | |||
if p.tableCount(t1) ~= p.tableCount(t2) then return false end | |||
for i, val in p.skpairs(t1) do | |||
if type(val) ~= type(t2[i]) then | |||
return false | |||
elseif type(val) == 'table' then | |||
if not p.tablesEqual(val, t2[i]) then return false end | |||
elseif t2[i] ~= val then | |||
return false | |||
end | |||
end | |||
return true | |||
end | |||
return p | return p |