ID: 41108 Comment by: ljbuesch at purdue dot edu Reported By: jack dot nerad at comcast dot net Status: Verified Bug Type: Documentation problem PHP Version: Irrelevant New Comment:
I apologize for not taking a better look at this documentation bug. It appears that from bug#25751 was the first one to report that you cannot use negative bases in pow(). This is because it in the bug report, it would have resulted in a complex number, which PHP (at that time) did not support. I am unsure if PHP supports complex numbers at this time. In the bug report, it had shown a bogus result for the computation. In the comments for math.c, version 1.69 it said that for PHP <=4.0.6 it would return bogus results for the Windows platform. Since the bug report did not include a version number, I would assume that it was using that version. In bug#40729, it was shown that PHP can do negative bases in an example, and they assumed that it was a mistake made in the the pow() documentation, and that what they meant was that it couldnt do negative exponents (an error in the fix for #25751). The documentation was then changed to say it cannot handle negative powers. I am not sure how you wanted the examples to be commented though, so I did what I thought was best. ### Eclipse Workspace Patch 1.0 #P PHPDoc Index: en/reference/math/functions/pow.xml =================================================================== RCS file: /repository/phpdoc/en/reference/math/functions/pow.xml,v retrieving revision 1.11 diff -u -r1.11 pow.xml --- en/reference/math/functions/pow.xml 31 Mar 2007 19:18:23 -0000 1.11 +++ en/reference/math/functions/pow.xml 19 Apr 2007 02:24:46 -0000 @@ -16,11 +16,6 @@ Returns <parameter>base</parameter> raised to the power of <parameter>exp</parameter>. </para> - <note> - <para> - PHP cannot handle negative <parameter>exp</parameter>s. - </para> - </note> <warning> <para> In PHP 4.0.6 and earlier <function>pow</function> always returned @@ -76,7 +71,8 @@ <entry>Since 4.0.6</entry> <entry> The function will now return <type>integer</type> results if possible, - before this it always returned a <type>float</type> result. + before this it always returned a <type>float</type> result. For older + versions, you may receive a bogus result for complex numbers. </entry> </row> <row> @@ -104,8 +100,8 @@ echo pow(-1, 20); // 1 echo pow(0, 0); // 1 -echo pow(-1, 5.5); // error - +echo pow(-1, 5.5); // PHP >4.0.6 NAN +echo pow(-1, 5.5); // PHP <=4.0.6 1.#IND ?> ]]> </programlisting> Previous Comments: ------------------------------------------------------------------------ [2007-04-18 21:46:24] [EMAIL PROTECTED] Looks like php 4.2.0 introduced better pow() support (the whole function was re-done at revision 1.70 (just before 4.2.0rc1 release). ------------------------------------------------------------------------ [2007-04-18 21:32:27] [EMAIL PROTECTED] Thank you guys for the bug report and patch, it's the right idea but the php manual has change logs for functions. Tasks for tackling this bug report: - Find out exactly which PHP version(s) this behavior changed - Add an entry to the changelog role in math/functions/pow.xml - Add an example to these docs using a negative exponent, and if appropriate add version info within the example comments - Decide if other functions were affected by this change in the php sources (See also: NEWS, php-src/) - If a 'fairly recent' change, add a nice example that works in all versions - Clean user notes A good starting place: - http://cvs.php.net/viewvc.cgi/php-src/ext/standard/math.c?view=log - http://php.net/manual/en/function.pow ------------------------------------------------------------------------ [2007-04-18 20:23:24] ljbuesch at purdue dot edu ### Eclipse Workspace Patch 1.0 #P PHPDoc Index: en/reference/math/functions/pow.xml =================================================================== RCS file: /repository/phpdoc/en/reference/math/functions/pow.xml,v retrieving revision 1.11 diff -u -r1.11 pow.xml --- en/reference/math/functions/pow.xml 31 Mar 2007 19:18:23 -0000 1.11 +++ en/reference/math/functions/pow.xml 18 Apr 2007 20:18:37 -0000 @@ -16,11 +16,6 @@ Returns <parameter>base</parameter> raised to the power of <parameter>exp</parameter>. </para> - <note> - <para> - PHP cannot handle negative <parameter>exp</parameter>s. - </para> - </note> <warning> <para> In PHP 4.0.6 and earlier <function>pow</function> always returned ------------------------------------------------------------------------ [2007-04-18 06:09:11] [EMAIL PROTECTED] Made it a doc problem, which it is. It might be that in the past this negative exponent did not work though. ------------------------------------------------------------------------ [2007-04-18 00:36:25] jack dot nerad at comcast dot net Now that's turnaround time! I didn't even have to upgrade to the latest version! :) Actually, I was looking for how to do exponentiation in the docs, found pow(), and read: "Note: PHP cannot handle negative exps." at http://us.php.net/manual/en/function.pow.php There's pretty much only one way to read that, I think, so I didn't bother to look for features explicitly ruled out by the docs. In addition, there are a bunch of notes with hacks on how to get around the no negative exponents 'feature?' (shrug) Close this feature request, or whatever. Maybe change it to a bug in the docs? ------------------------------------------------------------------------ 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/41108 -- Edit this bug report at http://bugs.php.net/?id=41108&edit=1