On 19 January 2017 at 14:47, Eric Blake <[email protected]> wrote: > On 01/18/2017 11:14 PM, Bharata B Rao wrote: >> round-to-odd mode is explained as under: >> >> Let Z be the intermediate arithmetic result or the operand of a convert >> operation. If Z can be represented exactly in the target format, the >> result is Z. Otherwise the result is either Z1 or Z2 whichever is odd. >> Here Z1 and Z2 are the next larger and smaller numbers representable >> in the target format respectively. > > IEEE 854 and thus POSIX <float.h> specifies round-to-zero, > round-to-pos-inf, round-to-neg-inf, and round-to-even. It sounds like > round-to-odd is similar to round-to-even, only that the ties are broken > in the opposite direction.
No, round-to-even does "round ties to even" -- the rounding is to the closest representable number, and only if the two surrounding numbers are both equally near do we pick the even one. round-to-odd is "always round to the odd number, even if that's much further from the infinitely-precise result than the even number is". (This is also sometimes called von Neumann rounding or sticky rounding -- the motivation is that you can for instance do 64bit -> 32bit -> 16bit conversions in two steps without double rounding errors if you do the first conversion with round-to-odd.) thanks -- PMM
