ID:               44092
 Updated by:       [EMAIL PROTECTED]
-Summary:          exp() function returns incorrect result if passed hex
 Reported By:      [EMAIL PROTECTED]
 Status:           Feedback
 Bug Type:         *Math Functions
 Operating System: Linux 32
 PHP Version:      5.3CVS-2008-02-10 (CVS)
 New Comment:

Felipe - I think they should probably all change. I'm happy to work
through one at a time (or maybe you'd like to fix some?), I don't really
want to do them all in one update. I used exp() to make sure that I was
doing the right thing. Quite a few of the tests would also need changing
(because I worked around this for a while). I think sin() and cos() at
least are wrong. I've also got bugs pending in number_format() and
hypot() - which *might* be the same issue.

Zoe


Previous Comments:
------------------------------------------------------------------------

[2008-02-11 16:07:30] [EMAIL PROTECTED]

Hello Ilia, 
in this case, should all math functions in ext/standard/ use the new
parsing parameter, no? Only fix the exp() sounds wrong to me...

------------------------------------------------------------------------

[2008-02-11 14:23:35] [EMAIL PROTECTED]

Go ahead and apply the patch to the code & the test.

------------------------------------------------------------------------

[2008-02-10 17:27:40] [EMAIL PROTECTED]

If this patch goes in, the test exp_error.phpt will need a small change
too. I'm happy to do that.

------------------------------------------------------------------------

[2008-02-10 17:20:21] [EMAIL PROTECTED]

Description:
------------
In PHP5.3 is a hex string is passed to exp() it is interpreted as 0 and

the result of exp(0) = 1 is returned.

In PHP6 the hex string is correctly interpreted and the corrcet value
is returned by exp().

I believe the PHP6 behaviour is preferred.

This patch http://www.pastebin.ca/898812 corrects the PHP5.3 behaviour.

Reproduce code:
---------------
--TEST--
Test exp() - pass exp hex string 
--INI--
precision=14
--FILE--
<?php
        $value= "0x5F";
        $res = exp($value);
        var_dump($res);
?>
--EXPECTF--
float(1.811239082889E+41)


Expected result:
----------------
See above

Actual result:
--------------
1


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=44092&edit=1

Reply via email to