I did mathematics up to University level and finally petered out at Category Theory, which I never got the hang of. Here's the fun: I *never* saw the asterisk used for multiplication in my mathematics or physics courses. And I never saw any operator at all used for exponentiation. Asterisk was a superscript operator for conjugation or duals. Had nothing to do with products. Fortran COBOL, and PL/I used. and still use, * for multiplication and ** for exponentiation. APL used ? for multiplication and * for exponentiation. Could I recommend that R allow ? as a synonym for * ? It has been the mathematical sign for multiplication for >400 years, when a sign is used, and it's been available on computers for decades. On Sat, 30 Aug 2025 at 03:05, Leo Mada via R-help <r-help at r-project.org> wrote:> > Dear Rolf, > > I join this discussion a little bit late. > > Indeed, the '**' operator is a very poor choice for exponentiation. I can give some examples to justify my claim. Notice that '**' and '*' would almost always get mixed in real mathematics. > > Fortunately, I am used to "^"; otherwise, I would have had a very hard time to debug the *monster*: > https://github.com/discoleo/R/blob/master/Math/Poly.System.S5.Ht.Formulas.Derivation.Coeffs.R > > Those are the coefficients of a polynomial of order 7 (see below for further information). And I have plenty of examples. > > Unfortunately, some "programming" languages mix '*' and '**'; which makes any work with polynomials a nightmare! > > I "found" something on this topic - hope everyone gets a little bit amused: > https://github.com/discoleo/R/blob/master/Math.NewTerminology.wiki > > Sincerely, > > Leonard > > ==========> Regarding the *Monster*: > > It enables to solve a particular system with 5 variables with cyclic symmetry: > x1+x2+x3+x4+x5 = R1 > # Note: this is NOT the full E2 > x1*x2+x2*x3+x3*x4+x4*x5+x5*x1 = R2 > E3 = R3 > E4 = R4 > E5 (= x1*x2*x3*x4*x5) = R5; > > This system can be transformed into a system that can be solved using a polynomial of lower order than the original system. > > Unfortunately, I do not have a methemtical theory yet for the Ht5 System. I worked it out the hard way; it is almost finished, but I did not have any more time during the last 2 years. > > For some (very) basic details, see: > https://github.com/discoleo/R/blob/master/Math/Poly.System.md > > Again, I did not have time to write anything more thoroughly. > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide https://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.
The use of * and ^ are from computer programming languages. They are not valid notation in mathematics, but have become so commonly used that they seem ok. In mathematics x (a variable or parameter) and x (a multiplication sign) are distinguished by a change in font or using italics or more traditionally the bottom of the multiplication sign "x" is raised above baseline (I do not know how on my keyboard). There are two other options, a centered dot (on my keyboard a superscript period), or juxtaposition (ab is a times b). On a 1970's keyboard (or earlier) the "x" for multiplication was not available. The centered dot was not available. Even on my modern keyboard I am not sure how to get these symbols as they should be without considerable additional effort or where I would find the symbol in the ASCII code. In juxtaposition how do I tell if ab is a times b versus a new variable "ab"? In early programming * was used because it was available. I have found suggestions that a raised "x" is now available, but I have no idea where it is and I do not want to look through the complete character set for several fonts looking. Furthermore, maintaining * is necessary for backwards compatibility. Today I have a button in my word processing program to give superscripts. The 1963 ASCII did not have a ^ but it was added in 1967. A programming language needs a specific character to interpret. Something like A3 has a hidden character to indicate a superscript, though in the basic text of this email I could not find a way to do it. That difficulty alone makes A^3 more interpretable than A3. ChatGPT finishes the story by saying that some early computer languages (ALGOL 60, some Fortran dialects) used ^. However C used the ^ for a bitwise XOR operation. In developing standards ** was chosen to avoid conflict with other uses and because it was easy to define in writing the machine language program that becomes a higher level programming language. It has been some time since a journal required that I change the * to a proper multiplication sign. However, I do not publish that many equations and I try to remember to use x. Some reviewers also complain if * is used. In the end we could have a war, or next best a global committee meeting to settle on a global convention where everyone agrees. Or we could learn that there are several ways to do this and move on. Some use ^ others ** and still others use a function like pow(). Tim -----Original Message----- From: R-help <r-help-bounces at r-project.org> On Behalf Of Richard O'Keefe Sent: Saturday, August 30, 2025 3:09 AM To: Leo Mada <leo.mada at syonic.eu> Cc: Leo Mada via R-help <r-help at r-project.org> Subject: Re: [R] The "**" exponentiation operator. [External Email] I did mathematics up to University level and finally petered out at Category Theory, which I never got the hang of. Here's the fun: I *never* saw the asterisk used for multiplication in my mathematics or physics courses. And I never saw any operator at all used for exponentiation. Asterisk was a superscript operator for conjugation or duals. Had nothing to do with products. Fortran COBOL, and PL/I used. and still use, * for multiplication and ** for exponentiation. APL used ? for multiplication and * for exponentiation. Could I recommend that R allow ? as a synonym for * ? It has been the mathematical sign for multiplication for >400 years, when a sign is used, and it's been available on computers for decades. On Sat, 30 Aug 2025 at 03:05, Leo Mada via R-help <r-help at r-project.org> wrote:> > Dear Rolf, > > I join this discussion a little bit late. > > Indeed, the '**' operator is a very poor choice for exponentiation. I can give some examples to justify my claim. Notice that '**' and '*' would almost always get mixed in real mathematics. > > Fortunately, I am used to "^"; otherwise, I would have had a very hard time to debug the *monster*: > https://gith/ > ub.com%2Fdiscoleo%2FR%2Fblob%2Fmaster%2FMath%2FPoly.System.S5.Ht.Formu > las.Derivation.Coeffs.R&data=05%7C02%7Ctebert%40ufl.edu%7C88a1e085284e > 420a305f08dde794288f%7C0d4da0f84a314d76ace60a62331e1b84%7C0%7C0%7C6389 > 21345712706542%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiI > wLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7 > C%7C&sdata=xbTb0RLU%2B9nd4p%2FHDI9wjuWGRUT1fuCvvKkZ%2F0MVBVA%3D&reserv > ed=0 > > Those are the coefficients of a polynomial of order 7 (see below for further information). And I have plenty of examples. > > Unfortunately, some "programming" languages mix '*' and '**'; which makes any work with polynomials a nightmare! > > I "found" something on this topic - hope everyone gets a little bit amused: > https://gith/ > ub.com%2Fdiscoleo%2FR%2Fblob%2Fmaster%2FMath.NewTerminology.wiki&data> 05%7C02%7Ctebert%40ufl.edu%7C88a1e085284e420a305f08dde794288f%7C0d4da0 > f84a314d76ace60a62331e1b84%7C0%7C0%7C638921345712727384%7CUnknown%7CTW > FpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIs > IkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=3d0gxPeq9A28Bjs%2F > FPmJnBbmGFj%2FWUC8WWl3ZYopqCk%3D&reserved=0 > > Sincerely, > > Leonard > > ==========> Regarding the *Monster*: > > It enables to solve a particular system with 5 variables with cyclic symmetry: > x1+x2+x3+x4+x5 = R1 > # Note: this is NOT the full E2 > x1*x2+x2*x3+x3*x4+x4*x5+x5*x1 = R2 > E3 = R3 > E4 = R4 > E5 (= x1*x2*x3*x4*x5) = R5; > > This system can be transformed into a system that can be solved using a polynomial of lower order than the original system. > > Unfortunately, I do not have a methemtical theory yet for the Ht5 System. I worked it out the hard way; it is almost finished, but I did not have any more time during the last 2 years. > > For some (very) basic details, see: > https://gith/ > ub.com%2Fdiscoleo%2FR%2Fblob%2Fmaster%2FMath%2FPoly.System.md&data=05% > 7C02%7Ctebert%40ufl.edu%7C88a1e085284e420a305f08dde794288f%7C0d4da0f84 > a314d76ace60a62331e1b84%7C0%7C0%7C638921345712740965%7CUnknown%7CTWFpb > GZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkF > OIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=%2BCCv%2FBe4VQis9oU8G > 6G2ySubXvWTBKk%2BDAsxK59w0co%3D&reserved=0 > > Again, I did not have time to write anything more thoroughly. > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat/ > .ethz.ch%2Fmailman%2Flistinfo%2Fr-help&data=05%7C02%7Ctebert%40ufl.edu > %7C88a1e085284e420a305f08dde794288f%7C0d4da0f84a314d76ace60a62331e1b84 > %7C0%7C0%7C638921345712751683%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGki > OnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ > %3D%3D%7C0%7C%7C%7C&sdata=Nzz%2FqykXOD%2FUBS%2FuqFQ32ep25luAoMIkDt0V64 > as6Qo%3D&reserved=0 PLEASE do read the posting guide > https://www/. > r-project.org%2Fposting-guide.html&data=05%7C02%7Ctebert%40ufl.edu%7C8 > 8a1e085284e420a305f08dde794288f%7C0d4da0f84a314d76ace60a62331e1b84%7C0 > %7C0%7C638921345712762858%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRy > dWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D% > 3D%7C0%7C%7C%7C&sdata=c3d8uzSK2FAnJscLbX9w3thsp0NFVsdpHR%2FXn4SDW80%3D > &reserved=0 and provide commented, minimal, self-contained, > reproducible code.______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide https://www.r-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
@vi@e@gross m@iii@g oii gm@ii@com
2025-Aug-30 13:23 UTC
[R] The "**" exponentiation operator.
Richard, As noted, we have had a history of computer languages using a very small number of symbols to do too many things. A few languages like APL sort of created new symbols by overwriting. Some simply used functions rather than symbols. And, I note languages like C used asterisk to mean very different things like following a pointer in concise but not trivial code as in how to copy a null terminated character string: while (*p++ = *q++) If you had a pointer to a pointer to a pointer to a pointer, you could see code with many stars and often many parentheses. As for your suggestion, I think you need to consider the people who have to create a compiler or interpreter to handle the requirements. I am sure it is doable in some ways but I suggest care. Many languages accept octal or hexadecimal notation and thus a number like 2A is allowed but since this can lead to ambiguous situations, often a x must be prepended as a sort of special case. In such a language, you might not want to use x or X OR you may insist on whitespace around it as compared to other operators that need nonw. And, need I say that x is a very common variable name. Back to R, it is what it is and if someone designs yet another new language in x decades, who knows what they will come up with that may be hodgepodge of features and ways from R and python and ... and will have so many features and ways that no one person or group knows it all as it will include use of thousands of symbols from something like UNICODE. For now, if we use R, we have what we have and we will make mistakes. Anyone here think there can be problems if someone creates read_csv() as their version of read.csv() and some people use the wrong one, ...? -----Original Message----- From: R-help <r-help-bounces at r-project.org> On Behalf Of Richard O'Keefe Sent: Saturday, August 30, 2025 3:09 AM To: Leo Mada <leo.mada at syonic.eu> Cc: Leo Mada via R-help <r-help at r-project.org> Subject: Re: [R] The "**" exponentiation operator. I did mathematics up to University level and finally petered out at Category Theory, which I never got the hang of. Here's the fun: I *never* saw the asterisk used for multiplication in my mathematics or physics courses. And I never saw any operator at all used for exponentiation. Asterisk was a superscript operator for conjugation or duals. Had nothing to do with products. Fortran COBOL, and PL/I used. and still use, * for multiplication and ** for exponentiation. APL used ? for multiplication and * for exponentiation. Could I recommend that R allow ? as a synonym for * ? It has been the mathematical sign for multiplication for >400 years, when a sign is used, and it's been available on computers for decades. On Sat, 30 Aug 2025 at 03:05, Leo Mada via R-help <r-help at r-project.org> wrote:> > Dear Rolf, > > I join this discussion a little bit late. > > Indeed, the '**' operator is a very poor choice for exponentiation. I can give some examples to justify my claim. Notice that '**' and '*' would almost always get mixed in real mathematics. > > Fortunately, I am used to "^"; otherwise, I would have had a very hard time to debug the *monster*: > https://github.com/discoleo/R/blob/master/Math/Poly.System.S5.Ht.Formulas.Derivation.Coeffs.R > > Those are the coefficients of a polynomial of order 7 (see below for further information). And I have plenty of examples. > > Unfortunately, some "programming" languages mix '*' and '**'; which makes any work with polynomials a nightmare! > > I "found" something on this topic - hope everyone gets a little bit amused: > https://github.com/discoleo/R/blob/master/Math.NewTerminology.wiki > > Sincerely, > > Leonard > > ==========> Regarding the *Monster*: > > It enables to solve a particular system with 5 variables with cyclic symmetry: > x1+x2+x3+x4+x5 = R1 > # Note: this is NOT the full E2 > x1*x2+x2*x3+x3*x4+x4*x5+x5*x1 = R2 > E3 = R3 > E4 = R4 > E5 (= x1*x2*x3*x4*x5) = R5; > > This system can be transformed into a system that can be solved using a polynomial of lower order than the original system. > > Unfortunately, I do not have a methemtical theory yet for the Ht5 System. I worked it out the hard way; it is almost finished, but I did not have any more time during the last 2 years. > > For some (very) basic details, see: > https://github.com/discoleo/R/blob/master/Math/Poly.System.md > > Again, I did not have time to write anything more thoroughly. > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide https://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide https://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.