Calculator Magic #7 Extra Decimals for Square Roots |

Ten Digits for the Price of Seven

Prerequisite:
Introduction to Programming a Four-Function Calculator

Suggested Advance Reading:
Ted's Continued Fraction for Square Root

That page details an iterative manual method for extracting square
roots using Ted's Continued Fraction; so I won't elaborate
here, except to reiterate that this method permits one to resolve just
part of the ~~root —~~ ideally, only the decimal portion:

Let's investigate the `square root of 19,
with an estimate of 4`. The CF looks like this:

This is quickly resolved on the calculator, using our 'bottom-up' approach:

3 ÷ 8

+ 8 ÷ 3 ÷ = add 8, divide into 3

+ 8 ÷ 3 ÷ =
Casio: `[+ 8 ÷ ÷ 3 =]`

Two more iterations beget an accurate decimal portion of the
root: *{.358899}*. Of course, you could simply have
used the *[sqrt]* key in the first ~~place —~~ and you
might as well here, because we are interested in greater things.

`19 [sqrt] =` *{4.3588989}*

Now we add as many pairs of zeros to 19 as we can, to a limit of 8 digits:
*19000000*. Each pair of zeros increases the square
root of the number by a factor of 10: `sqrt(19000000) =
sqrt(19) × 10 ^{3}= 4358.8989...`

Observe that *4358* conveniently represents the greatest
integer which perfect square is less than *19000000*, making
it ideal for use in the next continued fraction. Let us calculate
`sqrt(19000000) with an estimate of 4358`.
This is the CF:

Fortunately, we don't have to remember all those numbers. The numerator of the fraction can be handled automatically:

19000000 M+

4358 ×(×) = M- (n-e^{2}) now in memory

2 = denominator in display

÷ MR ÷ =
Casio: `[÷ ÷ MR =]`

+ 8716 ÷ MR ÷ =
Casio: `[+ 8716 ÷ ÷ MR =]`

+ 8716 ÷ MR ÷ = *{.8989435}*

Three iterations are all it took, despite the size of CF.
Add that value to *4358* and move the decimal back where it
started, leaving *4.3588989435*, accurate to 9 decimal
places! Being able to move three digits to the left of the
decimal point freed up space to calculate three more.

Let's try another one: `sqrt(1234) = 35.128336`

This one can be increased only by a factor of *10 ^{4}*,
to

12340000 M+

3512 ×(×) = M-

2 =

÷ MR ÷ =
or `[÷ ÷ MR =]`

+ 7024 ÷ MR ÷ =
or `[+ 7024 ÷ ÷ MR =]`

+ 7024 ÷ MR ÷ = *{.833614}*

This one required only two iterations, plus one for verification.
Add this to the estimate, move the decimal back, and we have the root:
*35.128336140*

HANDLING VALUES LESS THAN 1

Ted's Continued Fraction works only when *n*
is greater than 1. If the number is less than that, it can be
expanded by factors of 100 until it __is__ greater ~~than 1.~~
It makes no difference where the decimal point was located originally;
the digits work the same. Any *n* that can be typed into
the display can be processed.

For any calculator with a typical 8-digit display, the accuracy of this method is constant at ten significant digits, irrespective of the size of the number. Eleven digits are calculated; but the last one cannot be trusted.

One nifty feature of processing these types of iterative series is that it doesn't even matter whether a mistake is made along the way! Any error in calculation is absorbed by subsequent iterations, although one or more additional loops would then be required in order to achieve a specified accuracy.