local function check(a, b)
if a ~= b then
error("check failed with "..tostring(a).." ~= "..tostring(b), 2)
end
end
local nan, one = 0/0, 1
do check(nan<nan, false)
check(nan<=nan, false)
check(nan>nan, false)
check(nan>=nan, false)
check(nan==nan, false)
check(nan~=nan, true)
end
do check(nan<one, false)
check(nan<=one, false)
check(nan>one, false)
check(nan>=one, false)
check(nan==one, false)
check(nan~=one, true)
end
do check(one<nan, false)
check(one<=nan, false)
check(one>nan, false)
check(one>=nan, false)
check(one==nan, false)
check(one~=nan, true)
end
do check(nan<1, false)
check(nan<=1, false)
check(nan>1, false)
check(nan>=1, false)
check(nan==1, false)
check(nan~=1, true)
end
do check(1<nan, false)
check(1<=nan, false)
check(1>nan, false)
check(1>=nan, false)
check(1==nan, false)
check(1~=nan, true)
end
do check(not (nan<nan), true)
check(not (nan<=nan), true)
check(not (nan>nan), true)
check(not (nan>=nan), true)
check(not (nan==nan), true)
check(not (nan~=nan), false)
end
do check(not (nan<one), true)
check(not (nan<=one), true)
check(not (nan>one), true)
check(not (nan>=one), true)
check(not (nan==one), true)
check(not (nan~=one), false)
end
do check(not (one<nan), true)
check(not (one<=nan), true)
check(not (one>nan), true)
check(not (one>=nan), true)
check(not (one==nan), true)
check(not (one~=nan), false)
end
do check(not (nan<1), true)
check(not (nan<=1), true)
check(not (nan>1), true)
check(not (nan>=1), true)
check(not (nan==1), true)
check(not (nan~=1), false)
end
do check(not (1<nan), true)
check(not (1<=nan), true)
check(not (1>nan), true)
check(not (1>=nan), true)
check(not (1==nan), true)
check(not (1~=nan), false)
end