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.

Reply via email to