Re: Re: power operator (again)

From: 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

« previous php.internals (#70778) next »