Improve our detection of floating-point that are integers
Turns out that we were relying on undefined behaviour when doing
(uint64_t)fabs(val) == fabs(val)
This problem was noted when running our test data on an AArch64 build.
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>