Check equality of math.abs(x) with math.huge.
> function isnan(x) return x~=x end > function isinf(x) return (x+1)==x end Well, there seems to be a problem with the second one : > return 1e16 1e+016 > return isinf(1e16) true