Module:Rational: Difference between revisions
m find_S_expression() reworked |
m as_FJS() changed |
||
Line 1,012: | Line 1,012: | ||
table.sort(otonal) | table.sort(otonal) | ||
table.sort(utonal) | table.sort(utonal) | ||
local fifths = b[3] or 0 | local fifths = b[3] or 0 | ||
local o = math.floor((fifths * 2 + 3) / 7) | |||
local num = fifths * 11 + (b[2] or 0) * 7 | |||
if num >= 0 then | |||
num = num + 1 | |||
else | else | ||
num = num - 1 | |||
o = -o | |||
end | end | ||
local | local num_mod = (num - u.signum(num)) % 7 | ||
local letter = '' | |||
if (num_mod == 0 or num_mod == 3 or num_mod == 4) and o == 0 then | |||
letter = 'P' | |||
local | elseif o == 1 then | ||
if | |||
letter = 'M' | letter = 'M' | ||
elseif | elseif o == -1 then | ||
letter = 'm' | letter = 'm' | ||
else | |||
if o >= 0 then | |||
o = o - 1 | |||
else | |||
o = o + 1 | |||
end | end | ||
if o > 0 then | |||
while o > 0 do | |||
while | letter = letter .. 'A' | ||
o = o - 2 | |||
end | |||
else | |||
while o < 0 do | |||
letter = letter .. 'd' | |||
o = o + 2 | |||
end | |||
end | end | ||
end | end |