Module:Q-odd-limit intervals: Difference between revisions

ArrowHead294 (talk | contribs)
mNo edit summary
experiment with a larger limit
 
(11 intermediate revisions by one other user not shown)
Line 1: Line 1:
local p = {}
bit32 = require("bit32")
bit32 = require("bit32")
utils = require("Module:Utils")
ET = require("Module:ET")
ET = require("Module:ET")
getArgs = require("Module:Arguments").getArgs
limits = require("Module:Limits")
limits = require("Module:Limits")
yesno = require("Module:yesno")
utils = require("Module:Utils")
 
yesno = require("Module:Yesno")
local p = {}


local PRIME_LIST = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61}
local PRIME_LIST = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61}
Line 110: Line 111:
}
}
end
end
table.sort(error_list, function(a, b) return a.error_abs_val < b.error_abs_val end)
table.sort(error_list, function(a, b)
return a.error_abs_val < b.error_abs_val
end)
return error_list
return error_list
end
end
Line 120: Line 125:
local errlist_val = {}
local errlist_val = {}
local val = {}
local val = {}
local bgclr
local bgclr, result


for i = 1, #subgroup do
for i = 1, #subgroup do
Line 199: Line 204:
local t_head_1 = "|-\n"
local t_head_1 = "|-\n"
.. "! class=\"unsortable\" | Interval and complement"
.. "! class=\"unsortable\" | Interval and complement"
.. " !! Error (abs, [[Cent|¢]])"
.. " !! Error (abs, [[Cent|&#162;]])"
.. " !! Error (rel, [[Relative cent|%]])\n"
.. " !! Error (rel, [[Relative cent|%]])\n"
local t_foot = "\n|}"
local t_foot = "\n|}"
Line 212: Line 217:
if approx_t == "direct" then
if approx_t == "direct" then
return t_head_0 .. t_title .. tag_direct .. "\n" .. t_head_1 .. table.concat(t_body_direct, "\n") .. t_foot
result = t_head_0 .. t_title .. tag_direct .. "\n" .. t_head_1 .. table.concat(t_body_direct, "\n") .. t_foot
elseif approx_t == "val" then
elseif approx_t == "val" then
return t_head_0 .. t_title .. tag_val .. "\n" .. t_head_1 .. table.concat(t_body_val, "\n") .. t_foot
result = t_head_0 .. t_title .. tag_val .. "\n" .. t_head_1 .. table.concat(t_body_val, "\n") .. t_foot
else
else
return nil
result = ""
end
end
return result
end
end
-- local function prec_by_equal (steps)
-- return math.floor (math.log (steps*1.9)/math.log (10))
-- end


function p.q_odd_limit_intervals(frame)
function p.q_odd_limit_intervals(frame)
local args = getArgs(frame)
local steps = tonumber(frame.args["steps"])
local steps = tonumber(frame.args["steps"])
local limit = math.max(tonumber(frame.args["limit"]), 2)
local limit = math.max(tonumber(frame.args["limit"]), 2)
local constcy = limits.consistency_limit(ET.parse(steps .. "edo"), false, 43)
local constcy = limits.consistency_limit(ET.parse(steps .. "edo"), false, 63)
     local debugg = yesno(frame.args["debug"])
     local wtext = yesno(frame.args["wtext"] or args["wtext"])
local note = frame.args["note"]
local note = frame.args["note"]
local title = frame.args["title"]
local title = frame.args["title"]
Line 241: Line 245:
local subgroup = table_filter(PRIME_LIST, limit)
local subgroup = table_filter(PRIME_LIST, limit)
local monzo_list = odd_limit_monzo_list_gen(limit)
local monzo_list = odd_limit_monzo_list_gen(limit)
local out_str
local result
if header ~= "none" then
if header ~= "none" then
if constcy >= limit then
if constcy >= limit then
apx = "val"
apx = "val"
end
end
out_str = string.format("The following %s how [[%d-odd-limit]] intervals are represented in %dedo. ",
result = string.format("The following %s how [[%d-odd-limit]] intervals are represented in %dedo. ",
string.gsub("table show", "()", {[((apx == "direct" or apx == "val") and 11 or 6)] = "s"}), limit, steps)
string.gsub("table show", "()", {[((apx == "direct" or apx == "val") and 11 or 6)] = "s"}), limit, steps)
.. "Prime harmonics are in '''bold'''"
.. "Prime harmonics are in '''bold'''"
Line 257: Line 261:
end
end
if note ~= "" then
if note ~= "" then
out_str = out_str .. note .. "\n\n"
result = result .. note .. "\n\n"
end
end
if steps == 12 then
if steps == 12 then
out_str = out_str .. "Note that, since the [[cent]] was defined in terms of 12edo, the absolute and relative errors for 12edo are identical.\n\n"
result = result .. "Note that, since the [[cent]] was defined in terms of 12edo, the absolute and relative errors for 12edo are identical.\n\n"
end
end
else
else
tag = string.lower(frame.args["tag"]:gsub("%s+", ""))
tag = string.lower(frame.args["tag"]:gsub("%s+", ""))
out_str = ""
result = ""
end
end
if utils.value_provided(apx) then
if utils.value_provided(apx) then
out_str = out_str .. approx(steps, subgroup, monzo_list, title, tag, apx)
result = result .. approx(steps, subgroup, monzo_list, title, tag, apx)
else
else
out_str = out_str .. approx(steps, subgroup, monzo_list, title, tag, "direct") .. "\n\n" .. approx(steps, subgroup, monzo_list, title, tag, "val")
result = result .. approx(steps, subgroup, monzo_list, title, tag, "direct") .. "\n\n" .. approx(steps, subgroup, monzo_list, title, tag, "val")
end
end
return frame:preprocess(debugg == true and "<pre>" .. out_str .. "</pre>" or out_str)
if wtext then
result = "<syntaxhighlight lang=\"wikitext\">" .. result .. "</syntaxhighlight>"
end
return frame:preprocess(result)
end
end


return p
return p