On Saturday 16 July 2011 19:03:51 Daniel Murphy wrote: > "Jonathan M Davis" <[email protected]> wrote in message > news:[email protected]... > > > Under what circumstances would a comparison of floating point values > > return > > true for is but not ==? If I understand corcectly, is does a bit-by-bit > > comparison. So, I would expect that if is returns true, == would return > > true. > > However, that does not seem to always be the case. Does anyone know why > > that > > would be? > > > > In particular, I'm trying to write a function for swapping the > > endianness > > of > > floating point values, and while it seems to be generally be returning > > true for > > is, == keeps failing. So, it sounds like I have two floating point > > values > > which > > have the exact same bits (since is succeeds) but which aren't equal > > according > > to ==. I don't understand what's going on at all. Does anyone have a > > clue > > what > > might be happening? > > > > - Jonathan M Davis > > As of the last release, 'is' for floating point types is broken. (before it > just did the same as ==) > At compile time, a is b will be true if a and b have the same bit pattern, > or if a and b are both nans. > At run time, a is b will return true if they have the same bit pattern only, > but may sometimes return false on platforms other than windows as it > includes the padding bytes in the comparison.
Hmm. Good to know. But assuming that two floating point values have the same bit pattern, shouldn't == return true for them? So, if == is failing, then two floating point values aren't identical, correct? - Jonathan M Davis
