https://bugs.kde.org/show_bug.cgi?id=359950
Nick Wellnhofer <wellnho...@aevum.de> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |INVALID Status|UNCONFIRMED |RESOLVED --- Comment #4 from Nick Wellnhofer <wellnho...@aevum.de> --- You're correct. Given the statement int comparison = (a == d || a < d || a > d); and two values a and d in extended precision floating point registers that are very close to each other, and equal in double precision, the following could happen: 1. (a == d) is evaluated with the extended precision values in registers, returning false. 2. The values are stored in memory and reloaded, casting them to double precision. The rounded double precision values are now equal. 3. (a < d) and (a > d) both return false. And I think that's exactly what happens under Valgrind. IIUC, Valgrind doesn't support extended precision but before the floating state is saved in double precision, any instruction block still operates with extended precision. -- You are receiving this mail because: You are watching all bug changes.