Re: Re: power operator (again)
| From: | Tjerk Meesters | Date: | Fri, 20 Dec 2013 01:27:25 +0000 |
| Subject: | Re: Re: power operator (again) | ||
| References: | 1 2 3 4 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-70781@lists.php.net to get a copy of this message | ||
On Fri, Dec 20, 2013 at 9:22 AM, Kris Craig <kris.craig@gmail.com> wrote:
>
>
>
> On Thu, Dec 19, 2013 at 4:27 PM, Tjerk Meesters <tjerk.meesters@gmail.com>wrote:
>
>>
>>
>>
>> On Fri, Dec 20, 2013 at 5:50 AM, Kris Craig <kris.craig@gmail.com> wrote:
>>
>>> On Thu, Dec 19, 2013 at 4:33 AM, Daniel Lowrey <rdlowrey@gmail.com>
>>> wrote:
>>>
>>> > > Thanks for all your effort! Unfortunately, since there's no option
>>> for
>>> > > negative numbers to intuitively square to positive outcomes, my vote
>>> is
>>> > > still No. I understand and respect your reasoning even though I do
>>> not
>>> > > agree with it.
>>>
>>
>> Intuition can (by definition) not coexist with mathematical reasoning, so
>> it seems that you're talking about experience here.
>>
>> Experience may come from:
>>
>> a) prior mathematical education
>>
>> Assuming a sane teacher, you would have been taught to write (-3) ^ 2 on
>> paper if you mean to square negative 3.
>>
>>
>> b) prior use of mathematical expressions in other programming languages
>>
>> 17 out of 22 programming languages that I have investigated are in favour
>> of a higher precedence for the power operation.
>>
>>
>> >
>>> > To me this is not a question of "intuitive" vs. "unintuitive"
>>> > ... -3^2
>>> = -9
>>> > is how the preponderance of credible resources evaluate the
>>> expression. As
>>> > far as I can tell voting "no" on this basis is equivalent to me
>>> claiming
>>> > the earth is flat because it better fits my world-view.
>>>
>>>
>>> That's a faulty analogy. In mathematics, the square of any number,
>>> positive or negative, yields a positive result. Any scientific or
>>> graphing
>>> calculator will match that behavior. I did sqr(-3) in the Windows
>>> Calculator just now and it outputted 9, not -9.
>>>
>>
>> Likewise, both
pow(-3, 2) as well as (-3)
>> ** 2 yield 9. I'm not
>> arguing that an even power of a negative base should yield a negative
>> outcome; I'm arguing that what you deem to be intuitive is based on a
>> misconception.
>>
>>
>>>
>>> From http://en.wikipedia.org/wiki/Square_(algebra):
>>>
>>> "One of the important properties of squaring, for numbers as well as in
>>> many other mathematical systems, is that (for all numbers x), the square
>>> of
>>> x is the same as the square of its additive inverse -x. That is, the
>>> square
>>> function satisfies the identity x2 = (-x)2. This can also be expressed by
>>> saying that the squaring function is an even function."
>>>
>>
>> See what they're doing there? They disambiguate the expression to
>> (-x)2, which is the same as (-3) **
>> 2 or (-$x) ** 2.
>>
>>
>>> Now, I understand why some programming languages behave differently from
>>> the algebraic standard. I don't agree with it, but I understand their
>>> reasoning. Claiming that "the squaring function should always be an even
>>> function" is the equivalent of saying that the Earth is flat is faulty
>>> because it completely ignores the facts that support that argument, just
>>> as
>>> it would be faulty for me to ignore the facts that support yours.
>>>
>>
>> Not just some, more than 75% of the languages I've investigated do that.
>> Curiously, Visual Basic does it this way, whereas Excel doesn't :) I've
>> listed them here:
>> https://wiki.php.net/rfc/pow-operator#discussion
>>
>>
>>> I believe that, especially for a KISS language like PHP, our top priority
>>> with math operators should be to match arithmetic laws as closely and as
>>> intuitively as possible. The average PHP developer is going to do -3 **
>>> 2
>>> and expect a result of 9, not -9, and rightly so I think.
>>>
>>
>> And arithmetic law states that -3 ** 2 should be
>> interpreted as `-(3 **
>> 2)`. See also:
>>
>> http://en.wikipedia.org/wiki/Order_of_operations#Exceptions_to_the_standard
>>
>> It's only in programming languages that this behaviour may be different
>> due to historical reasons or what not.
>>
>>
>>>
>>> You're free to disagree and you certainly have valid reasons for doing
>>> so,
>>> but please try to keep in mind that there is a valid argument on the
>>> other
>>> side of this, as well.
>>>
>>
>> Your case seems to promote following a minority of programming languages
>> that do this, though.
>>
>>
>>>
>>> --Kris
>>>
>>
>>
>>
>> --
>> --
>> Tjerk
>>
>
> So just to tie it all together (and please correct me if I'm mistaken),
> your argument is basically that:
>
> -x is actually -1 * x. Therefore, -3 ** 2 would actually be -1 * 3 ** 2.
> Due to order of operations, that comes out to -1 * 9 == -9.
>
I suppose you could look at it that way; the minus here is treated as an
operator rather than something that belongs to the number it's next to.
>
> But now, let's look at another scenario:
>
> <?php
>
> $x = -3; // Or $x = -1 * 3, if you wish.
>
> $y = $x ** 2;
>
> ?>
>
> What would be the value of $y under this RFC?
>
That would obviously be 9, it can't be anything else.
>
> --Kris
>
>
--
--
Tjerk