Re: Patches for Review

From: Date: Sun, 04 Mar 2012 13:52:14 +0000
Subject: Re: Patches for Review
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-58570@lists.php.net to get a copy of this message
On Sun, 04 Mar 2012 14:29:49 +0100, Anthony Ferrara <ircmaxell@gmail.com> wrote:
I had messaged about these patches before, but with the 5.4 release process happening I think it slipped through the cracks. I have 3 patches that are ready for inclusion...
[...]
https://bugs.php.net/bug.php?id=60789 Bringing pow() inline with docs in that it will attempt to return an integer (by casting one or more of the arguments to int) if possible. This fixes a precision loss that can occur with float arguments that are exactly integers on 64 bit platforms. [...]
This doesn't seem right. It's overly clever. It's like saying that 4.0 + 1 should return int(5) and not float(5.). Or perhaps a closer analogy would be: if we're in a 64-bit platform (only then can integers have a larger precision than doubles); if one of the operands is exactly an integer; if the other operand is a float exactly representable as an integer (perhaps a large power of 2), but its accuracy is negative (where accuracy is the 15.9546 - log10(abs(x)), or, informally, the effective number of digits to the right of the decimal point); if the result of the sum is exactly representable as a 64-bit integer; then return such integer. It's easy to see these sort of tricks would have to be applied all over the place (additions, products, and all other mathematical operations). In sum, I think the rule that if a mathematical operation involves a float, the result should be a float ought to be kept. -- Gustavo Lopes

« previous php.internals (#58570) next »