Module:Interval edo approximation: Difference between revisions

Pailiaq (talk | contribs)
No edit summary
Pailiaq (talk | contribs)
No edit summary
Line 103: Line 103:
end
end


-- Format a number with sign and 2 decimal places
-- Format a number with sign and 3 decimal places
local function format_error(value)
local function format_error(value)
     if value >= 0 then
     if value >= 0 then
         return string.format("+%.2f", value)
         return string.format("+%.3f", value)
     else
     else
         return string.format("%.2f", value)
         return string.format("%.3f", value)
     end
     end
end
end
Line 150: Line 150:
     local ratio_cents = cents(ratio)
     local ratio_cents = cents(ratio)
     -- Include subtitle info in caption to avoid breaking sortable functionality
     -- Include subtitle info in caption to avoid breaking sortable functionality
     table.insert(output, string.format('|+ EDO Approximations for %s (%.2f¢)<br/><small>\'\'Up to %dedo, Tolerance: ≤%g%%%%\'\'</small>', interval_str, ratio_cents, max_edo, tolerance))
     table.insert(output, string.format('|+ EDO Approximations for %s (%.3f¢)<br/><small>\'\'Up to %dedo, Tolerance: ≤%g%%%%\'\'</small>', interval_str, ratio_cents, max_edo, tolerance))
     table.insert(output, '|-')
     table.insert(output, '|-')
     table.insert(output, '! EDO !! Step size !! Approximation ([[Cent|¢]]) !! Absolute Error ([[Cent|¢]]) !! [[Relative_interval_error|Relative Error]] ([[Relative_cent|%]])')
     table.insert(output, '! EDO !! class="unsortable" | Step size !! Cent Value ([[Cent|¢]]) !! Absolute Error ([[Cent|¢]]) !! [[Relative_interval_error|Relative Error]] ([[Relative_cent|%]])')


     for _, result in ipairs(results) do
     for _, result in ipairs(results) do
Line 163: Line 163:
         -- Calculate approximation in cents: steps * (1200/edo)
         -- Calculate approximation in cents: steps * (1200/edo)
         local approximation_cents = result.steps * (1200 / result.edo)
         local approximation_cents = result.steps * (1200 / result.edo)
         local approx_str = string.format("%.2f", approximation_cents)
         local approx_str = string.format("%.3f", approximation_cents)


         -- Python: abs_err = f"{result['abs_error']:+.2f}"
         -- Python: abs_err = f"{result['abs_error']:+.3f}"
         local abs_err = format_error(result.abs_error)
         local abs_err = format_error(result.abs_error)


         -- Python: rel_err = f"{result['rel_error']:+.2f}"
         -- Python: rel_err = f"{result['rel_error']:+.3f}"
         local rel_err = format_error(result.rel_error)
         local rel_err = format_error(result.rel_error)