Module:Q-odd-limit intervals: Difference between revisions
ArrowHead294 (talk | contribs) No edit summary |
ArrowHead294 (talk | contribs) Try adding in direct approximation |
||
| Line 102: | Line 102: | ||
true_size = monzo2cent(monzo_list[i], subgroup) | true_size = monzo2cent(monzo_list[i], subgroup) | ||
approx_size = step_size * inner_product(val, monzo_list[i]) | approx_size = step_size * inner_product(val, monzo_list[i]) | ||
error_abs_pval = math.abs(approx_size - true_size) | |||
error_rel_direct = 100 * approx_size / step_size | |||
error_rel_pval = 100 * error_abs_pval / step_size | |||
error_list[i] = | error_list[i] = | ||
{ | { | ||
ratio = ratio, | ratio = ratio, | ||
comp = comp, | comp = comp, | ||
error_abs_direct = approx_size, | |||
error_abs_pval = error_abs_pval, | |||
error_rel_direct = error_rel_direct, | |||
error_rel_pval = error_rel_pval | |||
} | } | ||
end | end | ||
table.sort(error_list, function(a, b) return a. | table.sort(error_list, function(a, b) return a.error_abs_pval < b.error_abs_pval end) | ||
return error_list | return error_list | ||
end | end | ||
| Line 125: | Line 128: | ||
for i = 1, #error_list do | for i = 1, #error_list do | ||
ratiocomp = string.format("%d/%d, %d/%d", error_list[i].ratio.num, error_list[i].ratio.den, 2 * error_list[i].ratio.den, error_list[i].ratio.num) | ratiocomp = string.format("%d/%d, %d/%d", error_list[i].ratio.num, error_list[i].ratio.den, 2 * error_list[i].ratio.den, error_list[i].ratio.num) | ||
error_abs_pval = string.format("%.3f", error_list[i].error_abs_pval) | |||
error_rel_pval = string.format("%.1f", error_list[i].error_rel_pval) | |||
error_abs_direct = string.format("%.3f", error_list[i].error_abs_direct) | |||
error_rel_direct = string.format("%.1f", error_list[i].error_rel_direct) | |||
if bit32.band(error_list[i].ratio.den, error_list[i].ratio.den - 1) == 0 and is_in(error_list[i].ratio.num, subgroup) then -- check power of 2 for den and prime for num | if bit32.band(error_list[i].ratio.den, error_list[i].ratio.den - 1) == 0 and is_in(error_list[i].ratio.num, subgroup) then -- check power of 2 for den and prime for num | ||
ratiocomp = "'''" .. ratiocomp .. "'''" | ratiocomp = "'''" .. ratiocomp .. "'''" | ||
error_abs_pval = "'''" .. error_abs_pval .. "'''" | |||
error_rel_pval = "'''" .. error_rel_pval .. "'''" | |||
error_abs_direct = "'''" .. error_abs_direct .. "'''" | |||
error_rel_direct = "'''" .. error_rel_direct .. "'''" | |||
end | end | ||
if error_list[i]. | if error_list[i].error_rel_pval > 50 then | ||
ratiocomp = "''" .. ratiocomp .. "''" | ratiocomp = "''" .. ratiocomp .. "''" | ||
error_abs_pval = "''" .. error_abs_pval .. "''" | |||
error_rel_pval = "''" .. error_rel_pval .. "''" | |||
error_abs_direct = "''" .. error_abs_direct .. "''" | |||
error_rel_direct = "''" .. error_rel_direct .. "''" | |||
end | end | ||
t_body[i] = string.format("|-\n| %s\n| %s\n| %s", ratiocomp, | t_body[i] = string.format("|-\n| %s\n| %s\n| %s\n| %s\n| %s", ratiocomp, error_abs_direct, error_rel_direct, error_abs_pval, error_rel_pval) | ||
end | end | ||
return "{| class=\"wikitable center-all mw-collapsible mw-collapsed\"\n" .. | return "{| class=\"wikitable center-all mw-collapsible mw-collapsed\"\n" .. | ||
"|+ style=\"white-space: nowrap | "|+ style=\"white-space: nowrap;\" | " .. t_title .. "\n" .. | ||
"|-\n" .. | "|-\n" .. | ||
"! Interval, | "! rowspan=\"2\" | Interval and complement\n" .. | ||
"! colspan=\"2\" | Direct approximation\n" .. | |||
"! colspan=\"2\" | Patent val mapping\n" .. | |||
"|-\n" .. | |||
"! Error (abs, [[Cent|¢]])\n" .. | |||
"! Error (rel, [[Relative cent|%]])\n" .. | |||
"! Error (abs, [[Cent|¢]])\n" .. | "! Error (abs, [[Cent|¢]])\n" .. | ||
"! Error (rel, [[Relative cent|%]])\n" .. | "! Error (rel, [[Relative cent|%]])\n" .. | ||