# ABC - Computer Examples

 The purpose of this page is to show that solving simple integer simultaneous equations, with out scaling, using the Atanosoff algorithm, can give both exact and erroneous answers. Also that scaling the example with erroneous answers can give almost correct answers within 0.001 percent - depending on scaling.

I attribute the errors to using integer arithmetic.
(High precision floating point arithmetic can yield more precise answers,

- but can still yield some "fuzz" due to some non-exact representations,

such as one divided by three.
Sophisticated software packages such as
"MATHEMATICA"
fight this problem using other techniques
- such as retaining the fraction (1/3) rather than decimal approximation 0.3333333...)

 Executive Summary: Be careful of integer examples, you may get a rude surprise. In general, scale (multiply) the numbers so that the high order digits are about 10^10 for maximum resistance to underflow and overflow errors.

The following pair illustrates the problem of underflow - depending on which way the problem is solved -

- the left, organized one way, gives the correct integer answer
- the right, organized the other (or place the pivot in the other variable) does not give the correct integer answer.
 The following example is from the ABC movie The ABC in Operation showing a non-scaled example that works under the ABC rules of operation. ```simultaneous equations 2x + 4y - 8 = 0 x - 3y + 11 = 0 with solutions x = -2, y = 3 scaled by multiplying by 1 and running a simulation yields the following trace ------------------------------------------- Event # 0 Pivot = Last Op = Load Drm KA 2 4 -8 CA 1 -3 11 Event # 1 Pivot = Last Op = Sub KA 2 4 -8 CA -1 -7 19 Event # 2 Pivot = Last Op = SHR 1 KA 1 2 -4 CA -1 -7 19 Event # 3 Pivot = Last Op = Add KA 1 2 -4 CA 0 -5 15 EXIT , CA(pivot) = zero -------------------------------------------- the above has eliminated the "x" variable yielding y = 3 back solve into the above x - 3y + 11 = 0 yields x - 3(3) + 11 = 0 or x = -2 the correct answer ``` The following example is from the ABC movie The ABC in Operation showing a non-scaled example that works under the ABC rules of operation. ```simultaneous equations 4y + 2x - 8 = 0 -3y + x + 11 = 0 with solutions x = -2, y = 3 Note: the x and y columns are reversed, should make no difference in the result !!! scaled by multiplying by 1 and running a simulation yields the following trace ------------------------------------------ Event # 0 Pivot = Last Op = Load Drm KA 4 2 -8 CA -3 1 11 Event # 1 Pivot = Last Op = Add KA 4 2 -8 CA 1 3 3 Event # 2 Pivot = Last Op = SHR 1 KA 2 1 -4 CA 1 3 3 Event # 3 Pivot = Last Op = Sub KA 2 1 -4 CA -1 2 7 Event # 4 Pivot = Last Op = SHR 1 KA 1 0 -2 CA -1 2 7 Event # 5 Pivot = Last Op = Add KA 1 0 -2 CA 0 2 5 EXIT , CA(pivot) = zero ------------------------------------------ the above has eliminated the "y" variable yielding 2x = -5 or x = -2.5 back solve into the above x - 3y + 11 = 0 yields -2.5x - 3y + 11 = 0 or y = 3.1666... NOT the correct answer ```
```
Now - lets take the re-ordered equations,
and scale by multiplying by 10,000
```
 The following example is from the ABC movie The ABC in Operation showing a non-scaled example that works under the ABC rules of operation. ```simultaneous equations 4y + 2x - 8 = 0 -3y + x + 11 = 0 with solutions x = -2, y = 3 Note: the x and y columns are reversed, should make no difference in the result !!! scaled by multiplying by 10,000 and running a simulation yields the following trace ---------------------------------------------- KA 40000 20000 -80000 CA -30000 10000 110000 Event # 1 Pivot = Last Op = Add KA 40000 20000 -80000 CA 10000 30000 30000 Event # 2 Pivot = Last Op = SHR 1 KA 20000 10000 -40000 CA 10000 30000 30000 Event # 3 Pivot = Last Op = Sub KA 20000 10000 -40000 CA -10000 20000 70000 Event # 4 Pivot = Last Op = SHR 1 KA 10000 5000 -20000 CA -10000 20000 70000 Event # 5 Pivot = Last Op = Add KA 10000 5000 -20000 CA 0 25000 50000 EXIT , CA(pivot) = zero -------------------------------------------------------- the above has eliminated the "y" variable yielding 25000x = -50000 or x = -2 back solve into the above x - 3y + 11 = 0 yields -2 - 3y + 11 = 0 or y = 3 THE correct answer ```

Are you confused yet?? - - - Ah good - me too - misery loves company !!!

Now here is another integer equation, that gives incorrect results,
that when scaled, gives "good enough" results
- "good enough for government work" ;-))

 ``` The following example gives incorrect answers, under the ABC rules of operation, unless scaled as in the example to the right. simultaneous equations 6x + 2y - 16 = 0 5x + 2y - 11 = 0 with solutions x = 3, y = -2 scaled by multiplying by 1 and running a simulation yields the following trace ------------------------------------------ Event # 0 Pivot = Last Op = Load Drm KA 6 1 -16 CA 5 2 -11 Event # 1 Pivot = Last Op = Sub KA 6 1 -16 CA -1 1 5 Event # 2 Pivot = Last Op = SHR 1 KA 3 0 -8 CA -1 1 5 Event # 3 Pivot = Last Op = Add KA 3 0 -8 CA 2 1 -3 Event # 4 Pivot = Last Op = SHR 1 KA 1 0 -4 CA 2 1 -3 Event # 5 Pivot = Last Op = Sub KA 1 0 -4 CA 1 1 1 Event # 6 Pivot = Last Op = Sub KA 1 0 -4 CA 0 1 5 EXIT , CA(pivot) = zero --------------------------------------------- the above has eliminated the "x" variable yielding y = - 5 back solve into the above 5x + 2y - 11 = 0 yields 5x + 2(-5) - 11 = 0 or 5x = 21 or x = 4.2 rather than the correct (above) x = 3, y = -2 ``` ``` simultaneous equations 6x + 2y - 16 = 0 5x + 2y - 11 = 0 with solutions x = 3, y = -2 scaled by multiplying by 10,000 and running a simulation yields the following trace ------------------------------------------ Event # 0 Pivot = Last Op = Load Drm KA 60000 10000 -160000 CA 50000 20000 -110000 Event # 1 Pivot = Last Op = Sub KA 60000 10000 -160000 CA -10000 10000 50000 Event # 2 Pivot = Last Op = SHR 1 KA 30000 5000 -80000 CA -10000 10000 50000 Event # 3 Pivot = Last Op = Add KA 30000 5000 -80000 CA 20000 15000 -30000 Event # 4 Pivot = Last Op = SHR 1 KA 15000 2500 -40000 CA 20000 15000 -30000 ... ... ... Event # 42 Pivot = Last Op = Sub KA 3 0 -10 CA 0 11666 23340 EXIT , CA(pivot) = zero ------------------------------------------ the above has eliminated the "x" variable leaving 11666y = - 23340 or y = - 2.000685753.... back solve into the above 5x + 2y - 11 = 0 yields 5x + 2(- 2.000685753) - 11 = 0 or 5x = 15.001371506 or x = 3.0002743012 rather than the exactly correct (above) x = 3, y = -2 ```

If you have comments or suggestions, Send e-mail to Ed Thelen