Module:Limits: Difference between revisions
m Temporarily reverting the edit Tag: Undo |
Consistency limits optimisation |
||
Line 1: | Line 1: | ||
local rat = require('Module:Rational') | local rat = require('Module:Rational') | ||
local p = {} | local p = {} | ||
-- compute all positive ratios n/m with n and m <= q modulo powers of equave | -- compute all positive ratios n/m with n and m <= q modulo powers of equave | ||
Line 25: | Line 9: | ||
for m = 1, q, 2 do | for m = 1, q, 2 do | ||
local a = rat.new(n, m) | local a = rat.new(n, m) | ||
a = | a = rat.modulo_mul(a, equave) | ||
local key = rat.as_ratio(a) | local key = rat.as_ratio(a) | ||
ratios[key] = a | ratios[key] = a | ||
Line 44: | Line 28: | ||
local approx_set = {} | local approx_set = {} | ||
for a_key, a in pairs(ratios) do | for a_key, a in pairs(ratios) do | ||
local a_approx = approximate(a) | local a_approx = approximate(a) % size | ||
if approx_set[a_approx] then | if approx_set[a_approx] then | ||
return false | return false | ||
Line 64: | Line 48: | ||
local c_approx = approximate(c) | local c_approx = approximate(c) | ||
c = | c = rat.modulo_mul(c, equave) | ||
local c_key = rat.as_ratio(c) | local c_key = rat.as_ratio(c) | ||
if ratios[c_key] then | if ratios[c_key] then |