--[[ Simple math helper function ]]-- local Math = {} function Math.roundAwayFromZero(num) if num > 0 then return math.ceil(num) else return math.floor(num) end end function Math.round(num) return math.floor(num + 0.5) end function Math.oddEven(number) if number % 2 == 1 then return "odd" else return "even" end end local function tmin_max(tab, func, op) if #tab == 0 then return nil, nil end local index, value = 1, tab[1] for i = 2, #tab do if func then if func(value, tab[i]) then index, value = i, tab[i] end elseif op == "min" then if value > tab[i] then index, value = i, tab[i] end elseif op == "max" then if value < tab[i] then index, value = i, tab[i] end end end return index, value end --[[ Return the minimum element of a table. The optional argument func specifies a one-argument ordering function. ]]-- function Math.tmin(tab, func) return tmin_max(tab, func, "min") end --[[ Return the maximum element of a table. The optional argument func specifies a one-argument ordering function. ]]-- function Math.tmax(tab, func) return tmin_max(tab, func, "max") end return Math