Thursday, May 26, 2011

An Enhancement on Arabic Decimal Notation

Arabic decimal notation has become the worlds most recognized notation for numbers. Arabic decimals are those familiar digits 0,1,2,3,4,5,6,7,8, and 9 that can be combined in an infinite number of ways to write any whole number desired. When combined with a negative sign we can express any integer. Add in a decimal point and we can describe real numbers to any degree of desired accuracy. The power of this notation is its simplicity and economy. With only 10 symbols it allows to describe an unlimited range of values. Surprisingly "decimals" are relatively new. They began perhaps sometime in the 5th century created by indian mathematicians. The novel idea introduced by arabic decimals was a positional system where symbols value depended on their position. To understand the considerable advantage we have to look at the kinds of systems that existed prior to arabic decimals.

Probably the most widely used number system prior to decimals was the roman numerals. Their usage was so prevalent that its usage only died off slowly as decimals replaced them, and we still use them today for limited purposes. The basic idea is to have each "roman numeral" stand for a particular number. an "I" is one, a "V" is five, and "X" is ten, and "L" is fifty, and so on. When symbols are written next to each other we simply add them together to determine the value they represent. Some examples:

III represents 1+1+1 = 3
VII represents 5 + 1 + 1 = 7
XV represents 10 + 5 = 15
LXXVI represents 50 + 10 + 10 + 5 + 1 = 76

Generally we write the terms in decending order. Now this is fine as long as we want to express only a limited range of numbers. However what if we want to express larger numbers. We need more denominations then, or less we would have to write out the largest denomination as many times as it would take to add up to the number we are trying to express. We can also use "C" for a hundred, "D" for five hundred and "M" for one thousand. The problem is if we wanted to express a million we would have a hard time doing it with just these symbols. To write a million we would have to write "MMMMMMMM ... MMM" with a thousand Ms! Not in the least practical. We could of coarse come up with new denominations but the problem remains. There will always be bigger numbers, and so no set of denominations will be enough to express "all numbers compactly".

This is where the advantage of decimals comes in. We learn 10 symbols, but their values are not as fixed as the roman numerals. Each has a "base value", but every time a decimal moves to the left it gets multiplied ten fold. Thus 100 is ten times greater than 10, 1000 is ten times greater than 100, and so on. Its as if every time a zero is added, the one becomes a whole new denomination. We can create a whole series of denominations using just 1 and 0.

Decimals are definitely alot more useful for memorizing, adding, multiplying, recording and working with numbers. However even these numerals have their limitations. In todays modern world millions, billions and trillions are commonly spoken. To write a million in decimal we have to write 1000000. A billion would be 1000000000, and a trillion would be 1000000000000. Notice any problems. First off, its difficult to read off exactly how many zeroes there are. To remedy this commas are usually inserted every three digits to make counting them off easier. So a million becomes 1,000,000 a billion becomes 1,000,000,000 and a trillion becomes 1,000,000,000,000. That's certainly an improvement. However science deals with numbers even larger than this like quadrillions, quintillions, and beyond. A Quintillion is 1,000,000,000,000,000,000. How many commas are there? Try counting the commas in this next one:

1,000,000,000,000,000,000,000,000,000,000,000

A bit tricky? The above number is a decillion (a personal favorite) which is 1 followed by 33 zeroes. It also contains 11 commas, one for each set of three zeroes. Now it should be apparant what the disadvantage of positional based notation is. While zeroes are handy for holding "places", when the place value is very high a lot of zeroes are neccessary. We can't simply remove the zeroes because then the 1 doesn't have the same value. Also notice that denominational systems such as Roman numerals do have certain advantages over decimals. For example a thousand is simply "M", but in decimal its "1000" and requires at least 4 symbols (5 if you include a comma).

In a sense scientific notation (S.N.), which developed for this very reason I suspect, is an improvement upon arabic decimals in a way that is analogous to how arabic decimals are an improvement on roman numerals. Taking advantage of the power of exponents we can write a decillion or 1,000,000,000,000,000,000,000,000,000,000,000 simply as 10^33. That's quite economical. We can also describe numbers other than whole powers of ten. For example 2,000,000,000 can be written as 2*10^9. We can also describe numbers with more than a single non-zero digit by using a decimal point. For example 678,400,000,000,000,000 would be 6.784*10^17 in SN.

SN was not meant to be a way to express every decimal number however. For example in standard SN 678,400,000,000,000,001 would still be approximated as 6.784*10^17.

I have devised an interesting alternative to scientific notation that can be used to truncate decimal notation and allow us to express VERY large numbers very easily. In fact it has some advantages over scientific notation.

Here's the basic idea. Take 1,000 for example. If the comma is present to indicate that the ones are in the thousands, why do we need the zeroes? Thus we can write " 1, " for "1,000" without much loss of meaning. To express 1,001 we can drop the zeroes and write " 1,1 ". Essentially the commas is saying we have 1 thousand and one left over. so 1,002 would be 1,2. Get the idea so far? So now consider a million which is 1,000,000. We can drop all of the zeroes to obtain " 1,, "
a million and one would be 1,,1. A million one thousand would be 1,1, and a million one thousand and one would be 1,1,1. This allows us to drop some zeroes but its actually not that much of an improvement for bigger numbers. For example a decillion would be shortened from 1,000,000,000,000,000,000,000,000,000,000,000 to 1,,,,,,,,,,,. Its still difficult if not more difficult to read the commas! This is where the important idea comes in. Rather than write a series of commas " ,,, ... ,,, " we can use a pair of parathesis, where the number contained inside represents the rank of each comma. The first comma will be rank zero so we can use (0) in place of the comma marking off thousands. The second comma will be rank one so we can use (1) in place of the comma marking off millions, and so on. Zeroes can be dropped, and a leading 1 can be dropped. It's alittle difficult to describe at first, but some examples should clarify what I have in mind. Here is how we can convert standard decimal notations into an enhanced form we can call Enhanced Decimal Notation (EDN):

1,000 = 1, = 1(0) = (0) by dropping the leading "1". Think of (0) as a comma indicating that we are in the thousands. The blank on the left means 1 thousand(s) while the blank on the right means no ones.

1,001 = 1,1 = 1(0)1 = (0)1
1,002 = 1,2 = 1(0)2 = (0)2
...
1,999 = 1,999 = 1(0)999 = (0)999
2,000 = 2, = 2(0)
2,001 = 2,1 = 2(0)1
...
54,007 = 54,7 = 54(0)7
999,999 = 999(0)999
1,000,000 = 1,, = 1(1) = (1)
1,000,001 = 1,,1 = 1(1)1 = (1)1
1,001,000 = 1,1, = 1(1)1(0) = (1)(0)
1,001,001 = 1,1,1 = 1(1)1(0)1 = (1)(0)1
1,002,001 = 1,2,1 = 1(1)2(0)1 = (1)2(0)1
...
980,001,014 = 980,1,14 = 980(1)1(0)14 = 980(1)(0)14
...
1,000,000,000 = 1,,, = 1(2) = (2)
1,000,000,000,000 = 1,,,, = 1(3) = (3)
1,001,001,001,000 = 1,1,1,1, = 1(3)1(2)1(1)1(0) = (3)(2)(1)(0)
...
1,000,000,000,000,000,000,000,000,000,000,000 = 1,,,,,,,,,,, = 1(10) = (10)

Besides reducing powers of ten just as effectively as SN, EDN also has another advantage. Normally when we have long decimal strings such as 987,654,321,123,456,789 it can be difficult to tell what size the number is. While EDN won't shorten this expression (since there are no zeroes to drop) it will at least clarify scale. We would write:

987(4)654(3)321(2)123(1)456(0)789

To determine scale we look at the first seperator, " (4) " that means that there are 987 quadrillions. The number inside will indicate the latin prefix of the -illion. Thus (1) is a million, (2) a billion, (3) a trillion and so on. To find out the size of any seperator simply use the formula:

(n) = 10^(3n+3)

That means that (n) = n-illion in the short scale. EDN is at least as effective as scientific notation for describing large numbers. They say there are about 10^80 particles in the observable universe. In EDN we could write the same number as 100(25). We can also convert from EDN to SN using the above formula so:

100(25) = 100*10^(3*25+3) = 100*10^78 = 10^80

To get a feel for how large 100(25) is just remember that (25) is the 26th seperator. That's how many commas would be needed to write this number out in full in standard Decimal Notation (D.N.).

The real advantage of EDN however is that it allows us to describe VERY large numbers, even larger than those usually discussed in relation to the universe. For example a centillion is said to be 1 followed by 303 zeroes or 10^303 in SN. In EDN we can simply write " (100) ". But it is so easy to go further. A millillion is said to be 10^3003. In EDN this would be (1000). But wait 1000 = (0) in EDN, so we can substitute this to obtain (1000) = ((0)). And we can go much further than this. EDN is very well adapted to defining -illion numbers. In fact they can be used to define Bowers -illion series. If your not familiar with it I'll be showing the definitions in standard scientific notation so that you'll better understand what is meant. The advantage that EDN has over SN will become apparant when we start exploring extremely large numbers, like those Bowers explores in his -illion series. Here are some examples:

millillion = 10^3003 = (1000) = ((0))
micrillion = 10^3,000,003 = (1,000,000) = ((1))
nanillion = 10^3,000,000,003 = (1,000,000,000) = ((2))
picillion = 10^3,000,000,000,003 = (1,000,000,000,000) = ((3))
femtillion = 10^(3*10^15+3) = ((4))
attillion = 10^(3*10^18+3) = ((5))
zeptillion = 10^(3*10^21+3) = ((6))
yoctillion = 10^(3*10^24+3) = ((7))
...
Icosillion = 10^(3*10^60+3) = ((19))
Triacontillion = 10^(3*10^90+3) = ((29))
Tetracontillion = 10^(3*10^120+3) = ((39))
Pentacontillion = 10^(3*10^150+3) = ((49))
Hexacontillion = 10^(3*10^180+3) = ((59))
Heptacontillion = 10^(3*10^210+3) = ((69))
Octacontillion = 10^(3*10^240+3) = ((79))
Ennacontillion = 10^(3*10^270+3) = ((89))
Hectillion = 10^(3*10^300+3) = ((99))
Killillion = 10^(3*10^3000+3) = ((999))
Megillion = 10^(3*10^3,000,000+3) = ((999,999)) = (((1)-1))
Gigillion = 10^(3*10^3,000,000,000+3) = (((2)-1))
Terillion = 10^(3*10^3,000,000,000,000+3) = (((3)-1))
Petillion = 10^(3*10^(3*10^15)+3) = (((4)-1))
Exillion = 10^(3*10^(3*10^18)+3) = (((5)-1))
Zettillion = 10^(3*10^(3*10^21)+3) = (((6)-1))
Yottillion = 10^(3*10^(3*10^24)+3) = (((7)-1))
...
Hotillion = 10^(3*10^(3*10^300)+3) = (((99)-1))
...
Kalillion = 10^(3*10^(3*10^3000)+3) = (((999)-1))
...
Mejillion = 10^(3*10^(3*10^3,000,000)+3) = (((999,999)-1)) = ((((1)-1)-1))
...
Gijillion = 10^(3*10^(3*10^3,000,000,000)+3) = ((((2)-1)-1))
Astillion = 10^(3*10^(3*10^3,000,000,000,000)+3) = ((((3)-1)-1))
Lunillion = 10^(3*10^(3*10^(3*10^15))+3) = ((((4)-1)-1))
...
Multillion = 10^(3*10^(3*10^(3*10^42))+3) = ((((13)-1)-1))

As you can see the nested SN is alot more clunky than the EDN. Of coarse EDN was especially developed to handle -illion numbers so naturally its better suited to them.

You can also see that it doesn't take much effort with EDN to come up with tremendous sized numbers. For example ((100)) is already larger than a googolplex, being equal to the centillionth -illion. ((((100)))) is larger than a multillion. EDN can also be continually enhanced by adding new rules to the notation. For example:

Let (n,m) = ((..((n))..)) where there are "m" nested parathesis.

So ((((100)))) = (100,4)

Now consider this progression.

(0,1) = (0) = 1000
(0,2) = ((0)) = (1000) = millillion
(0,3) = (((0))) = ((1000)) = (millillion) ~ killillion
(0,4) = ((((0)))) = (((1000))) = ((millillion)) ~ (killillion) ~ kalillion
(0,5) = (((((0))))) = ((((1000)))) = (((millillion))) ~ ((killillion)) ~ (kalillillion) > Multillion

(0,100) is then well beyond Bowers -illions. It is close to a giggol or 10^^100. We can go further. We can now have any large number n, or EDN within the second entry to produce even larger numbers. We could have (0,(0,100)) which would be approximately 10^^10^^100 or a giggolplex. Next we could have (0,(0,(0,100))) which is approximately 10^^10^^10^^100 or a giggolduplex. So whats next?

Notice that we are again nesting EDN. We can therefore create a third entry to cover this second level of nesting. We define it as follows:

(a,b,1) = (a,b)
(a,b,c) = (a,(a,b,c-1))

so (0,100,3) = (0,(0,100,2)) = (0,(0,(0,100,1))) = (0,(0,(0,100)))

Now we develop a simple set of rules that will enable us to have any number of entries in EDN. Let there be a series of "arguments" (entries) labeled a(1), a(2), a(3), ... , all the way to a(n). We now make the following definitions:

1. if n = 1 then ( a(1) ) = 10^(3*a(1)+3) ... otherwise
2. if a(n) = 1 then ( a(1),a(2),a(3), ... , a(n-1), 1 ) = ( a(1),a(2),a(3), ... , a(n-1) ) ... otherwise
3. if n = 2 then ( a(1) , a(2) ) = ( ( a(1) , a(2) - 1 ) ) ... if none of that applies then...
4. ( a(1),a(2),...,a(n-2) , a(n-1), a(n) ) = ( a(1) , a(2), ... , a(n-2) , ( a(1),a(2),...a(n-2),a(n-1),a(n)-1))

If that seems a bit too technical allow me to explain. Basically if it has 1 or 2 entries we already know what to do. If it ends in a 1 and has more than a single entry we can just drop the one (see rule 2). If it has more than 2 entries and does not end in a 1 then we simply drop the last entry and replace the second to last entry with the original expression with its last argument decreased by 1. Hopefully some examples will make it more transparant.

(0,10,10,3) = (0,10, (0,10,10,2) ) = (0, 10 , ( 0 , 10 , ( 0 , 10 , 10 ) ) )

(1,2,3,4,2) = ( 1 , 2, 3, (1,2,3,4))

(0,10,10,10,10,10,3) = (0,10,10,10,10,(0,10,10,10,10,(0,10,10,10,10,10)))

Now imagine the size of (10,10,10,10,10,10,10,10,10,10). Interestingly, it turns out that EDN is about as capable as Knuth arrows at expressing large numbers. Every time we add an argument we are actually going up by another operation level. That's equivalent to adding another Knuth arrow.

Roman numerals can only handle numbers in the thousands. DN can handle exponential class numbers with some difficultly, and SN can handle exponential numbers with ease. But EDN trumps all these by being able to cope with numbers in the Knuth arrow range. That's a rather massive enhancement from DN. More importantly we can also further enhance the notation by adding new symbols and rules. The only catch is that the further we go the more complex and difficult it becomes.

So that's basically the system I've devised. It has a few uses for dealing with large numbers. It provides a ready made system for expressing -illions and it can express extremely large numbers.

Anyway, I may be making more posts on this blog about large numbers, notations, and all things related. 'til then...

-- Sincerely, Sbiis Saibian

No comments:

Post a Comment