Module:Harmonics in equal: Difference between revisions

Sintel (talk | contribs)
add prime 2 anyway
Sintel (talk | contribs)
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;