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