** Check whether integer 'i' is less than float 'f'. If 'i' has an ** exact representation as a float ('l_intfitsf'), compare numbers as ** floats. Otherwise, use the equivalence 'i < f <=> i < ceil(f)'. ** If 'ceil(f)' is out of integer range, either 'f' is greater than ** all integers or less than all integers. ** (The test with 'l_intfitsf' is only for performance; the else ** case is correct f
| 410 | ** When 'f' is NaN, comparisons must result in false. |
| 411 | */ |
| 412 | static int LTintfloat (lua_Integer i, lua_Number f) { |
| 413 | if (l_intfitsf(i)) |
| 414 | return luai_numlt(cast_num(i), f); /* compare them as floats */ |
| 415 | else { /* i < f <=> i < ceil(f) */ |
| 416 | lua_Integer fi; |
| 417 | if (luaV_flttointeger(f, &fi, F2Iceil)) /* fi = ceil(f) */ |
| 418 | return i < fi; /* compare them as integers */ |
| 419 | else /* 'f' is either greater or less than all integers */ |
| 420 | return f > 0; /* greater? */ |
| 421 | } |
| 422 | } |
| 423 | |
| 424 | |
| 425 | /* |
no test coverage detected