#22887 [Opn->Bgs]: sprintf( "%.2f", 10.75 ); returns "0.00"
| From: | iliaa@php.net | Date: | Fri, 28 Mar 2003 17:34:38 +0000 |
| Subject: | #22887 [Opn->Bgs]: sprintf( "%.2f", 10.75 ); returns "0.00" | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-36659@lists.php.net to get a copy of this message | ||
ID: 22887
Updated by: iliaa@php.net
Reported By: josh at chatgris dot com
-Status: Open
+Status: Bogus
Bug Type: Scripting Engine problem
Operating System: Gentoo Linux /w apache2
PHP Version: 4.3.1
New Comment:
Sorry, but your problem does not imply a bug in PHP itself. For a
list of more appropriate places to ask for help using PHP, please
visit http://www.php.net/support.php as this bug system
is not the
appropriate forum for asking support questions.
Thank you for your interest in PHP.
This is a known bug in gcc 3.2.X with pentium4 optimized code. Not a
PHP issue.
Previous Comments:
------------------------------------------------------------------------
[2003-03-28 11:26:35] jay@php.net
I haven't had any problems on my system using pentium3.
When I came across the problem, I was using pentium4 and I
switched it over to pentium3, so my system is slowly being
converted. (I have so much on this system, I can't
re-emerge everything at once as I need it for work, so I'm
doing it bit by bit.)
Fwiw, my CFLAGS is "-march=pentium3 -O3 -pipe
-fomit-frame-pointer", on a P4 Dell laptop.
Slight correction to previous post: I meant CFLAGS, not
the USE flag in make.conf.
J
------------------------------------------------------------------------
[2003-03-28 11:23:12] josh at chatgris dot com
Thank you for the suggestion!!
I am going to try and compile my entire gentoo system from
scratch using mcpu=i686 (I feel kinda iffy using
march=pentium3 on a pentium4).
I'll respond as soon as I have new information.
Thanks again!!!!
Josh.
------------------------------------------------------------------------
[2003-03-28 11:16:00] jay@php.net
This is most likely being caused by over-optimization when
compiling. I had a similar problem on my gentoo box, and
the problem was traced back to over-optimizing when
compiling glibc. (var_dump() was printing some weird
floats, and I believe this problem is similar, as both use
modf() at some point.)
Basically, tone down the optimizations a bit. If you
compile glibc with CFLAGS along the lines of
"-march=pentium4 -O3...", modf() starts dying. The
solution (for gentoo, at least) is to modify your USE flag
in make.conf to use -march=pentium3 if you're using
pentium4 and re-emerge glibc, then recompile PHP.
gcc has problems with march pentium4 spitting out bad
instructions, so you should stay away from it, even if
you're actually on a Pentium 4. Use march=pentium3 or
mcpu=i686 instead. There are threads on the gentoo forums
about this, and newer versions of portage mention it in
the make.conf comments.
If this is indeed the problem, it affects python, too,
fwiw.
J
------------------------------------------------------------------------
[2003-03-28 10:27:01] josh at chatgris dot com
I believe the problem is related.. For example, we are
both using Pentium$ CPU's..
sprintf works fine on my Athlon, but not my pentium4...
In addition, his example produced the same output on my
machine. and I've tried putting the float in a variable,
float as a string it alwasy returns the same so I am
pretty sure that the problem is within sprintf..
Could anyone tell me where the sprintf code is in php? I
don't mind messing with it and trying to figure out what
is wrong...
Josh.
------------------------------------------------------------------------
[2003-03-28 04:41:25] tal@php.net
Works fine here (Gentoo with glibc 2.3.2), using php5 cvs from two days
ago (cli).
-tal
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/22887
--
Edit this bug report at http://bugs.php.net/?id=22887&edit=1