There's a simple trick for checking arithmetic, called "casting out nines", which leads to some interesting and deep ideas. To cast out nines, take a number and add its digits: for instance, 1999 becomes 1+9+9+9 = 28. Do it again until you get down to a single digit: thus 28 becomes 2+8 = 10 which turns into 1+0 = 1. At any point along the way you can save time by omitting (casting out) any 9's that appear (so 1999 instantly yields 1 via that shortcut).

An addition or multiplication problem can quickly be checked by casting out nines from the inputs and the answer: if the calculation was done right, then the single-digit version with nines taken out will also work. Thus, is 12345*67890 = 837102050 correct? Well, it transforms into 6*3 = 8, but we know 6*3 = 18 and 18 turns into 9 (or equivalently, 0), not 8. So there's something wrong with the original answer *(maybe we forgot to carry properly?)*. To check subtractions and divisions, turn them into the associated additions and multiplications.

Casting out nines works because the process in base ten (decimal system) gives the remainder left over when a number is divided by nine --- and we can deal with the remainders to verify the full computation. It's just like knowing that the sum of two even numbers, or two odd numbers, had better come out even.

The deep idea behind casting out nines is ** projection**: shining a light on something and studying the shadow. Howsoever an object moves, its shadow must follow --- and if we know the laws governing the shadow world, we can check the situation there and detect illegal activity going on in the real universe. If the shadow world is simple (say, single-digit arithmetic versus hairy multiple-precision math) then working there can be quick and efficient. We may not catch all mistakes --- two objects might cast the same shadow --- but by making projections into different subspaces we can improve the odds, maybe even to the point of certainty. Projection is a powerful kludge, with lots of applications in unexpected places.

Thursday, January 06, 2000 at 05:48:24 (EST) = Datetag20000106

*(correlates: WrongAgain, SingularPoints, LearningFromAdversity, ...)*