Large Numbers, Part 1: Magnitude and Simple Functions
Since (1) I’ve changed my blogging style to include more words per post and (2) I’ve improved my writing style to be more concise, a nine part introduction to ordinals that didn’t explain much simply won’t cut it around here on this site — it has become obsolete. Therefore, I’ve decided to take all the content and re-bundle it.
So, without further ado, here is the start (or rather, restart) of my series of posts on Large Numbers, prominently featuring ordinal numbers and how they work in a very easy to follow manner. None of that stuffy stuff you pretend to understand from Wikipedia; no PhD in math needed.
A Quick Note on Notation
For the purposes of this page, a^b = ab. For example, 10^5 = 105 = 100,000
An Introduction to Magnitude
ENGINEER: Sir, we’re aiming to have our advanced space shuttle go at a speed of 10^9 km per hour.
COMMANDER: Great! How fast do they go now?
ENGINEER: 10^5 km per hour.
COMMANDER: Even better! We’re half way there!
People have always been notoriously bad at understanding magnitude, especially when presented in scientific notation, or any sort of notation that isn’t written in a standard manner.
For example, in the previous quotation, the commander is very much wrong. 10^9 km/h is 1,000,000,000 km/h, which is 92.66% the speed of light. 10^5 km/h is 100,000 km/h, which is 0.0093% the speed of light. The engineers are not half-way there, they still need to make their engines 10,000x faster.
Magnitudes in Math
When dealing with scientific notation, or exponentation (a^b), even a small difference in the exponent creates a big change in numbers. Consider 10^10 and 10^100. The difference in notation just a written “0″ — trading five symbols for six. But the jump in actual size is much more:
10^10 looks like this:
and 10^100 looks like this:
000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000
Also, consider this for magnitude comparison: Writing the full digits of 10^100 took up 447 bytes of memory. Writing 10^10^10 would take up 41.63 GIGABYTES of memory! Of just zeros in text!
Understanding the Large
This is the problem: when dealing with large numbers, all notions of context and magnitude will fall out of the window. We simply cannot perceive the size of 10^10^10 when compared to 10^10 — they’re simply both huge. Magnitude is hard, perhaps impossible, to understand, and there’s really not anything I can do to help. It gets even harder when you’re dealing with numbers that are so large, they have no comparison to reality.
Even the most ridiculously large numbers we can exploit in real life fail to display the sheer size of what we’re looking at here. We may try to look at “10^10^10″ and compare it to the “amount of time since the extinction of the dinosaurs in microseconds” large, but that’s only 10^18. The difference is still a factor of multiplying by 10^9999999982; a number with nearly 10 billion digits.
Even the “diameter of our galaxy in millimeters” doesn’t compare. That’s only 10^24.
Same with the extreme “diameter of the observable universe in diameters of an electron” large. You only get 10^42.
These numbers are absolutely unnoticeably small compared to just 10^100, which is again meaninglessly comparable to 10^10^10, which is just stupid when compared to some of the numbers to come later. Part of this is you just have to cope — when we say W is much less than X, and Y is much less than Z, that tells you nothing of the difference between W and Y, and X and Z. It’s just impossible.
Feeling the Digits
With any number, you can get an idea for how many digits it has by converting it into a power of ten. The exponent of that ten will be a rough idea of the number of digits.
For example 3^3^3 is roughly equal to 10^12, which has 12 digits. Therefore 3^3^3 has about 12 digits. When we evaluate it, we see 3^3^3 = 3^27 = 7625597484987, which has 13 digits.
Stack another three on there, though, and things change. 3^3^3^3 is 3^7625597484987, which is roughly equal to 10^10^12. The exponent is 10^12, which means 3^3^3^3 has about 10^12 digits, which is 1,000,000,000,000 digits, or a trillion digits.
Now that we (sort of) understand the difference between large numbers like 10^10 and 10^100, let’s go for bigger numbers like 10^10^10.
The Beginnings of an Exponentiation
So what is 10^10^10?
It’s a stack of powers using exponentiation. Just like multiplication is shorthand for repeated addition, exponentiation is repeated multiplication. Just as 3*5 (three times five) means “three plus three, five times” (3+3+3+3+3), 3^5 (three to the power of five) means “three times three, five times” (3*3*3*3*3).
Just as we can multiply numerous times, we can also exponent numerous times. Take the example of 10^10^10 again. That’s an exponentiation stack of three “tens”. We can even invent a symbol for this repeated exponentiation, and mathematicians have — it’s called tetration. Our symbol for this will be “#”, but there is no standardized symbol. 10#3 = 10^10^10.
Evaluating Stacks
When confronted with a stack of powers, we evaluate them from right to left. That means we’re looking for 10^(10^10) — or we figure out what 10^10 is first, and then figure out 10 to the power of that. Let’s make this easier and solve 3#4.
3^3^3^3 = 3^3^(3^3) = 3^3^27 = 3^(3^27) = 3^7625597484987
But why right-to-left instead of left-to-right? It isn’t just because it makes bigger numbers (it does), but because left-to-right is the same as multiplying exponents. Interestingly, ((3^3)^3)^3 is the same as 3^(3*3*3), or 3^27. Right-to-left makes this “#” operation unique.
Magnitude Revisited
So how much larger is 3#3 than 3#4? We really have no sense of difference, because it’s simply a +1 increase. But really we’re going from 7625597484987, which is pretty close to 10^13 to 3^7625597484987, which is pretty close to 10^10000000000. That means the first number has thirteen digits, whereas the second number has ten trillion digits. Quite the difference.
Knuth Up-Arrow Notation
Of course, our earlier choice of “#” to represent repeated exponentation was completely arbitary, and it turns out there already is existing structure in math for these kind of things. Let’s learn one — it’s real simple, and is called Knuth’s up-arrow notation (pronounced kuh-NOOTH) introduced by Donald Knuth in 1976.
This system uses an arrow symbol “↑” to notate a system of making large numbers.
The first is familiar: a↑b = a^b
However, with a second arrow, things get complex:
a↑↑b = a # b. A double arrow entry will evaluate to a to the ath power, b times.
Three Arrows
So what happens when we try a↑↑↑b? We get things that are even larger.
A triple arrow entry creates a tower of power towers. You evaluate from the bottom up to figure out the size of each stack, and b determines how tall the stack is. For example, will become 2 squared, 65536 times, as seen here:
Even More Arrows
Knuth defined a continuous series of any amount of arrows — just as we saw double-arrows and triple-arrows, there are quadruple-arrows and quintuple-arrows, etc. Each additional arrow continues the patten of towers, towers of towers, rows of towers of towers, towers of rows of towers of towers, rows of towers of rows of towers of towers, etc.
Quadruple arrows look like this:
Knuth uses the generic to denote a number with n up-arrows, and for all positive integer values of a, b, and, n:
n arrows evaluates like this:
For example:
In case your interested, the formal definition of n-arrows is as follows:
The Hyper Function
Now for a second function that makes large numbers. It’s called The Hyper Function, and it looks like this: hyper(a, b, c).
It’s defined with five definitions:
when a > 0, b > 0, c = 0: hyper(a, b, 0) = b + 1
when a > 0, b = 0, c = 1: hyper(a, 0, 1) = a
when a > 0, b = 0, c = 2: hyper(a, 0, 2) = 0
when a > 0, b = 0, c > 2: hyper(a, 0, c) = 1
when a > 0, b > 0, c > 2: hyper(a, b, c) = hyper(a, hyper(a, b-1, c), c-1)
…and will always evaluate to a very large use of succession, which is “+1″. (If multiplication is continued addition, addition is continued succession.)
For each value of c, the hyper function goes through addition (c = 1), multiplication (c = 2), exponentiation (c = 3), etc — therefore
It’s often easier to use the hyper function for large amounts of arrows, to avoid having to write out large quantities of arrows or to avoid having to use the superscript in the Knuth function. All we have to do is say hyper(3, 3, 50) and we’ve matched 3↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑3.
Magnitude Check, A Third Time
So what’s the difference in size between hyper(3, 2, 2) and hyper(3, 2, 6)? How many digits are in a number like hyper(3, 2, 6) anyway?
hyper(3, 2, 2) = hyper(3, hyper(3, 1, 2), 1) = hyper(3, 3, 1) = hyper(3, hyper(3, 2, 1), 0) = hyper(3, 2, 1) + 1 = 5 + 1 = 6
hyper(3, 2, 1) = hyper(3, hyper(3, 1, 1), 0) = hyper(3, 4, 0) = 4 + 1 = 5
hyper(3, 1, 1) = hyper(3, hyper(3, 0, 1), 0) = hyper(3, 3, 0) = 3 + 1 = 4
hyper(3, 1, 2) = hyper(3, hyper(3, 0, 2), 1) = hyper(3, 0, 1) = 3
Since all hyper functions evaluate to edition, and hyper(3, 2, 6) uses quad-arrows, writing this out all the way would be very tedious. Instead, we can find , which evaluates like this:
So the difference between hyper(3, 2, 2) and hyper(3, 2, 6) is large — it’s the difference between “6″ and “3 cubed, 7625597484987 times”.
The End, For Now
That’s the end of our journey in “Large Number”-land for today. In the next post, I’ll introduce one of the most famous tourist stops in “Large Number”-land, Graham’s Number; discuss an even more powerful method of making large numbers, Conway Chained-Arrow Notation; and then finish it off with two methods of extending Conway Chained-Arrows to make even larger numbers.
Then, I’ll get into the Ordinals everyone has been waiting for in the third part.
Continued in: Large Numbers, Part 2: Graham and Conway
-
I now blog at EverydayUtilitarian.com. I hope you'll join me at my new blog! This page has been left as an archive.
On 6 May 2011 in All, Mathematics. No Comments.