Module:Rational: Difference between revisions

Plumtree (talk | contribs)
m Typo
Plumtree (talk | contribs)
m signum() -> u.signum()
Line 1: Line 1:
local u = require('Module:Utils')
local u = require('Module:Utils')
local p = {}
local p = {}
local function signum(x)
if x > 0 then return 1 end
if x < 0 then return -1 end
return 0
end


-- construct a rational number n/m
-- construct a rational number n/m
Line 15: Line 9:
return { nan = true }
return { nan = true }
else
else
return { zero = true, sign = signum(m) }
return { zero = true, sign = u.signum(m) }
end
end
else
else
if m == 0 then
if m == 0 then
return { inf = true, sign = signum(n) }
return { inf = true, sign = u.signum(n) }
end
end
end
end
local sign = signum(n) * signum(m)
local sign = u.signum(n) * u.signum(m)
n = n * signum(n)
n = n * u.signum(n)
m = m * signum(m)
m = m * u.signum(m)
local n_factors = u.prime_factorization_raw(n)
local n_factors = u.prime_factorization_raw(n)
local m_factors = u.prime_factorization_raw(m)
local m_factors = u.prime_factorization_raw(m)