this post was submitted on 03 Dec 2023
404 points (99.5% liked)
196
16087 readers
1773 users here now
Be sure to follow the rule before you head out.
Rule: You must post before you leave.
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Different compilers have robbed me of all trust in order-of-operations. If there's any possibility of ambiguity - it's going in parentheses. If something's fucky and I can't tell where, well, better parenthesize my equations, just in case.
This is best practice since there is no standard order of operations across languages. It's an easy place for bugs to sneak in, and it takes a non-insignificant amount of time to debug.
Yes there is. The rules of Maths are universal.
But that's because of programmers not checking the rules of Maths first.
This is the way. It's an intentionally ambiguously written problem to cause this issue depending on how and where you learned order of operations to cause a fight.
#MathsIsNeverAmbiguous
The order of operations are the same everywhere. The fights arise from people who don't remember them.
Please see this section of Wikipedia on the order of operations.
The "math" itself might not be ambiguous, but how we write it down absolutely can be. This is why you don't see actual mathematicians arguing over which one of these calculators is correct - it is not either calculator being wrong, it is a poorly constructed equation.
As for order of operations, they are "meant to be" the same everywhere, but they are taught differently. US - PEMDAS vs UK - BODMAS (notice division and multiplication swapped places). Now, they will say they are both given equal priority, but you can't actually do all of the multiplication and division at one time. Some are taught to simply work left to right, while others are taught to do multiplication first; but we are all taught to use parentheses correctly to eliminate ambiguity.
That section is about multiplication, and there isn't any multiplication in this expression.
Not in this case it isn't. It has been written in a way which obeys all the rules of Maths.
But I do! I see University lecturers - who have forgotten their high school Maths rules (which is where this topic is taught) - arguing about it.
Yes, it is. The app written by the programmer is ignoring The Distributive Law (most likely because the programmer has forgotten it and not bothered to check his Maths is correct first).
Those aren't the rules. They are mnemonics to help you remember the rules
Yes, that's right, because they have equal precedence and it literally doesn't matter which way around you do them.
Yes, you can!
Yes, that's because that's the easy way to obey the actual rule of Left associativity.
Correct! So 2(2+2) unambiguously has to be done before the division.
Just out of curiosity, what is the first 2 doing in "2(2+2)"...? What are you doing with it? Possibly multiplying it with something else?
Interesting.
I really hope you aren't actually a math teacher, because I feel bad for your students being taught so poorly by someone that barely has a middle school understanding of math. And for the record, I doubt anyone is going to accept links to your blog as proof that you are correct.
Distributing it, as per The Distributive Law. Even Khan Academy makes sure to not call it "multiplication", because that refers literally to multiplication signs., which, as I said, there aren't any in this expression - only brackets and division (and addition within the brackets).
My students are doing well thanks.
You mean the blog that has Maths text book references, historical Maths documents, and proofs? You know proofs are always true, right? But thanks for the ad hominem anyway, instead of any actual proof or evidence to support your own claims.
Different programmers.
Unfortunately some places don't care where you've put brackets, they'll just go ahead and change it anyway. Welcome to my quest to educate.
That's the same ambiguity, numbnuts. Your added parentheses do nothing. If you wanted to express the value 8 over the value 2*(1+3), you should write 8/(2*(1+3)). That is how you eliminate other valid interpretations.
As illustration of why there are competing valid interpretations: what human being is going to read "8/2 * (1+3)" as anything but 4*4? Those spaces create semantic separation. But obviously most calculators don't have a spacebar, any more than they have to ability to draw a big horizontal line and place 2(1+3) underneath it. Ambiguous syntax for expressing mathematics is not some foundation-shaking contradiction. It's a consequence of limitations in how we express even the most concrete ideas.
"The rules of math" you keep spamming about are not mathematical proofs - they're arbitrary decisions made by individuals and organizations. In many cases the opposite choice would be equally sensible. Unlike the innate equivalence of multiplication and division, where dividing by two and multiplying by half are interchangeable. Same with addition and subtraction.
Do you want to argue that 8 - (2) + (1+3) should be 2?
So you're saying Brackets aren't first in order of operations? What do you think brackets are for?
or, more correctly 8/2(1+3), as per the rules of Maths (we never write unnecessary brackets).
There aren't any other valid interpretations. #MathsIsNeverAmbiguous
Yes, that's right, but 8/2x(1+3) isn't the same as 8/2(1+3). That's the mistake that a lot of people make - disobeying The Distributive Law.
...have no meaning in Maths. The thing that separates the Terms, in your example, is the multiply. i.e. an operator.
...because it's literally meaningless in Maths.
Some of them can actually.
You should've read further on then. Here's the proof.
No, they're a natural consequence of the way we have defined operators. e.g. 2x3=2+2+2, therefore we have to do multiplication before addition.
2+2x3=2+6=8 the correct answer, but if I do addition first...
2+2x3=4x3=12, which is the wrong answer. How is getting the wrong answer "equally sensible" as getting the right answer?
No, why would I do that? 8-(2+1+3) does equal 2 though.
You are a smug idiot.
8/2(1+3) is exactly the sort of thing programs love to misinterpret. I don't give a shit what "rules of math" you insist are super duper universal, or what "we" do. They are not reliable. Clear parentheses are. Insisting you're correct is not relevant. You stumbled into a pragmatic issue with grand philosophical assurances that aren't even sound.
... no, that's fucking stupid.
Hence the word "most." Your cocksure months-late manic episode across this thread is the most "akshually" thing I have ever witnessed.
You dense bastard! That's a category error! You can't prove that 2(3) means something different from 2*3. It's only convention! It's a thing we made up, unlike actual mathematical proofs, which are laws of the universe. If everyone disagreed with that then it would stop being true. That's not a sentence you can say about anything that has a proof, instead of some evidence.
You keep talking about "rules of math" when what you mean is rules of this particular notation. Reverse Polish Notation doesn't have this issue, at all. Distribution is not even possible in RPN. So however important you think it might be... it's not universal.
THAT'S THE POINT, NUMBNUTS. It's semantic separation that human beings will read in for context. Which they need, because some grammars have ambiguities, which can only be resolved by convention. Like how -6 is a number, and you can add or multiply -6, but 1 + -6 looks kinda weird, -6(3) is fine, and (3) -6 is asking for trouble.
The convention overwhelmingly used in computation is that parentheses are resolved first. Nothing is distributed over them - they are evaluated, and then used. In exactly the same way that multiplication can be treated as repeated addition, operations on parentheticals are treated as operations on equations reduced to scalars. It doesn't fucking mean anything, to say 8/2*(1+3) is different from 8/2(1+3), because in the notation used by coders, they both become 8/2*4.
You might as well barge in pick a fight with N=N+1.
That's your colloquialism for Maths teachers. Ok, got it.
Programs, written by programmers, who have forgotten the rules of Maths.
So you're saying the rules of Maths are stupid. Got it.
No, it's a rule of Maths - it's literally the opposite operation to factorising.
Nothing in Maths is made up. It's based on our observations of how things work.
Now you're getting it.
...which is Maths.
Neither does infix notation. All notations have to obey the rules of Maths, since the rules of Maths are universal.
Second hit in my Google results...
It's -3 - where's the trouble?
Welcome to why almost every single e-calculator is wrong (as opposed to handheld calculators) - MathGPT gets it right.
The notation and syntax of how we express that, is made-up. There's multiple options. There's disagreements. Fuck me sideways, you are a teacher, and you can't figure out how being off-topic works?
Evidently not, as you flip between 'this particular notation is the notation!' to 'of course other notations exist' and suffer zero cognitive dissonance. By capital-M "Maths," do you mean the notation on paper, or the underlying laws-of-reality stuff? It depends! It's ambiguous and requires context, or maybe you're just factually wrong at least one of those times, and either way, that means it's plainly not THE SAME KIND OF THING as the laws-of-reality stuff.
It's a category error. You can prove that the word prove isn't spelled proove, for some reason, but the heavens would not bend the other direction if that changed. We could swap square braces and parenthesis and nothing would be different. We could use the glyph "&" instead of "7." These details are mutable and completely fucking arbitrary. But then & - 6 = 1, and you could never proove otherwise.
Shows B being subtracted from A before that value is multiplied by C. It's not distribution. It's evaluating the parenthetical.
The fact it's 3 and -6, not 3 - 6. Which is why I explicitly mentioned that -6 was a number, and used two other examples with -6. I wasn't just making conversation. Jesus fucking Christ, a state trusts you with the education of children.
According to the textbook you're now screenshotting at people, A(B) and (B)A are both correct - yes? They're both valid? And spaces have no impact on an equation? And writing equations like -6 + 1 are fine, instead of (-6) + 1, since you don't want needless parentheses?
The notation for division in some countries is the obelus, in other countries it's a colon. Whatever country you're in, the notation for that country is the notation for division (be it an obelus or a colon).
Both! Whatever notation your country uses, all the rules for Maths and use of that Maths notation are defined.
No, it's not.
And Distribution applies to brackets/parentheses where they have a coefficient. In other words, same same.
You didn't put a comma between 3 and -6, so no, it's not 3 and -6, it's 3-6. That's what you wrote, that's what it is.
Related - have you noticed how children never get this wrong? It's only adults who've forgotten the rules of Maths who get it wrong.
Yes (though the latter is unconventional), yes (though the latter is unconventional), yes, yes (though unconventional - 1-6 is the conventional way to write that), yes, yes.
Again pointing straight at RPN: does the colon go between the operands, or after them? That too is notation. That too is negotiable.
The parts of mathematics that are eternal and discovered are separate from the parts that are arbitrary and invented. We are talking almost exclusively about the latter.
Do you read the things you write?!
No.
What?
No!
Do you even know what your argument is?
The central point you spammed a dozen people with, here in this thread from last year, is an insistence that multiplying by a parenthetical is different from distribution. You explicitly said 2(3+1) and 2*(3+1) are not the same thing. So when your hot second of Google knowledge shows (3+1), *2, converted to RPN, you do not get to claim that's the same thing as distribution, goddammit!
No, dumbass, (3) -6 is the quantities 3 and -6 in the format (A)B. A format you go on to say is fine with zero reflection or recognition, because you're experiencing this conversation one sentence at a time and putting absolutely zero thought into context or meaning.
I fucking hated teachers like you. You're not listening. You're just preaching.
Ok, let's tweak it (I've practically never used RPN, but only took me a couple of minutes of research to work it out)...
1/2x3 same as 1 2 ÷ 3 x
1/2(3) same as 1 2 3 x ÷
...and to bring it back to the original question...
8/2x(2+2)
8/2(2+2)
Learn something new every day, :-) and took me no time at all to debunk your claim that it's not possible in RPN.
And what do you do with these "quantities"? Multiply them? If so then it's exactly the same as A(B). If you're talking about something else then tell me what you're talking about.
I managed to work out how to do distribution in RPN, something you claimed couldn't be done, so who's the one giving zero thought?
I'm talking about how you said (A)B for A=3 B=-6 equals -3. By all means, tell me it's because you read it as 3 - 6, because that's my fucking point. The math is immutable. The syntax can be ambiguous.
You don't understand the claim. No shit RPN can perform the individual steps of working through (A+B)C. But that equation does not exist in RPN. If you insist even (A+B)*C is a different equation, then obviously AC*BC*+ is a different equation. You can do the math for distribution, using RPN, but the concept of distribution does not exist within RPN.
You can't have rules about parentheses in a notation that does not have parentheses.
What you did is only equivalent. In the exact same way that evaluating a parenthetical gets the same result as distribution. Because that part is math, not notation. And it doesn't matter if you do the multiplication using repeated addition, or the Russian peasant method, or floating point, or whateverthefuck. The math doesn't change... but many competing methods are equally valid.
No, that's not what I said, since that's not what you said. You didn't write (A)B where A=3 and B=-6, you wrote (3)-6, which is 3-6 (the brackets are redundant as they are 2 terms separated by an operator), which is -3. If you intended this to be interpreted as a single term then you should've written (3)(-6), which is -18. Alternatively, if you had written (3)6, that would be equal to 18, but you wrote (3)-6, which is 2 terms separated by a minus. You wrote (A)-B, not (A)B (or (A)(B)), and so I read it as (A)-B.
No, it's not. Now that I know what you mean, you just failed to write it the way you apparently intended - you didn't follow the syntax rules for multiplying by a negative.
So what you're really saying, as far as I can tell, is brackets themselves don't exist in RPN.
Except when it doesn't, which is my original point.
As far as you can tell. Really. Like it's an oblique implication, and not the next sentence.
If this is the rate you absorb information when it's repeatedly laid out in plain fucking English, I'm not sure we'll live long enough for you to grasp why your original point was off-topic. Good day.
Indeed there was an oblique implication in me saying "as far as I can tell", but you seemed to miss it (I was wording it in a polite way, rather than being downright rude like a lot of people in here seem to have no trouble with at all, but water off a duck's back...).
The OP was about an e-calculator giving the wrong answer, so I don't see how explaining why it's doing that is off-topic (in your view).
Bye now.