Module:Temperament data: Difference between revisions

CompactStar (talk | contribs)
No edit summary
CompactStar (talk | contribs)
No edit summary
Line 138: Line 138:
local function unreduced_mapping_from_basis(comma_basis)
local function unreduced_mapping_from_basis(comma_basis)
return antitranspose(nullspace(antitranspose(comma_basis)))
return antitranspose(nullspace(antitranspose(comma_basis)))
end
local function get_reduced_mapping(comma_basis, preimage)
a =  pseudoinv(matmul(unreduced_mapping_from_basis(comma_basis), preimage))
for i = 1, #a do
for j = 1, #a[1] do
a[i][j] = math.floor(a[i][j] + 0.5) -- round each entry (they are not exact integers)
end
end
return a
end
end


Line 166: Line 176:
return matmul(get_te_tuning_map(subgroup, comma_basis), preimage)
return matmul(get_te_tuning_map(subgroup, comma_basis), preimage)
end
end


local function get_pote_generator(subgroup, comma_basis, preimage)
local function get_pote_generator(subgroup, comma_basis, preimage)
Line 172: Line 183:
period = period * (subgroup[i]^preimage[i][1])
period = period * (subgroup[i]^preimage[i][1])
end
end
local te =get_te_generator(subgroup, comma_basis, preimage)
local te = get_te_generator(subgroup, comma_basis, preimage)
local stretch_factor = te[1][1] * math.log(2) / math.log(period)
local stretch_factor = te[1][1] * math.log(2) / math.log(period)
return scalarmatmul(te, 1/stretch_factor)
return scalarmatmul(te, 1/stretch_factor)
end
end


-- Parsing/display functions
-- Parsing/display functions
Line 253: Line 266:
end
end
generators = rat_list_to_matrix(subgroup, generators)
generators = rat_list_to_matrix(subgroup, generators)
local mapping = get_unreduced_mapping(comma_matrix, generators)
local cte_generator = frame.args['cte_generator']
local cte_generator = frame.args['cte_generator']
local pote_generator = get_pote_generator(subgroup, comma_matrix, generators)
local pote_generator = get_pote_generator(subgroup, comma_matrix, generators)
local result =  '[[Subgroup]]: ' .. frame.args['subgroup']
local result =  '[[Subgroup]]: ' .. frame.args['subgroup']
result = result .. '\n\n[[Comma list]]: ' .. frame.args['comma_list']
result = result .. '\n\n[[Comma list]]: ' .. frame.args['comma_list']
result = result .. '\n\n{{Mapping|'
for i = 1, #mapping do
for j = 1, #mapping[1] do
result = result .. mapping[i][j] .. ' '
end
result = result .. '|'
end
result = result:sub(0,-1) .. '}'
result = result .. '\n\n: mapping generators: '
result = result .. '\n\n: mapping generators: '
for i = 1, #unparsed_gens do
for i = 1, #unparsed_gens do
Line 308: Line 331:
return result
return result
end
end




return p
return p