Fix doxygen warnings for ETL sources.
[synfig.git] / ETL / trunk / ETL / _misc.h
index 33d02b3..a41e40d 100644 (file)
@@ -1,7 +1,7 @@
 /*! ========================================================================
 ** Extended Template and Library
 ** Misc
-** $Id: _misc.h,v 1.1.1.1 2005/01/04 01:31:47 darco Exp $
+** $Id$
 **
 ** Copyright (c) 2002 Robert B. Quattlebaum Jr.
 **
@@ -71,11 +71,21 @@ binary_find(I begin, I end, const T& value)
 #endif
 }
 
-/*!    \fixme Isn't there some x86 FPU instruction for quickly
-**     converting a float to a rounded integer? It's worth
-**     looking into at some point... */
-inline int round_to_int(const float x) { return static_cast<int>(x+0.5f); }
-inline int round_to_int(const double x) { return static_cast<int>(x+0.5); }
+inline int round_to_int(const float x) {
+       /*!     \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<int>(x+0.5f);                     // <-- (a) fast, but rounds -1.333 to 0!
+       // return static_cast<int>(rintf(x));           // <-- (b) slow, but correct
+    if (x>=0) return static_cast<int>(x + 0.5);        // <-- slower than (a), but correct, and faster than (b)
+    else      return static_cast<int>(x - 0.5);
+}
+inline int round_to_int(const double x) {
+       // return static_cast<int>(x+0.5);
+       // return static_cast<int>(rint(x));
+       if (x>=0) return static_cast<int>(x + 0.5);
+    else      return static_cast<int>(x - 0.5);
+}
 
 inline int ceil_to_int(const float x) { return static_cast<int>(ceil(x)); }
 inline int ceil_to_int(const double x) { return static_cast<int>(ceil(x)); }