]> git.sur5r.net Git - i3/i3/commit
Fix floating precision bug
authorPavel Löbl <lobl.pavel@gmail.com>
Sun, 6 May 2012 09:03:17 +0000 (11:03 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Sun, 6 May 2012 12:13:59 +0000 (14:13 +0200)
commitd13ba7ca530c6063e3bab626f6d679c999ec933f
tree81a656b78a9ffbfa11144cf38340360bb4dada87
parent8557b05a2c8e5526fcc8e99c96be7fcca172ab7e
Fix floating precision bug

When calculating coordinates we should multiply at first otherwise
we lose precision when i3 is compiled without sse2 support.

The following code prints "Res1: 348 Res2: 349" when compiled with
-O0 -mno-sse2 and "Res1: 349 Res2: 349" with -O0 -msee2.

Note that -msse2 is default flag on 64bit OSes.

int main() {
  double a = 349.0 / 768;
  double b = 349.0 * 768;
  int res1 = a * 768;
  int res2 = b / 768;
  printf("Res1: %d Res2: %d\n", res1, res2);
  return 0;
}

Thanks guys for helping me to hunt down this one.
src/floating.c