0x1p63 == 0x1 * 2**63
in reply to Re^9: supporting quads on 32 bit Perl
in thread supporting quads on 32 bit Perl
I am not sure that this constant can be expressed in a portable way in base 10 as the atof function used internally by the compiler may return a lesser value due to internal rounding errors.
There are other ways to generate this numbers precisely. For instance, 0x1p64 can be generated as 0x1p32 * 0x1p32 (any atof can parse 0x1p32 expressed in decimal precisely).
Anyway, I have just added some conditional code for MS compilers that uses a different approach for limit checking not involving those constants. The new code is available from the GitHub repository.
I have not tested the code myself as I don't have any system with that compiler, so will apreciate testing reports.