Module:Harmonics in equal: Difference between revisions
add prime 2 anyway |
No edit summary |
||
| Line 18: | Line 18: | ||
end | end | ||
local function approx(steps, num, denom, intervals, title, prec) | local function approx(steps, num, denom, intervals, title, prec, reduction) | ||
local tpri = {'! colspan="2" | Prime number '} | local tpri = {'! colspan="2" | Prime number '} | ||
local tabs = {'! rowspan="2" | Error \n! absolute ([[cent|¢]]) '} | local tabs = {'! rowspan="2" | Error \n! absolute ([[cent|¢]]) '} | ||
local trel = {'! [[Relative interval error|relative]] (%) '} | local trel = {'! [[Relative interval error|relative]] (%) '} | ||
local tdeg = {'! colspan="2" | Steps<br>([[Octave_reduction|reduced]])'} | local tdeg = {'! colspan="2" | Step'} | ||
if reduction then | |||
tdeg = {'! colspan="2" | Steps<br>([[Octave_reduction|reduced]])'} | |||
end | |||
local fmt_abs = string.format(' %%+.%df', prec) | local fmt_abs = string.format(' %%+.%df', prec) | ||
local fmt_rel = ' %+.0f' | local fmt_rel = ' %+.0f' | ||
| Line 30: | Line 33: | ||
v = s*steps | v = s*steps | ||
ev = math.floor(v + .5) | ev = math.floor(v + .5) | ||
table.insert(tpri, ' ' .. p) | table.insert(tpri, '' .. p) | ||
table.insert(tabs, string.format(fmt_abs, 1200 * equave * (ev - v ) / steps)) | table.insert(tabs, string.format(fmt_abs, 1200 * equave * (ev - v ) / steps)) | ||
table.insert(trel, string.format(fmt_rel, 100 * (ev - v))) | table.insert(trel, string.format(fmt_rel, 100 * (ev - v))) | ||
table.insert(tdeg, ' ' .. ev .. '<br>('.. ev % steps .. ')') | if reduction then | ||
table.insert(tdeg, '' .. ev .. '<br>('.. ev % steps .. ')') | |||
else | |||
table.insert(tdeg, '' .. ev) | |||
end | |||
end | end | ||
local titleMarkup = '' | local titleMarkup = '' | ||
| Line 132: | Line 139: | ||
-- optional precision for abs error, default about 3 digits | -- optional precision for abs error, default about 3 digits | ||
local prec = eval_num_arg(frame.args['prec'], prec_by_equal(steps, num, denom)) | local prec = eval_num_arg(frame.args['prec'], prec_by_equal(steps, num, denom)) | ||
return approx( steps, num, denom, {unpack(intervals[select_intervals], start, start+columns-1)}, title, prec) | local reduction = true | ||
if steps == 1 then | |||
reduction = false | |||
end | |||
return approx( steps, num, denom, {unpack(intervals[select_intervals], start, start+columns-1)}, title, prec, reduction) | |||
end | end | ||
return p; | return p; | ||