X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=ETL%2Ftrunk%2FETL%2F_misc.h;h=a41e40de5d2149bb626a17963516cd6fa3999b38;hb=e0447b01caa3a223b6ea2ec83abdbc42fb86e4ac;hp=1fdcef90e55e1b391161d5b047928db233390a6e;hpb=ac681f880251765bcd7ac3b244863895b3b8eef3;p=synfig.git diff --git a/ETL/trunk/ETL/_misc.h b/ETL/trunk/ETL/_misc.h index 1fdcef9..a41e40d 100644 --- a/ETL/trunk/ETL/_misc.h +++ b/ETL/trunk/ETL/_misc.h @@ -72,19 +72,19 @@ binary_find(I begin, I end, const T& value) } inline int round_to_int(const float x) { - /*! \fixme Isn't there some x86 FPU instruction for quickly + /*! \todo Isn't there some x86 FPU instruction for quickly ** converting a float to a rounded integer? It's worth ** looking into at some point... */ - // return static_cast(x+0.5f); // <-- (a) fast, but rounds -1.333 to 0! - // return static_cast(rintf(x)); // <-- (b) slow, but correct - if (x>=0) return (int) (x + 0.5); // <-- slower than (a), but correct, and faster than (b) - else return (int) (x - 0.5); + // return static_cast(x+0.5f); // <-- (a) fast, but rounds -1.333 to 0! + // return static_cast(rintf(x)); // <-- (b) slow, but correct + if (x>=0) return static_cast(x + 0.5); // <-- slower than (a), but correct, and faster than (b) + else return static_cast(x - 0.5); } inline int round_to_int(const double x) { // return static_cast(x+0.5); // return static_cast(rint(x)); - if (x>=0) return (int) (x + 0.5); - else return (int) (x - 0.5); + if (x>=0) return static_cast(x + 0.5); + else return static_cast(x - 0.5); } inline int ceil_to_int(const float x) { return static_cast(ceil(x)); }