Module:Rational: Difference between revisions
m as_subgroup_ket() implemented, as_ket() implementation improved for 1/1 |
m is_harmonic(), is_subharmonic() implemented |
||
Line 438: | Line 438: | ||
return false | return false | ||
end | end | ||
end | |||
end | |||
return true | |||
end | |||
-- determine whether a rational number represents a harmonic | |||
function p.is_harmonic(a, reduced) | |||
if type(a) == 'number' then | |||
a = p.new(a) | |||
end | |||
if a.nan or a.inf or a.zero or a.sign < 0 then | |||
return false | |||
end | |||
for factor, power in pairs(a) do | |||
if type(factor) == 'number' then | |||
if factor == 2 and reduced then | |||
-- do nothing | |||
elseif power < 0 then | |||
return false | |||
end | |||
end | |||
end | |||
if reduced then | |||
if p.lt(a, 1) or p.geq(a, 2) then | |||
return false | |||
end | |||
end | |||
return true | |||
end | |||
-- determine whether a rational number represents a subharmonic | |||
function p.is_subharmonic(a, reduced) | |||
if type(a) == 'number' then | |||
a = p.new(a) | |||
end | |||
if a.nan or a.inf or a.zero or a.sign < 0 then | |||
return false | |||
end | |||
for factor, power in pairs(a) do | |||
if type(factor) == 'number' then | |||
if factor == 2 and reduced then | |||
-- do nothing | |||
elseif power > 0 then | |||
return false | |||
end | |||
end | |||
end | |||
if reduced then | |||
if p.lt(a, 1) or p.geq(a, 2) then | |||
return false | |||
end | end | ||
end | end |