421
submitted 1 year ago by Toes@ani.social to c/196
you are viewing a single comment's thread
view the rest of the comments
[-] mindbleach@sh.itjust.works 112 points 1 year ago

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.

[-] linuxdweeb@lemm.ee 9 points 1 year ago

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.

[-] SmartmanApps@programming.dev 2 points 9 months ago

there is no standard order of operations across languages

Yes there is. The rules of Maths are universal.

It’s an easy place for bugs to sneak in

But that's because of programmers not checking the rules of Maths first.

[-] Crozekiel@lemmy.zip 2 points 1 year ago

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.

[-] SmartmanApps@programming.dev 1 points 9 months ago

intentionally ambiguously written

#MathsIsNeverAmbiguous

learned order of operations to cause a fight

The order of operations are the same everywhere. The fights arise from people who don't remember them.

[-] Crozekiel@lemmy.zip 2 points 9 months ago

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.

[-] SmartmanApps@programming.dev 1 points 9 months ago

Please see this section of Wikipedia on the order of operations

That section is about multiplication, and there isn't any multiplication in this expression.

The “math” itself might not be ambiguous, but how we write it down absolutely can be

Not in this case it isn't. It has been written in a way which obeys all the rules of Maths.

This is why you don’t see actual mathematicians arguing over which one of these calculators is correct

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.

it is not either calculator being wrong

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).

US - PEMDAS vs UK - BODMAS

Those aren't the rules. They are mnemonics to help you remember the rules

notice division and multiplication swapped places

Yes, that's right, because they have equal precedence and it literally doesn't matter which way around you do them.

you can’t actually do all of the multiplication and division at one time

Yes, you can!

Some are taught to simply work left to right

Yes, that's because that's the easy way to obey the actual rule of Left associativity.

we are all taught to use parentheses correctly to eliminate ambiguity

Correct! So 2(2+2) unambiguously has to be done before the division.

[-] Crozekiel@lemmy.zip 1 points 9 months ago

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?

there isn’t any multiplication in this expression.

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.

[-] SmartmanApps@programming.dev 1 points 9 months ago

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?

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).

I feel bad for your students

My students are doing well thanks.

I doubt anyone is going to accept links to your blog as proof that you are correct

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.

[-] SmartmanApps@programming.dev 1 points 9 months ago

Different compilers

Different programmers.

it’s going in parentheses

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.

[-] mindbleach@sh.itjust.works 3 points 9 months ago

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?

[-] SmartmanApps@programming.dev 1 points 9 months ago

Your added parentheses do nothing

So you're saying Brackets aren't first in order of operations? What do you think brackets are for?

If you wanted to express the value 8 over the value 2*(1+3), you should write 8/(2*(1+3))

or, more correctly 8/2(1+3), as per the rules of Maths (we never write unnecessary brackets).

That is how you eliminate other valid interpretations

There aren't any other valid interpretations. #MathsIsNeverAmbiguous

what human being is going to read “8/2 * (1+3)” as anything but 4*4

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.

Those spaces

...have no meaning in Maths. The thing that separates the Terms, in your example, is the multiply. i.e. an operator.

most calculators don’t have a spacebar

...because it's literally meaningless in Maths.

any more than they have to ability to draw a big horizontal line and place 2(1+3) underneath it

Some of them can actually.

“The rules of math” you keep spamming about are not mathematical proofs

You should've read further on then. Here's the proof.

they’re arbitrary decisions made by individuals

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.

In many cases the opposite choice would be equally sensible

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?

Do you want to argue that 8 - (2) + (1+3) should be 2?

No, why would I do that? 8-(2+1+3) does equal 2 though.

[-] mindbleach@sh.itjust.works 2 points 9 months ago

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.

Yes, that’s right, but 8/2x(1+3) isn’t the same as 8/2(1+3).

... no, that's fucking stupid.

Some of them can actually.

Hence the word "most." Your cocksure months-late manic episode across this thread is the most "akshually" thing I have ever witnessed.

Here’s the proof.

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.

[Those spaces] have no meaning in Maths.

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.

[-] SmartmanApps@programming.dev 1 points 9 months ago

You are a smug idiot

That's your colloquialism for Maths teachers. Ok, got it.

8/2(1+3) is exactly the sort of thing programs love to misinterpret.

Programs, written by programmers, who have forgotten the rules of Maths.

that’s fucking stupid

So you're saying the rules of Maths are stupid. Got it.

You can’t prove that 2(3) means something different from 2*3. It’s only convention!

No, it's a rule of Maths - it's literally the opposite operation to factorising.

It’s a thing we made up

Nothing in Maths is made up. It's based on our observations of how things work.

mathematical proofs, which are laws of the universe

Now you're getting it.

this particular notation

...which is Maths.

Reverse Polish Notation doesn’t have this issue, at all

Neither does infix notation. All notations have to obey the rules of Maths, since the rules of Maths are universal.

Distribution is not even possible in RPN

Second hit in my Google results...

(3) -6 is asking for trouble

It's -3 - where's the trouble?

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

Welcome to why almost every single e-calculator is wrong (as opposed to handheld calculators) - MathGPT gets it right.

[-] mindbleach@sh.itjust.works 2 points 9 months ago

Nothing in Maths is made up. It’s based on our observations of how things work.

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.

Second hit in my Google results…

Shows B being subtracted from A before that value is multiplied by C. It's not distribution. It's evaluating the parenthetical.

It’s -3 - where’s the trouble?

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?

[-] SmartmanApps@programming.dev 1 points 9 months ago

‘this particular notation is the notation!’ to ‘of course other notations exist’

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).

Maths,” do you mean the notation on paper, or the underlying laws-of-reality stuff

Both! Whatever notation your country uses, all the rules for Maths and use of that Maths notation are defined.

It’s ambiguous

No, it's not.

It’s not distribution. It’s evaluating the parenthetical

And Distribution applies to brackets/parentheses where they have a coefficient. In other words, same same.

it’s 3 and -6, not 3 - 6

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.

a state trusts you with the education of children

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.

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?

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.

[-] mindbleach@sh.itjust.works 1 points 9 months ago

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.

Both!

It’s ambiguous

No, it’s not.

Do you read the things you write?!

And Distribution applies to brackets/parentheses where they have a coefficient. In other words, same same.

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!

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.

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.

[-] SmartmanApps@programming.dev 1 points 9 months ago* (last edited 9 months ago)

multiplying by a parenthetical is different from distribution

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.

(3) -6 is the quantities 3 and -6 in the format (A)B

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.

zero thought

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?

[-] mindbleach@sh.itjust.works 1 points 9 months ago* (last edited 9 months ago)

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'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.

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?

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.

[-] SmartmanApps@programming.dev 1 points 9 months ago

I’m talking about how you said (A)B for A=3 B=-6 equals -3

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.

The syntax can be ambiguous.

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.

but the concept of distribution does not exist within in RPN

So what you're really saying, as far as I can tell, is brackets themselves don't exist in RPN.

evaluating a parenthetical gets the same result as distribution

Except when it doesn't, which is my original point.

[-] mindbleach@sh.itjust.works 1 points 9 months ago

So what you’re really saying, as far as I can tell, is brackets themselves don’t exist in RPN.

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.

[-] SmartmanApps@programming.dev 1 points 9 months ago

As far as you can tell. Really. Like it’s an oblique implication

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...).

your original point was off-topic

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).

Good day

Bye now.

this post was submitted on 03 Dec 2023
421 points (100.0% liked)

196

16746 readers
1918 users here now

Be sure to follow the rule before you head out.

Rule: You must post before you leave.

^other^ ^rules^

founded 2 years ago
MODERATORS