iliaa Fri Aug 8 19:40:44 2003 EDT
Modified files:
/php-src/ext/standard math.c
Log:
Avoid a round() bug that occurs due to over optimization of C code by gcc.
This bug was confirmed across multiple systems with gcc 2.95.3 & 3.X+
Index: php-src/ext/standard/math.c
diff -u php-src/ext/standard/math.c:1.104 php-src/ext/standard/math.c:1.105
--- php-src/ext/standard/math.c:1.104 Tue Jun 10 16:03:38 2003
+++ php-src/ext/standard/math.c Fri Aug 8 19:40:44 2003
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: math.c,v 1.104 2003/06/10 20:03:38 imajes Exp $ */
+/* $Id: math.c,v 1.105 2003/08/08 23:40:44 iliaa Exp $ */
#include "php.h"
#include "php_math.h"
@@ -32,6 +32,8 @@
#define M_PI 3.14159265358979323846
#endif
+#define PHP_ROUND_FUZZ 0.50000000001
+
/* {{{ proto int abs(int number)
Return the absolute value of the number */
@@ -143,9 +145,9 @@
return_val *= f;
if (return_val >= 0.0)
- return_val = floor(return_val + 0.5);
+ return_val = floor(return_val + PHP_ROUND_FUZZ);
else
- return_val = ceil(return_val - 0.5);
+ return_val = ceil(return_val - PHP_ROUND_FUZZ);
return_val /= f;
RETURN_DOUBLE(return_val);
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php