The latest American Scientist has a nice article about computer arithmetic: http://www.americanscientist.org/issues/id.7300,y.2009,no.5,content.true,pag... One scheme that was new to me was level index arithmetic, in which numbers are written as ± e↑e↑ … ↑e↑m where m is in [0,1). I've sometimes thought about a similar arrangement, which we might call signed level index (SLI), in which numbers are written as ± 2 ↑ ± 2 ↑ ± 2 ↑ ± 2 ↑ ... and the signs are what you store. For example, infinity = +2 ↑ +2 ↑ +2 ↑ +2 ↑ ... which I'll abbreviate as + + + + + + ... . We then have - infinity = - + + + + + + ..., 0 = +2 ^(-infinity) = + - + + + + + + ... and also -2 ^(-infinity) = - - + + + + + + ..., 1 = +2 ^ 0 = + + - + + + + + ..., etc. Because of these examples, when using a finite number of bits to store a SLI, I recommend treating all trailing signs as pluses -- for example, interpret the eight signs + - + - + - + - as the infinite sequence + - + - + - + - + + + + + + ... = 2 ^ -2 ^ 2 ^ -2 ^ 2 ^ -1 which is approximately 0.406963. Converting a number to SLI is easy: just write down it's sign, then take it's log base 2, then repeat. It is also trivial to negate a SLI, or take it's log base 2, or compute 2^x. There is also a simple recursive algorithm for comparing two SLIs: + x > - y unless x = y = 0 (but ignore the exception if you want signed 0s), + x > +y iff x > y, and - x > - y iff y > x where I'm using "+ x" as a pattern match for the SLI that starts with a + and has x as its subsequent signs. Finally, if there was a good algorithm for SLI addition, there would be a good algorithm for SLI multiplication, too, since (±2^x) * (±2^y) = ± 2 ^ (x+y) . Sadly, I don't know of any good algorithms for SLI addition. Do you? -Thomas C