Re: Re: power operator (again)
| From: | Tjerk Meesters | Date: | Fri, 20 Dec 2013 00:27:34 +0000 |
| Subject: | Re: Re: power operator (again) | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-70778@lists.php.net to get a copy of this message | ||
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