Current File : //usr/share/texlive/texmf-dist/tex/luatex/lualibs/lualibs-math.lua |
if not modules then modules = { } end modules ['l-math'] = {
version = 1.001,
comment = "companion to luat-lib.mkiv",
author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
copyright = "PRAGMA ADE / ConTeXt Development Team",
license = "see context related readme files"
}
if not math.ceiling then
math.ceiling = math.ceil
end
if not math.round then
local floor = math.floor
function math.round(x) return floor(x + 0.5) end
end
if not math.div then
local floor = math.floor
function math.div(n,m) return floor(n/m) end
end
if not math.mod then
function math.mod(n,m) return n % m end
end
if not math.sind then
local sin, cos, tan = math.sin, math.cos, math.tan
local pipi = 2*math.pi/360
function math.sind(d) return sin(d*pipi) end
function math.cosd(d) return cos(d*pipi) end
function math.tand(d) return tan(d*pipi) end
end
if not math.odd then
function math.odd (n) return n % 2 ~= 0 end
function math.even(n) return n % 2 == 0 end
end
if not math.cosh then
local exp = math.exp
function math.cosh(x)
local xx = exp(x)
return (xx+1/xx)/2
end
function math.sinh(x)
local xx = exp(x)
return (xx-1/xx)/2
end
function math.tanh(x)
local xx = exp(x)
return (xx-1/xx)/(xx+1/xx)
end
end
if not math.pow then
function math.pow(x,y)
return x^y
end
end
if not math.atan2 then
math.atan2 = math.atan
end
if not math.ldexp then
function math.ldexp(x,e)
return x * 2.0^e
end
end
-- if not math.frexp then
--
-- -- not a oneliner so use a math library instead
--
-- function math.frexp(x,e)
-- -- returns m and e such that x = m2e, e is an integer and the absolute
-- -- value of m is in the range [0.5, 1) (or zero when x is zero)
-- end
--
-- end
if not math.log10 then
local log = math.log
function math.log10(x)
return log(x,10)
end
end
if not math.type then
function math.type()
return "float"
end
end
if not math.tointeger then
math.mininteger = -0x4FFFFFFFFFFF
math.maxinteger = 0x4FFFFFFFFFFF
local floor = math.floor
function math.tointeger(n)
local f = floor(n)
return f == n and f or nil
end
end
if not math.ult then
local floor = math.floor
function math.tointeger(m,n)
-- not ok but i'm not motivated to look into it now
return floor(m) < floor(n) -- unsigned comparison needed
end
end