For a long time on the most popular platform, Intel 32-bit, double wasn't IEEE754 64-bit float by default. It was 80-bit internally, causing weird discrepancies. A description: https://stackoverflow.com/questions/3206101/extended-80-bit-...
(Entertainingly, all this template machinery doesn't seem to detect this issue, making it a bit of a waste of time)