Arrow notation

Arrow notation is a notation for the hyper operators, devised by Donald Knuth in 1976 to represent large numbers.

Formula
In short, the two rules for arrow notation are

\[a \uparrow b = a^b\]

\[a \uparrow^n 1 = a\]

\[a \uparrow^{n + 1} (b + 1) = a \uparrow^n (a \uparrow^{n + 1} b)\]

Written explicitly, the last rule is

\[a \underbrace{\uparrow\uparrow\ldots\uparrow\uparrow}_c b = \underbrace{a \underbrace{\uparrow\uparrow\ldots\uparrow\uparrow}_{c - 1} a \underbrace{\uparrow\uparrow\ldots\uparrow\uparrow}_{c - 1} a \underbrace{\uparrow\uparrow\ldots\uparrow\uparrow}_{c - 1} \ldots}_{b}\]

Specifically, \(a \uparrow b\) is exponentiation, \(a \uparrow\uparrow b\) is tetration, \(a \uparrow\uparrow\uparrow b\) is pentation, and so forth.

In ASCII, the arrow are usually replaced with carets: a^b, a^^b, a^^^b, and so forth.

Examples

 * \(2 \uparrow 3 = 2^3 = 8\)
 * \(10 \uparrow 100 = 10^{100} =\) googol
 * \(3 \uparrow\uparrow 4 = 3 \uparrow 3 \uparrow 3 \uparrow 3 = 3 \uparrow 3 \uparrow 27 = 3^{7625597484987}\)
 * \(2 \uparrow\uparrow\uparrow 2 = 2 \uparrow\uparrow 2 = 2 \uparrow 2 = 2^2 = 4\)
 * \(3 \uparrow\uparrow\uparrow 2 = 3 \uparrow\uparrow 3 = 3 \uparrow 3 \uparrow 3 = 3^{3^3} = 3^{27} = 7625597484987\)
 * \(2 \uparrow\uparrow\uparrow 3 = 2 \uparrow\uparrow 2 \uparrow\uparrow 2 = 2 \uparrow\uparrow 4 = 2 \uparrow 2 \uparrow 2 \uparrow 2 = 2 \uparrow 2 \uparrow 4 = 2 \uparrow 16 = 65536\)