-2

As far as I have been able to find, the first language to use ^ for exponentiation was BASIC, in 1964. Earlier languages, such as Fortran, used other symbols such as ** for exponentiation (although in Fortran's case this was likely influenced by its limited character set compared with later languages).

My question is, why did BASIC choose to use ^ for exponentiation? It is not a case of simply using existing mathematical notation (unlike + and -), since the ^ symbol was not initially used in math to mean exponentiation (e.g. TeX usage is more recent than BASIC).

I am looking for an objective answer backed up with a proper source.


As pointed out in the accepted answer, the original 1964 Basic used (up-arrow) for exponentiation (as can be found in the original manual, page 5). ASCII did not even include a ^ until 1965. Later versions of Basic did, however, use ^ for exponentiation.

  • 3
    en.wikipedia.org/wiki/… BASIC is a descendant of ALGOL60 and the Wikipedia article explains why ALGOL60 used it, but I'm not sure if a Wikipedia article would be considered a proper source. – Dan Wilson Oct 16 '18 at 20:35
  • 2
    Your argument that "the ^ symbol is not really used in math to mean exponentiation" also seems a bit odd given that the caret was absolutely used to indicate a superscript (exponentiation) before rich text was widely available. It's still used today on Math Stack Exchange for LaTeX markup. – Dan Wilson Oct 16 '18 at 20:41
  • 3
  • 2
    Although modern ASCII specifies that code 0x5E, 0x5F, and 0x60 are caret, underscore, and back-tick, they were not always thus. Code 0x5E was an up arrow before it was a caret. Code 0x5F was left-arrow, and on some display devices that could handle lower-case, 0x60 was a solid block [on those that couldn't handle lower case, it was an at-sign just like 0x40]. – supercat Oct 16 '18 at 21:12
  • 2
    @Christophe: The fact that the original character was an up arrow on some obscure teletype system is mildly interesting. Its relevance to modern-day Software Engineering problems is essentially zero. If you know the history of this site, you also know that a great deal of effort was expended by many people to make it topically relevant. In doing so, we had to discard many categories of questions that didn't make the cut for various reasons. That's why we defend the scope so vociferously now. "Interesting" and "curiosity piquing" are unfortunately not enough to make a question topical. – Robert Harvey Oct 16 '18 at 23:33
5

The BASIC article on wikipedia provides a link to the first user manual created by the inventors of the language. At that time, October 1964, the power operator was an ↑ up arrow (page 9). It was available on the keyboard used on the system (page 15). It was however not a standard character since in the manual, all the up arrows are not printed but manually corrected.

Other languages used the up arrow symbol for exponentiation as well, as for example ALGOL, which was with FORTRAN part of the language sources for BASIC.

At the same period, in 1963 a first version of the ASCII character set was published. There are documented discussions of the standard committee about which character to include in the new standard character set. This article provides historical references based on paper archives. It shows that the popularity of ALGOL influenced the choice of the ASCII committee (for example the square brackets). The article also provides 3 references on the use of the caret as a substitute for the up arrow, when it is not used as an accent.

So in conclusion, the use of the caret is not a choice of the language designers, but a result of the choices made by the ASCII standard committee on the available characters.

  • Interesting article. I find it curious that it says the grave accident was an "opening quote" to appease US people who might object to an accept replacing a back arrow, when I don't think that code point was ever used as a back-arrow. The only other thing I've seen it used for was a solid block character [which IMHO was a nice use for it, and would sensibly fold back to the 0x40 @ character] but the article didn't mention that. – supercat Oct 16 '18 at 21:30
  • 1
    Thank you, this is exactly the kind of answer I was looking for. The documentation mentions the up-arrow is a substitute for superscripts (the accepted mathematical notation). The links provided about character sets then explain why Basic uses the caret. – CoffeeTableEspresso Oct 16 '18 at 21:35
  • 1
    Note that the same is true for Smalltalk. Smalltalk used the up-arrow for return (pass a value "up" the stack) and left-arrow for assignment. However, Smalltalk used its own character encoding, and when ASCII became the norm, the codepoints for those two characters were assigned to ^ and _ respectively. The Smalltalk community then decided to stick with ^ for return, but change to := for assignment (although to this day many implementations still accept _ for assignment for backwards-compatibility with old source programs). – Jörg W Mittag Oct 17 '18 at 8:14
  • 1
    @JörgWMittag thank you for this interesting complement. The smalltalk caret appeared to me completely arbitrary and obfuscating, but now I realize how logic it can appear when put into the right context ! – Christophe Oct 17 '18 at 10:44
5

I think the proper answer is the one you already preemptively rejected.

It is not a case of simply using existing mathematical notation (unlike + and -), since the ^ symbol is not really used in math to mean exponentiation.

Why do you say that? Sure, in "formal" mathematical notation, exponentiation is written as a superscript, but ASCII has no concept of superscripts or subscripts, and there is a simple, informal notation (one might even say "for beginners," which is the B in BASIC) which involves using the ^ symbol. It's the simplest, most intuitive way to express the operation, given the constraints of the ASCII character set and the explicit target audience of "beginners" rather than people with a heavy math or computer science background.

  • 2
    You didn't provide any citations, as the OP requested. :P – Robert Harvey Oct 16 '18 at 20:56
  • 1
    This doesn't explain why ^ was chosen though. At the time basic was invented, there were no graphing calculators, TeX, etc. As far as I can tell, Basic was the first usage of ^ for exponentiation, despite the fact that previous languages like Fortran used other operators for exponentiation like **. – CoffeeTableEspresso Oct 16 '18 at 20:57
  • 4
    @CoffeeTableEspresso: Graphic calculators are a red herring. Wikipedia just uses that as an example, but it's an apt one. BASIC chose the caret for two reasons: 1. ASCII doesn't have superscripts, and 2. The caret is suggestive of something raised to a power. No I don't have proof, and no, I'm not going to find it for you, since the people who made this decision died a long time ago. Frankly, I kinda thought this was common knowledge. – Robert Harvey Oct 16 '18 at 21:00
  • 1
    @RobertHarvey the original basic for 1964 didn't chose a caret but an up arrow like ALGOL and the ascii standard committee made the choice for the caret as a general substitute for the up arrow. – Christophe Oct 16 '18 at 22:19
  • @RobertHarvey my whole question was about why Basic used the caret for exponentiation. The fact that Basic didn't actually use the caret for exponentiation seems relevant to answering the question. – CoffeeTableEspresso Oct 16 '18 at 22:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.