math.ult

Shared

Compares two integers as unsigned values


Syntax

local result = math.ult(
    left,
    right
)

Parameters

TypeNameDescription
intleftFirst integer to compare
intrightSecond integer to compare

Returns

TypeNameDescription
boolresulttrue if left is less than right when both are treated as unsigned integers

Examples

Unsigned comparison of two positive integers
local result = math.ult(3, 5)

engine.print("info", result) -- true
Equal values return false
local result = math.ult(5, 5)

engine.print("info", result) -- false
Larger left side returns false
local result = math.ult(9, 4)

engine.print("info", result) -- false
Negative numbers are treated as large unsigned values
local result = math.ult(1, -1)

engine.print("info", result) -- true
maxinteger is less than -1 in unsigned comparison
local result = math.ult(math.maxinteger, -1)

engine.print("info", result) -- true
Compare two bitmask values as unsigned
local mask_a = 0x7FFFFFFF
local mask_b = 0x80000000

engine.print("info", math.ult(mask_a, mask_b)) -- true
Use ult to implement unsigned sort order
local values = {-1, 0, 1, math.maxinteger, math.mininteger}

table.sort(values, math.ult)

for _, v in ipairs(values) do
    engine.print("info", v)
end

On this page